П_Работа с частицами

  • doc
  • 28.04.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 087. П_Работа с частицами.doc

Практическая работа №18

Тема: Работа с частицами

Цель: Формирование навыков работы с частицами в 3ds max.

Время выполнения: 4 часа.

Теоретический материал

Самое большое достоинство Particle Flow – это то, что вы можете описывать поведение частиц до бесконечности. Задали условие (критерий) – и получили ответвление потока, например, для частиц, которые столкнулись с телом, можно задать одно поведение, для тех, которые пролетели мимо – другое.

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

Описание: 1

Рисунок 1 – Интерфейс окна Particle Flow (Частицы)

Интерфейс достаточно прост.

1) Это список всех доступных операторов, которые и влияют на поведение частиц

2) Диаграмма частиц. Каждое событие содержит в себе один и более операторов. Чтобы они работали последовательно, их связывать надо.

3) Настройки оператора.

4) Description - описание оператора, то есть, как на поведение частиц повлияет.

Теперь об определениях для полного понимания материала.

Событие (Event) - единица организации диаграммы частиц или схемы событий. События бывают двух типов: global (глобальное) и local (локальное)

Глобальное Событие (Global Event) - это самое первое событие в диаграмме частиц. По умолчанию содержит оператор Render. Обычное это событие называется именем пиктограммы источника частиц.

Локальное событие (Local Event) - все остальные события в диаграмме частиц. Birth Event (Событие Рождения) - это особый тип событий, который отвечает за генерацию частиц. К нему можно присоединить любое количество операторов и оно ставится сразу после Глобального события.

Оператор (Operator) - это действия, которые комбинируются в события. Они влияют на поведение частиц.

Частицы (Flows) - в эту группу операторов входят операторы Empty Flow и Standard Flow. Именно их ставят на начальном этапе.

Критерий (Tests) - операторы, которые влияют на частицы по принципу True/False. Скажем если частица удовлетворяет условию критерия, то с ней будет происходить какие-нибудь действия (например, сможет в следующее событие переходить, если критерий Spawn и т.д).

 

Задания:

Задание 1. Создание полета кометы

Первое - это создадим саму комету. Сама комета будет простым маленьким шариком, где-то 15 в радиусе. Далее нажмем на кнопку 6 на клавиатуре и откроем окно Particle View. С помощью Particle View сделаем самое сложное - хвост кометы.

Далее мы должны создать два оператора - Empty Flow и Birth и СВЯЗАТЬ. Их вы можете найти в списке операторов. Просто переместите их на поле диаграммы. Empty Flow и Standard Flow отвечают за то, как частицы будут отображаться на мониторе. В Empty Flow мы с нуля выстраиваем внешний вид частиц, имея всего лишь одно глобальное событие с оператором Render, а в Standard уже есть набор операторов с двумя событиями (Глобальное и Событие Рождения, содержащие ещё несколько других операторов).

Выбрали Empty Flow, чтобы строить систему частиц с нуля. У нас  появилась пиктограмма источника частиц. Имя по умолчанию:  PF Source 01

Теперь об операторе Render. Он отвечает за то, как частицы будут выглядеть при визуализации. Вы можете установить процент визуализируемых частиц (параметр Visible), выбрать, каким образом будет идти визуализация (параметр Type; например при включении опции Phantom будут просчитываться только анимация частиц, но самих мы не увидим, при опции None - вообще визуализации не будет, при опции Geometry (по умолчанию) - частицы полностью визуализируются). Параметр Render Group Result позволяет нам определить, как будет визуализироваться сетка частиц.

Оператор Birth нужен, так как он отвечает за генерацию частиц. Он будет образовывать событие генерации частиц (Birth Event).

Emit Start и Emit Stop - параметры, указывающие в каком временном промежутке будут генерироваться частицы. Параметр Amount указывает, сколько всего будет  создано частиц. При переключении на параметр Rate  можно будет определить кол-во создаваемых частиц  в секунду. Поле Total показывает, сколько всего будет созданных частиц. Параметры для нашего проекта представлены на рисунке 2.

Описание: 3

Рисунок 2 – Параметры оператора Birth

Ещё один оператор, который появился в событии генерации частиц - Display. Он точно определяет, как частицы будут отображаться при просмотре. Самый быстрый - Ticks (частицы отображаются в виде крестиков). Самый медленный - Geometry (полное отображение геометрии частиц). Переключатель Show Particles ID показывает ID-номера частиц. С помощью параметра Selected можно выбранным частицам назначить свой тип отображения при просмотре. Для нашей кометы настройки менять не надо.

Интересное Примечание:

Кстати, можно быстро упомянуть, как правильно выбирать частицы. Для этого выделите пиктограмму источника частиц и перейдите на вкладку Modify. Разверните свиток Selection и выберите уровень выделения частиц: Particle или Event. При уровне Particle, мы  выделяем отдельные частицы вручную или через ID-номера, а на уровне Event Вы выбираете все частицы, принадлежащие к отдельному событию (рисунок 3).

Описание: 5

Рисунок 3 – Настройки свитка Selection (Выделение) вкладки Modify

Теперь в наше событие добавим новый оператор - Position Object. Он нужен для определения источника потока частиц. По умолчанию источником выступает пиктограмма PF Source 01, но в качестве источника нужна наша сфера. Найдите кнопку Add, нажмите её и в списке Emitter Objects будет имя нашей сферы. Переключатель Lock On Emitter заставляет часть частиц склеиваться с источником потока, а переключатель Inherit Emitter Movement заставляет частицы двигаться по направлению и скорости источника частиц. Параметры Multiplier% и Variation% позволят управлять процентом частиц, которые будут копировать движения источника. Выпадающее меню Location позволяет определить тип источника (Surface (поверхность) или Edge (ребро), например). Для нашего проекта добавьте только нашу сферу в список источников.

Описание: 6

Рисунок 4 – Добавление сферы в список источников

Интересное Примечание:

Если по событию в диаграмме щёлкнуть правой кнопкой мыши, то в контекстном меню есть 2 интересных пункта: Insert и Append. Оба эти пункта содержат в себе список операторов. Только при выборе оператора из списка Insert оператор в событии займёт место, где был совершён щелчок, а при выборе из списка Append оператор автоматически займёт место в конце события.

В качестве последнего оператора первого события возьмём критерий Spawn. Он нужен для создания новых частиц из уже существующих. Этот критерий часто выполняет роль связующего между событиями. Вот тут попробуйте подобрать параметры сами. Аккуратно работайте с параметром Spring: от него сильно зависит кол-во новых частиц. Параметр Rate указывает на то, сколько частиц будут генерироваться за секунду. Все зависит оттого, какой результат заходите получить при визуализации. Пример настройки для данного проекта показан на рисунке 5.

Итак, мы завершили создание глобального события и событие рождение (рисунок 6).

 

Описание: 8                                                 Описание: 9

Рисунок 5 – Настройки критерия Spawn

Рисунок 6 – Схема Particle Flow после добавления теста Spawn

Есть ещё один тип объектов, который будет относиться к нашей теме - Space Warps (Пространственные Деформации).  Это невизуализируемые объекты, которые влияют на поведение других объектов. Можно сымитировать эффект ветра, ряби волны и т.д. Нам понадобится объект Wind. Комета при движении встречает сопротивление и сопротивление мы сымитируем объектом Wind. Чтобы его создать на панели Create найдите разделы Space Warps и в группе Forces выберите объект Wind.

Далее создайте его, как показано на рисунке 7. Главное, чтобы стрелка (Направление ветра) была против потока частиц.

Описание: img011_s       Описание: img012

Рисунок 7 – Добавление объекта Wind (Ветер) в сцену (слева) и его настройки (справа)

Главное сделать правильный подбор параметров, чтобы было естественнее. Параметр Strength регулирует силу ветра. Decay - затухание (чем больше этот параметр, тем меньше расстояния от источника требуется для начала спада скорости ветра). Параметр Turbulence влияет на случайное изменение движения частиц, а параметры Frequency и Scale влияют на периодичность и масштабы турбулентности (Короче, чем выше значения Frequency и Scale, тем турбулентность будет более хаотичной и менее сглаженной).

Щёлкните правой кнопкой мыши по пустому участку диаграммы и из контекстного меню найдите пункт New - Operator Event. В списке Operator  Event находятся те операторы, при выборе которых мы создаём событие с этим оператором.  Из этого списка выберите оператор Force. Он  нужен для подключения объекта Wind. Нажмите на кнопку Add и выберите наш объект Wind. Через параметр Influence мы настраиваем процент влияния нашего ветра (менять не надо).

Также в событии автоматически появится оператор Display, но его трогать мы не будем. Кометы при движении оставляют за собой след, то есть хвост, от быстрого перемещения, но при этом  он недолговечен, поэтому придётся применить оператор Delete. Из самого названия понятно, что он служит для удаления частиц из системы. Без этого оператора частицы будут "проживать" бесконечную жизнь в пределах анимации, что помешает придать реализма нашей комете. А так мы сможем задать их временной промежуток. Существует 3 переключателя в настройках оператора в группе настроек Remove:  All Particles,  Selected  Particles Only и  By Particle  Age. При All Particles из сцены будут удаляться все частицы, при Selected Particles Only будут удаляться выбранные частицы (об отборе частиц говорилось выше), но нам нужен By Particle Age для установки промежутка времени, который должна проработать частица. Параметр Life Span определяет кол-во кадров для работы частицы, а при параметре Variation определяет промежуток отклонения от числа Life Span. То есть время для каждой частицы рассчитывается по формуле Life Span + (любое число от -1 до +1, умноженное на Variation). Параметры для проекта представлены ниже на рисунке 8.

Описание: img014

Рисунок 8 – параметры оператора Delete (Удаление)

Теперь нужно описать форму наших частиц. Сделаем это с помощью оператора Shape. Там нам понадобятся 2 параметра: Shape (выбираем форму наших частиц) и Size (выбираем размер). За форму частиц возьмём сферу, а размер поставим равный двум сантиметрам.

Чтобы хвост кометы выглядел лучше,  будем уменьшать размер частиц с помощью оператора Scale.  Тут  очень важную роль играет выпадающее меню  Type. Именно оно и будет указывать, от какого значения будет идти расчёт размера. При параметрах Overwrite Once и Inherit Once происходят пока идёт действие оператора, а трио параметров Absolute, Relative First, Relative Successive ведут масштабирование, пока частица находится в события. Разница состоит в том, что некоторые ведут расчёт от исходного размера частиц (например, Absolute или Overwrite Once), а некоторые ведут расчёт изменённых размеров (если, конечно эти изменения были и к таким относятся, например, Inherit Once или Realtive First). Также стоит поговорить о разнице масштабировании в Scale Factor и Scale Variation. В первом можно указать текущий размер, а во втором - процент от текущего размера. Можно снять флажок Constrain Proportions, который есть в обоих типах масштабирования, чтобы вводить по осям разные значения масштабирования. Настройки для проекта показаны на рисунке 9.

Описание: img016                                                 Описание: img017

Рисунок 9 – Настройки оператора Scale  (Масштабирование)

Рисунок 10 – Настройки материала для кометы

Закончили создание частиц. Теперь создадим материал для кометы и частиц. Сначала для кометы. Вызовите окно Material Editor. Выберите пустую ячейку и настройте материал, как на рисунке 10.

Далее создадим материал для частиц. Разработчики 3ds max создали специальную карту - Particle Age. Назначьте эту текстуру каналу Diffuse. Она помогает установить цвет частиц для трёх этапов:

1) Рождение частицы (Color #1)

2) Основной цвет для активной частицы (Color #2)

3) Цвет частицы  (Color #3)

Также для каждого этапа есть параметр Age. Параметр этот рассчитывается в проценте от  всей жизни частицы.

1) Age #1 показывает время для перехода с Color #1 к Color #2

2) Age #2 показывает сколько времени частица будет иметь цвет, указанный в Color #2

3) Age #3 показывает когда цвет частицы будет как Color #3

Установите параметры, как на рисунке 11:

Описание: img018                        Описание: img019

Рисунок 11 – Настройки цвета хвоста кометы, меняющегося с течением времени

Рисунок 12 - Стандартные настройки материала шейдера Blinn

 

Материал готов, но нам нужно его ещё добавить к частицам. Вернёмся к окну Particle Flow. В последнее событие добавьте оператор Material Dynamic. Через него можно легко применить наш материал к частицам. В настройках под параметром Assighn Material (у параметра должен стоять  флажок), кнопка None. Вот и из редактора материалов переместите материал нашей  кометы на кнопку None. Материал готов.

Практически все готово. Теперь только поработаем над фоном. Возьмите любое изображение звёздного неба. Через окно Environment (кнопкой 8 вызывается) и через кнопку Environment map добавьте ваш фон.

Описание: img020

Рисунок 13 – добавление фона в изображение

Все готово. Вот результат:

Описание: img021_s

Рисунок 14 – Итоговое изображение

Сохраните анимацию в формате .avi

 

Задание 2. Рыбки

Среди всех систем частиц Particle Flow выделяется тем, что не имеет определенного предназначения и может использоваться для имитации практически любых эффектов с частицами. Гибкая настройка этого модуля объясняется тем, что его настройки "придумывает" сам аниматор, описывая события, которые должны происходить с потоком частиц.

Сложные эффекты с частицами часто используются в трехмерных анимационных фильмах. Вспомните, например, эпизод из фильма "В поисках Немо", когда косяк рыб выстраивается в различные фигуры, общаясь с главным героем. Рыбы выстраиваются то в форме указателя, то в виде осьминога, то наподобие корабля.

Описание: C:\Documents and Settings\sozonova\Рабочий стол\1.jpg     Описание: C:\Documents and Settings\sozonova\Рабочий стол\2.jpg

Рисунок 15 – примеры расположения частиц по форме

Такой эффект невозможно воссоздать при помощи обычных источников частиц, но Particle Flow позволяет это сделать.

Определим задачу: в начале анимации косяк рыб должен принять форму большой рыбы, а затем на протяжении шестидесяти кадров рыбки должны переплыть на другое место и выстроиться в форме осьминога. Почти так, как в фильме.

Для создания такого эффекта нам понадобятся две модели: рыбы и осьминога. Мы создадим анимацию, в начале которой частицы будут расположены на поверхности одной модели, а затем переместятся и расположатся на поверхности второй модели. В качестве частицы будет использоваться рыбка, а поток частиц, соответственно, будет косяком рыб. Сами модели мы скроем, и зрителю будет казаться, что косяк рыб выстраивается то в одну форму, то в другую.

Схематично изобразите модель осьминога из сплайнов.

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

Описание: C:\Documents and Settings\sozonova\Рабочий стол\4.jpg

Рисунок 16 – Форма рыбы

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

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

Описание: C:\Documents and Settings\sozonova\Рабочий стол\5.jpg

Рисунок 17 – Формы для перехода рыбок

Для начала работы с Particle Flow перейдите на вкладку Create (Создание) командной панели, в категории Geometry (Геометрия) выберите строку Particle Systems (Системы частиц), нажмите кнопку PF Source (Источник Particle Flow) и щелкните в окне проекции. Пиктограмма в окне проекции показывает наличие в сцене системы частиц.

Описание: C:\Documents and Settings\sozonova\Рабочий стол\6.gif

Рисунок 18 – Добавление источника частиц в сцену

Для доступа к основному окну настройки системы частиц нажмите кнопку Particle View (Представление частиц) в свитке настроек Setup (Настройка) или клавишу 6.

Модуль Particle Flow достаточно прост и логичен. Он работает так: вы создаете поток частиц, а дальше составляете диаграмму всех действий, происходящих с ним. Например, указываете, что при достижении определенного возраста частицы дробятся на более мелкие, а при столкновении с определенным объектом – меняют цвет.

После открытия окна Particle View в нем можно увидеть начальную диаграмму, которая уже содержит два события: Global Event (Общее событие) и Event 01 (Событие 1). В событии Global Event помещен оператор Render. Он определяет параметры визуализации частиц. Событие Event 01 содержит базовый набор операторов.

В нем происходит порождение новых частиц источником. Рождение частиц определяется оператором Birth 01. В настройках этого оператора можно указать первый кадр, в котором произойдет рождение частиц (Emit Start), и последний (Emit Stop) — после которого частицы появляться не будут. Кроме того, оператор Birth отвечает за количество частиц (Amount), испускаемых источником PF Source. Поскольку в нашей анимации в нулевом кадре частицы уже существуют, и никакого порождения в процессе протекания анимации не происходит, для параметров Emit Start и Emit Stop устанавливаем значение 0. Для параметра Amount задаем количество — 400.

Описание: C:\Documents and Settings\sozonova\Рабочий стол\8.gif

Рисунок 19 – Настройки опреатора Birth (Рождение)

Второй оператор в группе этого события — Position lcon 01 (Расположение пиктограммы 01). Его настройки определяют область испускания частиц. В нашем случае частицы должны изначально располагаться на объекте, а не в некоторой области, определяемой вспомогательным значком. Поэтому этот оператор нужно удалить, щелкнув по нему правой кнопкой мыши и выбрав Delete.

Вместо оператора Position lcon добавляем Position Object. Для этого найдите этот оператор в нижней части окна Particle View и перетащите его значок на первое событие. При помощи этого оператора мы указываем объект, на котором частицы должны располагаться в начале анимации. Нажмите кнопку Add в списке Emitter Objects и укажите большую рыбу в сцене.

Теперь вы можете выделить рыбу в сцене и скрыть ее (щелчок правой кнопкой мыши – Hide Selection). Будет хорошо видно, что частицы приняли ее форму.

Описание: C:\Documents and Settings\sozonova\Рабочий стол\9.gif

Рисунок 20 – Частицы приняли форму рыбы

Продолжаем разбираться с операторами.

Следующий оператор — Speed 01 (Скорость 01) — задает скорость и направление потока частиц. Этот оператор нам не нужен, поскольку нам необходимо переместить частицы на объект, а не в какую-либо сторону. Поэтому этот оператор мы удаляем.

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

Оператор формы, Shape 01 (Форма 01) задает форму каждой частицы в виде точки, тетраэдра, куба или сферы, а также их размер. Но форма нашей частицы должна быть иная – каждая частица должна быть идентичная модели рыбки. Поэтому этот оператор мы удаляем, а вместо него добавляем в событие оператор Shape Instance. В группе Particle Geometry Object нажмите кнопку и укажите в сцене маленькую рыбку.

В окне проекции на месте частиц мы пока что видим только схематические плюсики. Последний оператор этого события – Display (Отображение). Он предназначен для управления отображением частиц в окне проекции. По умолчанию выбран вариант отображения Ticks (Отметки). Чтобы увидеть рыбок, выберите в списке Type вариант Geometry.

Описание: C:\Documents and Settings\sozonova\Рабочий стол\12.gif Описание: C:\Documents and Settings\sozonova\Рабочий стол\13.gif

Рисунок 21 – Задание частицам указанной формы (слева) и результат настроек (справа)

Плюсики превратятся в рыбок

Теперь обратите внимание на положение рыбок. Оно зависит от положения исходной модели. Если ориентация каждой рыбки в косяке неправильная, например, они все смотрят головой вверх, включите оператор Rotation и выберите в списке Orientation Matrix такой вариант, при котором рыбки расположатся правильно, например, Speed Space Follow. Если же ориентация каждой рыбки в косяке правильная, оператор Rotation можно удалить.

Таким образом, мы настроили первое событие и положение частиц в нулевом кадре. Обычно для перехода потока частиц к следующему событию используется какое-нибудь условие, но в нашем случае никакого условия нет. Просто нужно все частицы направить на поверхность второй модели (осьминога). Поэтому используем безусловный переход, добавив в конец диаграммы первого события критерий Send Out, который просто говорит о том, что все частицы должны направиться ко второму событию. Критерии легко опознать по желтому цвету.

Создадим второе событие. Для создания события достаточно перетащить оператор или критерий на пустую область. Найдите критерий Find Target и перетащите его на пустую область. Теперь нужно связать первое событие со вторым. Для этого щелкните мышью на выступе диаграммы события, который расположен напротив критерия, и перетащите этот выступ на мишень в верхней части второго события. При этом указатель изменит форму.

На то, что события связаны, будет указывать соединяющая их синяя линия, которая появится сразу после того, как вы отпустите кнопку мыши.

Описание: C:\Documents and Settings\sozonova\Рабочий стол\15.gif 

Рисунок 22 – связанные события

Критерий Find Target поможет косяку рыб найти осьминога и расположиться по его поверхности. В самом верхнем списке выбираем вариант Control By Time. Тем самым мы получим возможность задать число кадров, в течение которых будет выполнено перемещение частиц. Число кадров устанавливается в поле Time. По умолчанию оно равно 60, это нас устраивает.

В группе Target установите переключатель в положение Mesh Object, нажмите кнопку Add и укажите в сцене модель осьминога.

Описание: C:\Documents and Settings\sozonova\Рабочий стол\17.gif

Рисунок 23 – Задание новой формы размещения рыбок

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

Рыбы плывут в сторону осьминога, однако, достигнув цели, не останавливаются, а проплывают дальше. Чтобы остановить их, создадим третье событие, перетащив в свободную область окна Particle View оператор Position Object.

Свяжите второе событие с третьим, используя выступ напротив критерия Find Target. Для того чтобы частицы остановились, достигнув осьминога, в настройках оператора Position Object укажите в качестве объекта, по форме которого должны расположиться частицы, осьминога. Затем установите флажок Lock on Emitter. Чтобы наблюдать рыбок в окне проекции, опять же измените тип отображения частиц на Geometry в настройках оператора Display.

Анимация готова. Можно добавить, что некоторые настройки операторов, как, например, количество частиц, возможно, придется изменить. Particle Flow хорош тем, что можно менять параметры операторов и критериев на любом этапе настройки эффекта.

Если вы захотите визуализировать анимацию, то не забудьте о материале, который стоит назначить рыбкам, чтобы они лучше смотрелись. Для того чтобы назначить частицам материал, достаточно добавить оператор Material Static в событие Global Event, после чего выбрать материал, нажав кнопку None.

 

Контрольные вопросы:

1.       Для чего используются частицы?

2.       Назовите основные операторы для работы с частицами.

3.       Что такое события? Приведите примеры событий.

4.       Как связать события в оке Particle Flow?