Интеграция в 3D движок ?

Обсуждение программы Magic Particles.

Интеграция в 3D движок ?

Сообщение Kabak » Пт ноя 11, 2016 11:39 am

1) Каким образом работает Magic Particles, с точки зрения интеграции в 3D сцену, и расчётом взаимодействия частиц Magic Particles с 3D объектами на сцене в NVidia PhysX ? Возможно ли это в принципе ?

2) Как происходит отрисовка частиц с учётом интеграции в 3D сцену и взаимодействие частиц с другими объектами в сцене ?
Kabak
 
Сообщения: 3
Зарегистрирован: Пт ноя 04, 2016 8:45 pm

Re: Интеграция в 3D движок ?

Сообщение Odin_KG » Пт ноя 11, 2016 2:34 pm

1) Каким образом работает Magic Particles, с точки зрения интеграции в 3D сцену, и расчётом взаимодействия частиц Magic Particles с 3D объектами на сцене в NVidia PhysX ? Возможно ли это в принципе ?

Практически, если используется физический движок, это означает, что объекты сцены самостоятельно не перемещаются (собственный алгоритм перемещения отсутствует), а их положение определяется исключительно воздействием этого физ. движка. В случае же с частицами обычно существует постоянное движение, которое выполняется алгоритмом управления частицами, т.е. возникает конфликт между алгоритмом движения частицы и физ. движком. Вообще сейчас внутри Magic Particles существует собственная физика, которой, на мой взгляд, вполне достаточно, чтобы реализовывать "не сильно замороченные" идеи. По крайней мере, поставить простое препятствие и поймать момент столкновения с этим препятствием можно и без всяких PhysX при помощи API Magic Particles - в редакторе можно добавлять препятствия прямо на сцену и настраивать реакцию на столкновение. Также в составе API есть магнитизм (притягивание/отталкивание частиц к форме другого эмиттера) и ветер (внешняя сила, которая "сдувает частицы" в указанном направлении). В составе программы есть пример physics.ptc, который как раз показывает некоторые возможности встроенной физики.
Что касаемо использования внешнего движка, то в API я такую возможность заложил, но на практике сомневаюсь в рациональности такого подхода.
1) API позволяет получать отрезок пути , на который сдвигается частица в момент очередного Update(). Для получения этой информации нужно подключить событие MAGIC_EVENT_EXISTENCE. Зная начало и конец пути можно проверить на столкновение с собственным препятствием через собственную физику.
2) Пользователь может отсоединить частицу от эмиттера через Magic_ParticleDetaching() или автоматически настроить отсоединение в момент удара о препятствие. После отсоединения эмиттер вообще перестанет перемещать частицу куда-либо, хотя она будет продолжать считаться частью эмиттера. В этом случае пропадает конфликт между физ. движком и эмиттером, описанный мною в начале. И тут пользователь может устанавливать для частицы любые координаты, которые может выдавать физ. движок.

Т.е. использование внешнего физ. движка возможно, но я не уверен, что это хорошая мысль.

2) Как происходит отрисовка частиц с учётом интеграции в 3D сцену и взаимодействие частиц с другими объектами в сцене ?

Как я уже сказал, в редакторе есть встроенные возможности по работе с внутренней физикой Magic Particles. Можно посмотреть мой старый видеоурок, который как раз на эту тему: http://astralax.ru/articles/events (в новой версии есть некоторые улучшения, но суть не изменилась).
Т.е. Magic Particles может взаимодействовать только с собственными объектами, что, разумеется, очень логично. Пользователь может создавать собственные простые препятствия в редакторе, либо формировать более сложные препятствия с помощью API. Естественно, надо помнить, что чем сложнее препятствие, тем больше сил потребуется у компьютера на его обработку. API позволяет оптимизировать сложные препятствия, разбивая их по принципу "дерева" на части - далее определяется часть, в которую попадает частица, и проверяются только детали препятствия, попадающие в эту же часть.
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 841
Зарегистрирован: Чт янв 15, 2009 2:57 pm

Re: Интеграция в 3D движок ?

Сообщение Kabak » Пт ноя 11, 2016 5:53 pm

Практически, если используется физический движок, это означает, что объекты сцены самостоятельно не перемещаются (собственный алгоритм перемещения отсутствует), а их положение определяется исключительно воздействием этого физ. движка. В случае же с частицами обычно существует постоянное движение, которое выполняется алгоритмом управления частицами, т.е. возникает конфликт между алгоритмом движения частицы и физ. движком.

Могу ли я вносить изменения в поведение частиц на лету - динамическая сцена, придавая частицам некую стороннюю силу, но при этом оставляя частицу в системе, чтобы система могла ликвидировать эту частицу, или проделать ещё что-нибудь с этой частицей когда придёт время ? Мне нужна полная интеграция в мою 3D сцену. Чтобы я мог хотя бы иллюзиями взаимодействия с системой частиц Magic Particle добавлять реализма в 3D сцену созданную в приложении.

Мне необходимо, чтобы частицы создаваемые Magic Particle в 3D сцене взаимодействовали, например, с проходящим через эту систему частиц объектом.

1) Например, прилипали к поверхности объекта по периметру, или увлекались за объектом и создавали эффект реальных событий. Например, горит костёр с дымом. Через дым прыгает персонаж и дым как бы увлекается за персонажем как в реальной жизни. Возможно ли организовать такое с помощью Magic Particles ?

2) Или, возможно, но через иллюзию - включаем ветер в нужном направлении, при определённых событиях в игре, и частицы частично полетели за прыгающим персонажем. Так возможно ?

3) Например: Горит фейерверк и в моей сцене на объектах появляется свечение не только от этого подвижного фейерверка, но и частички, которые падают на пол, в моей сцене, взаимодействуют с полом : отскакивают от него и освещают близкие участки пола свечением частиц соответствующим цветом. Если я подношу что-нибудь к потоку светящихся частиц, то на этом объекте тоже возникает свечение от попадающих в объект частиц, так же частицы должны отскакивать в соответствии с физикой. Возможно ли это с Magic Particles при интеграции в 3D сцену ? Или Magic Particles, всё-таки, больше для эффектов на расстоянии, и не очень пригодна для реального взаимодействия 3D объектов из сцены игры с системами частиц созданными Magic Particles ?
Kabak
 
Сообщения: 3
Зарегистрирован: Пт ноя 04, 2016 8:45 pm

Re: Интеграция в 3D движок ?

Сообщение Odin_KG » Пт ноя 11, 2016 9:29 pm

Могу ли я вносить изменения в поведение частиц на лету - динамическая сцена, придавая частицам некую стороннюю силу, но при этом оставляя частицу в системе, чтобы система могла ликвидировать эту частицу, или проделать ещё что-нибудь с этой частицей когда придёт время ?

Есть возможность устанавливать координаты частиц ручками через Magic_ParticleSetPosition(), однако вам нужно будет как-то отличать "нужные" частицы, если, конечно, не двигать все частицы сразу. Вообще посмотрите в справке API.chm раздел "Частицы", там как раз подобная экзотика собрана.

1) Например, прилипали к поверхности объекта по периметру

"Прилипание" - это просто отсоединение частицы от эмиттера, после чего частица остается на месте. Это можно сделать в момент, когда частица стукнется о препятствие или когда достигнет магнита. Этот пример есть в physics.ptc.

или увлекались за объектом и создавали эффект реальных событий.

"Увлекалась за объектом" - это просто магнит, который перемещается. Двигайте магнит вместе со своим объектом и частицы будут следовать за объектом.

Например, горит костёр с дымом. Через дым прыгает персонаж и дым как бы увлекается за персонажем как в реальной жизни. Возможно ли организовать такое с помощью Magic Particles ?

Ну, все механизмы для этого есть, другое дело, сможете ли вы этим воспользоваться. В нужный момент цепляем на персонаж магнит, а на частицы ставим действие типа "Магнетизм" и указываем прицепленный магнит в качестве целевого. У магнита задаем максимальный радиус действия силы магнетизма, чтобы он притягивал не весь костер, а только ближайшие частицы. После того, как частицы "потянулись" за магнитом весь этот процесс нужно отключить, чтобы частицы не продолжали "преследовать" персонаж за пределами костра. Как-то так, короче.

2) Или, возможно, но через иллюзию - включаем ветер в нужном направлении, при определённых событиях в игре, и частицы частично полетели за прыгающим персонажем. Так возможно ?

Да, возможно, только нужно будет в костре создать в небольшом количестве те частицы, которые будут следовать за персонажем и именно на эти частицы воздействовать ветром, иначе у вас дёрнется весь костёр, что, наверное, не очень правильно.

но и частички, которые падают на пол, в моей сцене, взаимодействуют с полом : отскакивают от него и освещают близкие участки пола свечением частиц соответствующим цветом.

отскочить от пола частица сможет, но частица не является источником освещения и что-то освещать вы уже должны самостоятельно, используя координаты частиц как координаты источника света.

Возможно ли это с Magic Particles при интеграции в 3D сцену ? Или Magic Particles, всё-таки, больше для эффектов на расстоянии, и не очень пригодна для реального взаимодействия 3D объектов из сцены игры с системами частиц созданными Magic Particles ?

На мой взгляд, там возможностей вполне достаточно. Я вообще не помню, например, чтобы где-то магниты были в таком виде, как у меня (в том же UDK такого нет). Т.е. непонятно, что ещё нужно-то ? Реализма никакого в играх не существует (только очень упрощенная имитация), например, если какой-то симпатичный объект должен сталкиваться с другим симпатичным объектом, то делают очень упрощенные варианты этих моделей, которые и участвуют в реальной проверке на столкновение, а визуально на экране объект может быть очень навороченным, но проверяются всегда плохенькие копии.
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 841
Зарегистрирован: Чт янв 15, 2009 2:57 pm

Re: Интеграция в 3D движок ?

Сообщение Kabak » Пт ноя 11, 2016 10:43 pm

Благодарю, за развёрнутые ответы. Пойду экспериментировать.
Kabak
 
Сообщения: 3
Зарегистрирован: Пт ноя 04, 2016 8:45 pm

Re: Интеграция в 3D движок ?

Сообщение Odin_KG » Пт ноя 11, 2016 10:57 pm

Пожалуйста :)
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 841
Зарегистрирован: Чт янв 15, 2009 2:57 pm


Вернуться в Magic Particles

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron