Часть 3: Генерация вторичных событий
Начните урок:
- Продолжайте предыдущий урок или откройте файл asteroid_impact_part3.max.
Создайте частицы, которые выстреливаются из ударной волны:
Чтобы создать новые частицы, которые начинают свое рождение, при вылете из идущей кромки ударной волны, Вы можете выполнить несколько различных действий. В этом случае, Вы уже рождаете частицы из частиц, поэтому, почему бы не разбить эти же частицы и сделать из них новые частицы? Для этого, Вы используете метод, такой же, как и в событии RocksShockwave.
1. Добавьте тест Split Amount на верх события ShockwaveTrails и оставьте его установки по умолчанию: Fraction of Particles > Ratio %=50.
Теперь каждая другая рожденная частица будет частицей следа, а остальные частицы будут этими же, более новыми частицами.
2. Создайте новое событие в Particle View, клонировав оператор Force в событии CreateAsteroids, в качестве образца (Instance). Чтобы сделать это, нажмите и держите клавишу SHIFT, а затем перетяните оператор Force из события CreateAsteroids на пустую область Event Display, ниже события ShockwaveTrails.
Появится диалог с запросом, как клонировать этот оператор. Выберите Instance и щелкните OK.
Новый оператор появится курсивом, указывая на то, что он сейчас был произведен как образец от другого оператора. Это - хороший способ многократно использовать операторы и применять к ним изменения.
3. Переименуйте новое событие на
ShockwaveBurning и измените в этом событии новый оператор Display на что-нибудь особенное, типа желтых линий.
Тип отображения Lines - особенно полезен для того, чтобы перемещать частицы, потому что, в отличие от других типов отображения, он показывает не только расстояние, но также и направление и скорость. Каждая линия указывает направление движения частицы, а длинна линии указывают ее относительную скорость.
Эти частицы будут выстреливаться далеко от поверхности планеты. Вы примените деформацию пространства Gravity в операторе Force, чтобы постепенно замедлить движение этих частиц и сделать так, чтобы они падали на поверхность, если время их существования окажется долгим.
В данный момент, кроме влияния гравитации на новые частицы в событии ShockwaveBurning, с ними ничего особенного не происходит. Вы заставите эти частицы двигаться вверх от поверхности с помощью другого оператора Speed By Surface. Но на этот раз, вместо того, чтобы обволакивать поверхность планеты, эти частицы будут выстреливаться далеко от поверхности.
4. На верх события ShockwaveBurning, добавьте оператор Speed By Surface. В его параметрах, оставьте значение по умолчанию Set Speed Once, и установите Speed к
5 и Variation к
1.
Это даст единственный толчок частицам, которые входят в это событие.
5. Для параметра Surface Geometry, назначьте объект
Planet, и и оставьте для параметра Direction значение по умолчанию Surface Normals.
Это вытолкнет частицы перпендикулярно к поверхности объекта. Когда Вы имеете очень неровную поверхность (не в этом случае), это может придать частицам несколько интересное движение.
Как и в предыдущем событии, Вам необходимо установить для этих частиц время их существования.
6. На низ события ShockwaveBurning, добавьте оператор Delete. Выберите By Particle Age и установите Life Span к
20, а Variation к
1.
Это заставит эти частицы быстро исчезнуть.
Последнее, что Вам необходимо сделать, чтобы закончить эту часть ударной волны в этом уроке, это связать новое событие.
7. (Дополнительный шаг), Если Вы до этого момента уже создали и разместили событие ShockwaveBurning далеко от события ShockwaveTrails, то возможно Вы захотите подвинуть его поближе, прежде чем перейти к следующему шагу.
8. Соедините выход теста Split Amount в событии ShockwaveTrails с новым событием ShockwaveBurning.
Если Вы сейчас запустите анимацию, у Вас должна получиться радиальная ударная волна, двигающаяся по направлению от эпицентра падения астероида и оставляющая следы частиц, запуская некоторые из них в атмосферу.
Создайте каменистые осколки:
Работа над ударной волной закончена и Вы можете возвратиться к каменистым осколкам, которые Вы оставили ранее. Помните, при создании ударной волны в событии RocksShockwave, Вы добавили оператор Split Amount, чтобы разбить частицы, рожденные в том событии. Двадцать процентов из них станут скалистыми осколками, которые будут взрываться и вылетать в атмосферу, в то время как остальные сформируют ударную волну. Вы не связали выход Split Amount в новом событии, так до этого момента, по существу в этом не было необходимости. Теперь пришло время создать событие, который определит каменистые осколки.
1. С левой стороны от события
RocksShockwave, создайте новое событие, копировав оператор Force от события CreateAsteroids, а затем вставив его, в качестве образца (Instance). Назовите новое событие
EmitFragments.
2. Измените тип конечного результата для оператора Display к оранжевым точкам (Dots).
3. Свяжите выход оператора Split Amount в событии RocksShockwave с входом нового события.
В этом месте, все еще преждевременно проигрывать анимацию. Фактически из-за того, что формирование ударной волны в данный момент завершено и может стать довольно таки процессороемкой для процессора вашей машины при воспроизведении анимации, хорошей идеей было бы отключить несколько операторов, чтобы сохранить на данный момент хорошую производительность.
Вы можете отключать события и операторы с помощью щелчка кнопки. Операторы теста в действительности не выключаются, но вместо этого Вы можете заставить их всегда возвращать истину или ложь, обходя условную часть теста. Чтобы выключить и включить событие, щелкните кнопку лампочки, с правой стороны от имени события.
У операторов такой возможности нет, но взамен, при щелчке по значку оператора, Вы можете блокировать и разблокировать этот оператор. Когда оператор заблокирован, он недоступен.
При размещении курсора мыши на значку тестовых операторов, Вы можете заметить, что курсор изменяет свой рисунок на алмазную клетку. Если Вы устанавливаете курсор по левой стороне значка, клетка показывает стрелку, направленную влево, указывая при этом, что "все частицы возвращают True.” И наоборот, на правой стороне значка рисунок клетки остается закрытым, указывая, что все частицы автоматически проверяют False. Чтобы проверить, что все частицы проверяют True или False, щелкните соответствующую сторону значка. После щелчка по значку, он изменяет изменяет отображение на зеленый индикатор для True или красный свет для False.
Чтобы ускорить интерактивность при построении каменистых осколков, перейдите к событию RocksShockwave, отключите оператор Speed By Surface, а затем переместите на низ этого события оператор Spawn, который передаст событию ShockwaveTrails значение False.
Следующая иллюстрация указывает местоположение двух щелчков и конечный результат.
Это должно значительно ускорить обработку в данный момент. Но не забудьте отменить эти изменения, когда Вы закончите работу со сценой.
Если Вы теперь запустите анимацию, Вы увидите первоначальную частицу, которая запустит ударную волну, а так же новые частицы, выстреливающиеся в атмосферу и обратно падающие на планету.
Создайте следы, оставляемые каменистыми осколками:
Дальше, Вы создадите огонь и дымящиеся следы для каменистых осколков. Эти следы могут отображаться динамически с помощью градиента, на протяжении всего существования частицы, чтобы это напоминало огонь и дым. Вы также создадите новые вторичные ударные волны, которые будут вызываться падением каменистых осколков на поверхность планеты.
1. На низ события EmitFragments, добавьте тест Spawn. Установите его режим к By Travel Distance с Step Size в
0.2. В группе Speed, оставьте выбор по умолчанию в Inherited % и установите значение к
10 с Variation % в
10 и Divergence к
30 градусам.
Это заставит частицы оставлять и распылять позади себя большой след, конической формы.
В этой точке, тест Spawn в событии EmitFragments генерирует частицы. Однако, эти новые частицы будут вести себя точно так же, как и уже существующие частицы, и на них так же будут воздействовать операторы в этом событии. Если Вы запустите анимацию, то обратите внимание, что частицы выглядят одинаково и на всех них одинаково воздействует гравитация.
Чтобы иначе управлять новыми частицами, Вы определите отдельное событие для этих следов.
2. Под событие EmitFragments, добавьте новый оператор Delete. Назовите созданное новое событие
FragmentTrails и установите для оператора Display красные точки (Dots) или что-нибудь другое, особенное.
3. Установите оператор Delete к By Particle Age, а затем свяжите вывод теста Spawn в событии EmitFragments с этим новым событием.
Когда Вы запустите анимацию, осколки начнут свое падение, оставляя позади себя хвосты из красных точек. Единственной проблемой будет слишком короткое существование частиц. По умолчанию, оператор Delete устанавливается в кадре 48, и в данном случае, этого недостаточно. Оператор Delete важен для этого события, потому что, иначе, следы существовали бы на всей протяженности этой сцены и, что еще более важно не были бы в состоянии получить эффекты из материала, основанного на возрасте, типа градиента.
4. В параметрах оператора Delete, установите Life Span в
80, а Variation в
24.
Создайте вторичные очаги пламени:
Одна последняя, незначительная проблема с этим эффектом состоит в том, что каменистые осколки падают на планету и проходят через поверхность. Выглядело бы намного лучше, если бы они вызвали новые столкновения и ударные волны, как вторичные взрывы. Вы можете легко достигнуть этого с помощью теста Collision и нового события.
1. Вы можете повторно использовать тест Collision из события CreateAsteroids: Щелкните по нему, чтобы выделить, а затем щелкните его правой кнопкой и из контекстного меню выберите Copy. Затем расположите курсор прямо под оператором Spawn в событии EmitFragments, щелкните правой кнопкой и выберите из меню Paste Instanced. Альтернативно, Вы можете только SHIFT+потянуть этот тест на новое место, а затем выбрать Instanced из диалога Clone Options.
Вы определили тест столкновения, чтобы решить, когда каменистые обломки упадут на поверхность планеты. Без связи вывода из теста Collision, частицы только подпрыгнут при столкновении. Чтобы создать вторичные вспышки при столкновении, Вы должны создать новое событие, только для того, чтобы определить их.
2. Добавьте новый тест Spawn за пределами события EmitFragments. Назовите новое событие
SecondaryFlames и измените тип для Display на желтые Ticks.
Это позволит легко увидеть, что случиться при вторичных вспышках.
3. Соедините вывод теста Collision в событии EmitFragments с новым событием.
4. В параметрах теста Spawn, оставьте по умолчанию опцию Once в Spawn Rate и включите Delete Parent.
Это важно, потому что Вы бы не хотели, чтобы каменистые обломки продолжали подпрыгивать вокруг; вместо этого, они должны породить новые частицы, а затем умереть.
5. Установите Offspring # к
50 со значением Variation % в
30.
Это позволит каждому каменистому обломку родится между 35 и 65 новыми частицами.
6. В группе Speed, установите Inherited % к
50 со значением Variation % в
30 и значением Divergence в
90.
Это заставит рожденные частицы двигаться в сторону, приблизительно со скоростью в половину меньшей от скорости столкновения, по широко распространяющейся области.
В данный момент, событие SecondaryFlames реально ничего не делает, кроме как рождает новые частицы. Чтобы создать вторичные вспышки, Вы добавите такие операторы, чтобы эти частицы создали область радиальной ударной волны, прошлись по поверхности, при этом замедляясь в течение долгого времени, и в конечном счете умерли бы после нескольких секунд.
7. Добавьте оператор Speed By Surface в событие SecondaryFlames под тестом Spawn.
Это заставит частицы следовать поверхности объекта планеты.
8. Установите оператор Speed By Surface в Control Speed Continuously со Speed в
30 и Variation к
10.
Это вытолкнет частицы со скоростью 30 единиц в секунду.
9. Выберите объект Planet, в качестве Surface Geometry и установите Direction к Parallel To Surface.
Это заставит частицы пройтись по поверхности планеты, начиная свое движение в сторону от места падения.
10. И наконец, установите Accel Limit к
5.
11. Дальше, копируйте оператор Force из события RocksShockwave и вставьте его в качестве образца (Instance) в событие SecondaryFlames.
Это - тот же оператор, который воздействует на частицы с 500 процентами Drag.
12. Добавьте новый оператор Delete внизу события SecondaryFlames и установите его в By Particle Age, оставив по умолчанию установки: Life Span=48 и Variation=8.
Это заставит новые частицы умирать примерно после двух секунд.
13. В событии RocksShockwave, включите блокированный оператор и тест.
На этом все! Вы можете сравнить ваши полученные результаты с нашими, в файле
asteroid_impact_final.max.
Подводим итоги
На этом установка Particle Flow закончена. Так это и останется, потому что нет операторов Shape или Material, кроме начального Shape Instance, все частицы будут рендерированы, в виде формы Asteroid. Вместо этого другие события должны использовать другие формы и операторы Shape Facing. Однако, это выходит за рамки этой обучающей программы и остается за Вами. Перед Вами открываются безграничные возможности.
Мы бы предложили Вам создать каменистые обломки, с помощью анимированной геометрии образцов (Instance), созданных тем же самым методом, что и при создания астероидов. Вы могли бы сделать эффекты для следов, с помощью операторов Shape Facing и Material Dynamic, чтобы создать эффекты с картами градиента в течении жизни этих частиц.
Уроки от: 3ds Max
Перевод: Касилов Евгений
При размещении этого материала на других ресурсах, обязательно указывать место первоисточника. Первоисточником публикации данных переводов является форум foxter.ru