Guest3d.wohlnet.ru некоммерческий проект, цель которого объединить профессионалов для обмена опытом и знаниями в области real-time рендеринга |
Опубликовано ovod в 08.07.2008 в 15:09.
Многие спецэффекты в кино и играх, такие, как огонь, дым, взрывы и все типы магических эффектов в своей общности имеют важную связь: все они созданы с помощью так называемых 'систем частиц' (‘particle systems’).
Система частиц - это коллекция объектов, испускаемых излучателем (emitter) и обычно перемещающихся и изменяющихся во времени. Частицы - это квадратные объекты, расположенные лицом к камере.
Движение (Motion)
Позиция, ориентация и масштаб хранятся для каждой частицы системы. Вдобавок, могут быть задействованы другие атрибуты, такие, как скорость, цвет и прозрачность. Силы, такие, как гравитация, могут быть применены ко всем частицам системы.
Излучатели (Emitters)
Частицы распространяются излучателем (emitter). В Quest3D, это форма канала 3D Object Data. Система частиц циклично проходит сквозь все вершины объекта и постоянно излучает частицуы из одной из этих позиций. Хаотично распологая ряд вершин в 3D пространстве, это также приведет к хаотичному излучению частиц. Это производит убедительные результаты для спецэффектов, таких как огонь и дым.
Свойства поверхности (Surface properties)
Внешний вид системы частиц определяется диффузной и альфа текстурами, используемыми квадратными объектами. Смотрите Раздел 2.4 для дополнительной информации о свойствах поверхностей и методах смешивания.
Типы
Quest3D укомплектован двумя системами частиц. Канал Particle Object представляет собой компактный вариант, и может быть использован для простых эффектов, таких, как пламя.
Продвинутая система частиц состоит из ряда каналов и может быть использована, например, для имитации дыма, находящегося в пределах коллизионного объекта.
Продвинутая система частиц предоставляет возможность большего контроля над атрибутами, такими, как скорость, вращение, размер и цвет. Графики Envelopes желаемых функций, могут быть подключены к каналу излучателя Particle Emitter. Значение продвинутой базы функций ‘Advanced Function Base’ Value используется как индекс для каждого из этих графиков Envelopes.
Канал Particle Flow Grid
Канал Particle Flow Grid может быть использован для управления потоком системы. Он разбивает коллизионный объект на несколько частей и просчитывает силы внутри каждой из них. Силы (forces) могут быть созданы коллизионным объектом, внешними объектами и самими частицами.
Коллизия частицы просчитывается, как коллизия точки. Поэтому, квадраты частиц могут пробиваться сквозь их объекты коллизии. Хорошей практикой является создание меньших версий настоящих объектов в качестве коллизионных. Также, как всегда, упрощенные коллизионные объекты приводят к повышению производительности.
Справочное Руководство
Различные каналы продвинутой системы частиц описаны в более подробных деталях в Справочном Руководстве Quest3D.
Урок
Этот урок предназначен только для пользователей Power и VR редакций.
Необходимая сцена Quest3D:
..\Tutorials\2.10 – Particle systems\Particle systems.cgr
Необходимые шаблоны:
Objects \ Particles \ Simple \ Small Fire
Power Edition \ Particle Simulation \ Smoke
Channel List - ParticleFlowGrid
Objects \ Collision \ Collision Object
Variables \ Value \ Value
Variables \ Vector \ Vector with Envelopes
Шаг за шагом:
- Откройте сцену ‘Particle systems.cgr’. Она содержит куполообразный объект окружения и невидимый, меньший коллизионный объект.
- Перетяните шаблон Small Fire в Граф Каналов и подключите его к каналу ‘Render Scene’. Обратите внимание, что эффект огня немедленно появился в обзорном окне Animation 3D View.
- Добавьте шаблон Smoke и подключите его к каналу ‘Render Scene’. Обратите внимание, что эффект дыма немедленно появился в обзорном окне Animation 3D View. Также обратите внимание, что частицы дыма свободно движутся через поверхности окружения.
- Измените значение Y вектора позиции (position vector) на ‘1.0’.
- Перетяните канал Particle Flow Grid в Граф Каналов и подключите канал ‘Particle Emitter’ к объекту ‘Smoke’.
- Добавьте канал Collision Object и подключите его к каналу ‘Particle Flow Grid’.
- Подключите канал ‘Interior Collision Object’ к каналу Collision Object.
- Дважды щелкните на канале ‘Particle Flow Grid’ для открытия окна его свойств. Впишите ‘10’ для ‘x’, ‘y’ и ‘z’ компонентов разрешения ‘Resolution’. Выберите опцию ‘Show Grid’ (показать решетку) и нажмите кнопку ‘Generate Grid’ (создать решетку). Обратите внимание, что решетка отображается в обзорном окне Animation 3D View (когда опция динамических объектов ‘Dynamic objects’ включена - on’). Нажмите ‘OK’ для подтверждения.
- Дважды щелкните по каналу ‘Particle Emitter’ для открытия окна его свойств. В закладке ‘Grid’, выберите опцию ‘Particles Are Affected By Grid’ (частицы подвержены влиянию решетки). Обратите внимание в обзорном виде Animation 3D View, что частицы подверглись влиянию решетки. Нажмите ‘OK’ для подтверждения.
- Перетяните канал Value в Граф Каналов и подключите его к потомственному входу ‘Advanced Function Base’ канала ‘Particle Emitter’. Переименуйте Value в ‘Advanced Function Base’.
- Добавьте шаблон Vector (использующий envelopes) и подключите к потомственному входу ‘Particle Color Function’ канала ‘Particle Emitter’. Переименуйте графики Envelopes в ‘Red’, ‘Green’ и ‘Blue’, соответственно.
- Создайте ярлык для канала ‘Advanced Function Base’ и подключите его к каждому из трех Envelopes, только что добавленных вами.
- Дважды щелкните на Envelope ‘Red’ для открытия окна настроек. Добавьте ключ в позиции (0, 0.5) и нажмите ‘OK’ для подтверждения.
- Дважды щелкните на Envelope ‘Green’ для открытия окна настроек. Добавьте ключ в позиции (0, 0.5) и нажмите ‘OK’ для подтверждения.
- Дважды щелкните на Envelope ‘Blue’ для открытия окна настроек. Добавьте ключ в позиции (0, 0.5). Также добавьте ключ в позиции (50, 0) и нажмите ‘OK’ для подтверждения. Обратите внимание, что частицы будут становиться синими в течение их индивидуального жизненного времени.
Законченная сцена:
..\Tutorials\2.10 – Particle systems\Particle systems – Complete.cgr