Создание упавших тканей

We use cookies. Read the Privacy and Cookie Policy

Создание упавших тканей

Существует специальный метод, позволяющий достаточно легко моделировать ткань, лежащую на какой-либо поверхности: покрывала, одеяла, скатерти и т. д. Суть данного метода заключается в том, что форма ткани не моделируется отдельно, а симулируется ее падение. Сначала сцена подготавливается к симуляции: создается сама ткань, пока еще совершенно ровная, создается объект, на который она упадет; затем добавляются специальные вспомогательные объекты, определяющие характеристики ткани и ее падения; после чего запускается симуляция, и ткань красиво падает на объект. Этот метод называется reactor (от англ. react — взаимодействовать).

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

Сейчас мы рассмотрим порядок выполнения данных действий на отвлеченном примере.

1. Создайте в окне проекций Top (Вид сверху) либо Perspective (Перспектива) примитив Torus (Тор). Перейдите к параметрам данного объекта и задайте следующие значения: Radius 1 (Радиус 1) — 150 см, Radius 2 (Радиус 2) — 48 см, Segments (Сегментация) — 14, Sides (Стороны) — 7. Получилось кольцо с достаточно низкой сегментацией. Мы специально занизили сегментацию, т. к. количество сегментов кольца и ткани, которая на него упадет, влияет на общую продолжительность процедуры просчета падения.

2. В окне проекций Top (Вид сверху) создайте примитив Box (Куб). Перейдите к его параметрам и задайте следующие значения: Length (Длина) — 700 см, Width (Ширина) — 700 см, Height (Высота) — 1 см, Length Segs (Сегментация по длине) — 20, Width Segs (Сегментация по ширине) — 20. Установите данный объект аккуратно над кольцом. В результате у вас должна получиться сцена примерно как на рис. 7.52.

3. Два созданных объекта будут участвовать в симуляции падения ткани: кольцо — это твердый объект, на который упадет ткань и форму которого примет, а примитив Box (Куб) — это сама ткань. Теперь ваша задача — "объяснить" это программе. Вы должны показать программе, какой именно из этих двух объектов должен падать, а какой — стоять на месте и являться твердым объектом. Для этого вам понадобится создать два вспомогательных объекта, так называемых коллектора. Коллекторы позволят не только указать, кто есть кто, но и настроить некоторые характеристики объектов.

4. Перейдите в первый раздел командной панели (Create), пятый подраздел — Helpers (Помощники), раскройте список типов объектов и выберите пункт reactor (рис. 7.53).

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

6. Поочередно создайте оба перечисленных коллектора в сцене. Для этого щелкните по инструменту создания первого коллектора, затем просто щелкните в любой точке сцены, чтобы установить коллектор. То же самое проделайте со вторым коллектором. Не важно, где именно они будут расположены. Главное — чтобы они присутствовали в сцене. У меня получилось, как на рис. 7.55.

7. Теперь необходимо настроить каждый коллектор. Выделите созданный в сцене коллектор RBCollection (который с изображением трех кубиков) и перейдите во второй раздел командной панели к его параметрам. Здесь вам понадобится свиток RB Collection Properties (Свойства коллекции твердых тел) (кстати, "RB" — означает "Rigid Body", т. е. твердое тело; данный коллектор позволяет определить твердые тела в сцене) (рис. 7.56).

8. Нажмите кнопку Pick (Показать) в данном свитке, затем щелкните по объекту-кольцу в сцене. Обратите внимание, что название данного объекта теперь отображается в небольшом списке над кнопкой Pick (Показать). Таким образом, вы показали программе, какой именно объект является твердым.

9. Прежде чем показывать мягкий объект, в отношении него надо применить специальный модификатор. Выделите объект Box (Куб) в сцене. Перейдите во второй раздел командной панели, раскройте список модификаторов (Modifier List) и выберите модификатор reactor Cloth. В нижней части раздела, в области параметров, появляется длинный свиток Properties (Свойства). В нем вам пока что понадобится лишь установить галочку опции Avoid Self-Intersections (Предотвратить самопересечения) (рис. 7.57). Данная опция позволит сделать так, что ткань при падении не будет пересекать сама себя.

10. Выделите в сцене коллектор CLCollection (который с изображением футболки с буквой "C"). В параметрах коллектора, в свитке Properties (Свойства), также нажмите кнопку Pick (Показать) и щелкните по объекту-ткани, т. е. Box (Куб) в сцене. Имя объекта также отобразилось в списке над кнопкой Pick (Показать).

11. Теперь сцена подготовлена к просчету анимации. Перейдите в последний раздел командной панели — Utilities (Утилиты) и нажмите последнюю кнопку — reactor (рис. 7.58).

12. В нижней части раздела появляется множество свитков с параметрами метода анимации reactor. Раскройте здесь свиток Preview & Animation (Предварительный просмотр и анимация) и нажмите кнопку Create Animation (Создать анимацию) (рис. 7.59).

13. Появится сообщение о том, что данное действие не может быть отменено в дальнейшем. Нажмите OK. Далее произойдет просчет анимации. Это действие занимает некоторое время. Его продолжительность зависит от производительности вашего компьютера, а также от сегментации объектов, участвующих в анимации (именно поэтому мы сделали их такими низкосегментационными).

14. Когда процедура просчета закончится, появится окно с отчетом. Закройте его нажатием кнопки OK. Теперь можно запускать воспроизведение анимации и просматривать результат. Запустите воспроизведение нажатием кнопки Play Animation (Воспроизвести анимацию), которая расположена в блоке средств управления анимацией (рис. 7.60). В сцене происходит падение ткани на кольцо.

15. Остановите воспроизведение в любой точке нажатием той же кнопки Play Animation (Воспроизвести анимацию). Вручную двигая ползунок анимации (расположенный под окнами проекций), подберите тот момент анимации, когда ткань принимает наиболее подходящую форму, на ваш взгляд.

16. Выделите ткань, перейдите во второй раздел командной панели, в стеке модификаторов нажмите правую кнопку мыши на строчке reactor Cloth и в появившемся меню выберите пункт Collapse To (Свернуть в). Это делается для того, чтобы закрепить форму модели ткани.

17. Теперь коллекторы в сцене больше не нужны. Выделите их и удалите. Модель упавшей ткани готова (рис. 7.61).

Как видите, метод упавшей ткани достаточно сложен. Однако его универсальность делает его весьма удобным на практике. Он позволяет создать любую упавшую ткань. Чаще всего он применяется для создания модели покрывала, небрежно брошенного на кровать.

Подсказка.

Создавая сейчас упавшую ткань, вы использовали крайне низко полигональные модели, снизив значения сегментации твердого и мягкого объектов. Дело в том, что не все домашние компьютеры способны просчитать эту сцену с высокими значениями сегментации объектов, некоторые просто виснут. Пробуйте повышать значения сегментации и запускать просчет заново. Это обязательно отразится на продолжительности просчета: чем выше количество сегментов участвующих в симуляции объектов, тем дольше просчет. Но тем красивей будет модель в результате. Ищите компромисс между количеством сегментов и красотой модели самостоятельно.

Для закрепления навыков работы с данным методом, рассмотрим подробно порядок создания покрывала.

1. Откройте сцену из файла Krovat.max из папки Primeri_ScenGlava_7 на компакт-диске. Перед вами модель кровати, созданная в предыдущей главе. Наша задача — сделать покрывало для этой кровати.

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

3. Создайте два примитива Box (Куб): первый должен быть похожим по размерам и форме на горизонтальную часть кровати, а второй — на матрац. Расположите их рядом с кроватью. У меня получилось, как на рис. 7.62.

4. Над этой парой объектов создайте еще один примитив Box (Куб), который будет играть роль покрывала. Значения его длины и ширины задайте такими, чтобы он был немного больше по размерам, чем модель кровати (чтобы получились загибающиеся части). Расположите его сверху, над двумя ранее созданными объектами (рис. 7.63). Сегментацию данного объекта по длине и ширине задайте равной не менее 20 единиц. Высоту объекта (Height) задайте равной около 2 см.

5. Добавьте в сцену два коллектора: RBCollection и CLCollection (см. предыдущий шаг 5).

6. Выделите созданный в сцене коллектор RBCollection (который с изображением трех кубиков), перейдите во второй раздел командной панели к его параметрам, в свитке RB Collection Properties (Свойства коллекции твердых тел) нажмите кнопку Pick (Показать), затем щелкните по первому объекту, созданному в шаге 3, затем — снова Pick (Показать) и щелкните по второму. Имена обоих должны отобразиться в списке над кнопкой. Таким образом, вы показали, что данные объекты являются твердыми.

7. Выделите объект Box (Куб), который играет роль покрывала, перейдите во второй раздел командной панели, раскройте список модификаторов и примените модификатор reactor Cloth. Установите галочку опции Avoid Self-Intersections (Предотвратить самопересечения) в параметрах данного модификатора. Значение параметра Rel Density (Относительная плотность) в верхней части свитка задайте равным 0,2.

8. Выделите созданный в шаге 5 коллектор CLCollection, перейдите к его параметрам, нажмите кнопку Pick (Показать) и щелкните по объекту-покрывалу в сцене. Его имя отобразилось в списке над кнопкой.

9. Сцена готова к выполнению просчета. На всякий случай, сохраненная сцена на данном этапе содержится в файле reactor.max в папке Primeri_scenGiava_7 на компакт-диске. Если у вас что-то не получилось, можете использовать ее.

10. Перейдите в последний раздел командной панели — Utilities (Утилиты) и нажмите последнюю кнопку — reactor. Раскройте свиток Preview & Animation (Предварительный просмотр и анимация) и нажмите кнопку Create Animation (Создать анимацию).

11. По окончании просчета сцены, запустите воспроизведение анимации. Остановите воспроизведение на том кадре, когда внешний вид покрывала кажется вам наиболее подходящим. Выделите покрывало, перейдите во второй раздел командной панели, в стеке модификаторов нажмите правую кнопку мыши по строчке reactor Cloth и в появившемся меню выберите пункт Collapse To (Свернуть в).

12. Перенесите покрывало на кровать, положите его на нее, подушки положите сверху. В результате — модель кровати оказалась покрыта покрывалом (рис. 7.64).

Таким образом, мы в общих чертах рассмотрели порядок создания упавших тканей методом reactor.

Разумеется, этот метод имеет множество вариаций и настроек. Например, для достижения гораздо более хорошего и реалистичного эффекта, вам следует воспользоваться параметрами модификатора reactor Cloth, примененного в шаге 7. Например, параметр Mass (Масса) позволяет оперировать мнимой массой покрывала, Friction (Трение) — отвечает за то, насколько сильно материал будет скользить при падении, Rel Density (Относительная плотность) — отвечает за мнимую плотность материала, а Air Resistance (Сопротивление воздуха) — за плотность атмосферы, в которой якобы падает объект (рис. 7.65).

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

Также отмечу, что после выполнения функции Collapse To (Свернуть в) в шаге 11, покрывало больше не будет подвластно методу reactor.

Окончательно довести до ума форму покрывала можно при помощи модификатора FFD.

Для комбинирования вышеуказанных параметров, создайте сцену заново или используйте сцену из файла reactor.max в папке Primeri_ScenGlava_7 на компакт-диске.

Подсказка.

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

Данный текст является ознакомительным фрагментом.