Академия компьютерной графики, №2

 | 19.23

Мой Компьютер, №16, 14.04.2008

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

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

Например, если необходимо создать анимацию пчелиного роя, вылетающего из улья, достаточно взять источник частиц Spray и задать в его настройках скорость «пчелиного вылета» (Speed), размер области испускания частиц — отверстие в улье (Emitter Width и Emitter Length) и расхождение пчелиного роя по мере удаления от места появления (Variation).

Источники частиц можно найти в группе Particle Systems в категории Geometry на вкладке Create командной панели.

В 3ds Max можно создавать следующие типы частиц:

  • Spray (Мелкие брызги) — система частиц используется для имитации капель от воды, которые, например, появляются во время дождя, когда работает фонтан, когда идет полив из садового шланга и т.д.;
  • SuperSpray (Улучшенные брызги) — представляет собой улучшенную версию системы частиц Spray и имеет больше параметров для управления частицами;
  • Snow (Снег) — система частиц, которая используется для создания анимации падающего снега или конфетти;
  • Blizzard (Снежная буря) — представляет собой улучшенную версию системы частиц Snow и имеет больше параметров для управления частицами;
  • PArray (Массив частиц) — система частиц, которая может порождать частицы на поверхности указанного объекта. При этом частицы могут представлять собой осколки поверхности объекта-эмиттера, что дает возможность использовать PArray для создания эффектов взрыва;
  • PCloud (Облако частиц) — система частиц, предназначенная для распространения частиц в середине какого-либо объема. Это может быть параллелепипед, сфера, цилиндр, а также любой объект 3ds Max, который имеет глубину. Такую систему частиц удобно использовать, например, для создания стаи птиц или косяка рыб;
  • PF Source (Источник Particle Flow) — наиболее гибкая система частиц, которая дает возможность смоделировать практически любые эффекты с частицами.

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

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

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

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

Скачать конечную анимацию можно отсюда: http://www.cgliberty.com/cgliberty/28/cgliberty28.rar.

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

Если вы следите за публикациями цикла «Академия компьютерной графики», то сразу же догадаетесь, где можно взять модель осьминога. Мы подробно рассказывали о том, как ее создавать, когда рассматривали моделирование с использованием полигонов.

Обратите внимание, что для этой сцены следует использовать не готовую модель осьминога, а промежуточный вариант, где уже угадывается его форма, но модель еще низкополигональная. Если использовать высокополигональную модель, то просчет анимации может занять достаточно много времени, а то и вовсе не состоится — 3ds Max может выдать сообщение об ошибке.

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

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

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

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

Окно Particle View можно условно разделить на четыре области. Большую часть окна занимает диаграмма, демонстрирующая процесс создания эффекта с частицами в сцене. В нижней части окна размещены доступные средства для описания эффекта. При добавлении их в общую диаграмму в правой нижней части окна Particle View отображается их описание, а в правой верхней — настройки. Изменяя их, можно изменять параметры эффекта на том или ином этапе.

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

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

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

После открытия окна 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(Продолжение следует)

Сергей и Марина БОНДАРЕНКО

Robo User
Web-droid editor

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *