 |
Шаг 6: Теперь выделяем второй нод PMotionInheritance, который соединен с группой Tornado 2. Изменяем значение параметра Inheritance на 90%, Type на Cylinder, Radius на 300, Cylinder Axis на Y, Cylinder Height на 500.
|
 |
Для Distance Gradient меняем левый узел на светло серый (R = 185, G = 185, B = 185). А правый на темно серый (R = 70, G = 70, B = 70).
|
 |
Cylinder Gradientделаем чем-то похожим на Cylinder Gradient в настройках предыдущего нода PMotionInheritance. Только смещаем расположение узлов вправо и серый цвет делаем немного другим (R = 80, G = 80, and B = 80). Оставляем Scale Gradient как есть.
На заметку: вам не обязательно использовать точно такие же настройки градиента как в уроке, экспериментируйте со своими настройками.
|
 |
Шаг 7: Досягнув земли торнадо подымает вверх пыль, дальше мы будем симулировать этот эффект. Создаем объект Plane, который будет у нас имитировать землю (Objects=>Primitive=>Plane).
|
 |
В настройках объекта Plane устанавливаем следующие значения : Width = 2500, Height = 2500. Переименовываем объект Plane в Floor.
|
 |
Создаем нод PPass (Thinking Particles=>TP Initiator=>PPass) и перетягиваем на него группу Tornado Group. Нам также понадобится нод PGetData. Создаем его (Thinking Particles=>TP Helper=>PGetData). Соединяем выход Particle нода PPass со входом Particle нода PGetData.
|
 |
Создадим несколько нодов, которые нам понадобятся в дальнейшем: Vector2Reals (Xpresso=>Adapter=>Vector2Reals), Compare (Xpresso=>Logic=>Compare), PDie (Thinking Particles=>TP Standard=>PDie),PStorm (Thinking Particles=>TP Generator=>PStorm), а также перетянем объект Floor, для создания его нода.
|
 |
Нод PGetData берет всю информацию группы частиц, которая ему присвоена. Для данного выражения нам понадобится только информация о позиции частиц, соответственно создаем выход Position у нода PGetData. Соединяем выход Position с входом нода Vector2Reals.
|
 |
Теперь мы должны сравнить позицию частиц по оси Y с позицией по оси Y объекта Floor. Создаем выход Position. Y для нода Floor. Соединяем выход Position. Y с входом Input 2 нода Compare, а выход Y нода Vector2Reals с входом Input 1 нода Compare .
|
 |
Выбираем нод Compare и в его настройках изменяем параметр Function на <= (меньше либо равно). Теперь если позиция частиц по оси Y будет меньше либо равна позиции объекта Floor по оси Y, нод Compare на выходе будет давать значение True.
|
 |
Мы хотим, чтобы, когда частицы торнадо коснуться пола - они исчезали, а вместо них образовывались новые - имитирующие пыль. Создаем вход On для нодов PDie и PStorm. Соединяем выход Output нода Compare с обоими входами On.
|
 |
Для того чтобы убить частицы торнадо группа частиц должна быть присвоена ноду PDie, дабы тот знал какие частицы убивать. Соединяем выход Particle нода Tornado Group PPass с входом Particle нода PDie. Также соединяем выход Position нода PGetData со входом Emitter Position нода PStorm.
|
 |
Шаг 8: Выбираем нод PStorm и вводим значения для следующих параметров: Birth Type = Shot, Shot = 10, Life = 20 F, Life Variation = 50%, Speed = 250, Speed Variation = 90%, X FOV = 180, Y FOV = 180.
|
 |
Последний PStorm не имеет никакой привязки, для этого создадим объект Null Object и переименуем его в Alignment. Выделяем и перетаскиваем объект Alignment в поле редактора XPresso, что позволяет создать нод объекта Alignment. Создаем выход Global Matrix для только что созданного нода.
|
 |
Теперь создаем выход Emitter Alignment для нода PStorm. Соединяем выход Global Matrix нода Alignment со входом Emitter Alignment нода PStorm. Выделяем объект Alignment И поворачиваем его на 90 градусов по оси P.
|
 |
Шаг 9: Присваиваем частицам группу. В Thinking Particles Settings dialog добавляем новую группу. Переименовываем ее в Dirt и кликнув правой кнопкой мыши вызываем меню, где выбираем пункт Settings. Меняем цвет частиц на коричневый.
|
 |
Создаем нод PGroup (Thinking Particles=>TP Standard=>PGroup) и активируем выход Particle Birth для нода PStorm. Соединяем выход Particle Birth со входом Particle нода PGroup.
|
 |
Перетягиваем группу Dirt на нод PGroup.
|
 |
Шаг 10: Все что нам осталось сделать - это создать объект за которым будут следовать частицы. Создаем Null Object и переименовываем его в Follow. Создаем нод объекта Follow, а также нод PPositionFollow (Thinking Particles=>TP Dynamic=>PPositionFollow).
|
 |
Выделяем нод PPositionFollow и меняем параметр Type = Spring и параметр Spring Speed = 10%. Активируем вход Follow Position.
|
 |
Для нода Follow создаем выход Global Position. Соединяем выход Global Position со входом Follow Position нода PPositionFollow. Также соединяем выход Particle нода Tornado Group PPass со входом Particle нода PPositionFollow.
|
Теперь, если мы будем двигать объект Follow в плоскости XZ , хвост торнадо будет следовать за ним. В файле проекта, который вы себе скачали, имеется еще один XPresso тэг у объекта Follow. Он содержит выражение, которое перемещает объекты Emitters и Motion вслед за объектом Follow в пределах +/- 500 юнитов в плоскости XZ.
|