Имитация воды модулем reactor

Отрывок из книги:
Реальная анимация и виртуальная реальность (+CD)
Михаил Маров
Издательский дом "Питер", 2005


Имитация воды модулем reactor

Имитация воды выполняется в модуле reactor ( реактор ) без помощи коллекций и модификаторов. Для этой цели используется объемная деформация Water ( Вода ), которая применяется к примитиву Plane ( Плоскость ). Собственно, моделируется только поверхность воды. Тем не менее, на жесткое тело, погруженное в такую <воду>, действует выталкивающая сила, благодаря которой поведение тела в воде выглядит вполне реалистично: тела могут тонуть, плавать на поверхности или находиться во взвешенном состоянии в толще воды.

Чтобы освоить моделирование воды, выполните следующие действия:

  1. Создайте простую трехмерную сцену, включающую основание сцены в виде плоскости и макет бассейна в виде параллелепипеда с вдавленной внутрь частью верхнего полигона. Над чашей бассейна поместите два примитива: прямоугольный брусок и сферу (рис.4.64), которые после начала анимации должны упасть в воду. Добавьте камеру и светильники. Назначьте объектам материалы. Включите в состав сцены коллекцию жестких тел и поместите в нее все названные объекты. Рис. 4.64. Исходный вид трехмерной сцены с моделью бассейна, подготовленной для анимации модулем reactor
  2. Запустите утилиту reactor ( реактор ). Объявите плоскость, изображающую основание сцены, и параллелепипед-бассейн как вогнутые объекты. С этой целью установите для каждого из них переключатель Simulation Geometry ( Моделируемая геометрия ) в свитке Properties ( Свойства ) на панели Utilities ( Утилиты ) в положение Use Mesh ( Использовать сетку ) группы Concave ( Вогнутый объект ). Массы этих объектов оставьте равными нулю.
  3. Очень важно правильно задать массу тел, которые должны падать в воду. С этой целью установите в качестве единиц измерения метры и измерьте объемы этих тел в кубических метрах с помощью утилиты Measure ( Измерить ). Расчет массы выполнить достаточно просто. Один кубический метр воды весит 1000кг . Так что если умножить объем тела в кубических метрах на 1000, вы получите массу тела, при которой оно будет обладать такой же плотностью, как вода, то есть будет иметь нулевую плавучесть. Тело с нулевой плавучестью может находиться в воде во взвешенном состоянии, не погружаясь и не всплывая. Чтобы тело плавало, необходимо принять его массу меньше, чем объем в кубометрах, помноженный на 1000; чтобы тонуло- больше. В рассматриваемом примере объем прямоугольного блока оказался 1,4м 3 ; объем шара- 2,44м 3 . Следовательно, блок массой более 1400кг будет тонуть в воде, а менее 1400кг- плавать. Для сферы масса нулевой плавучести составляет 2440кг . Примем массу блока равной 1600кг , чтоб он тонул, а массу сферы- 2000кг , чтобы она плавала.
  4. Создайте объемную деформацию Water ( Вода ). Для этого можно, к примеру, воспользоваться кнопкой Create Water ( Создать Воду ) панели инструментов reactor ( реактор ). Объемная деформация создается, как обычная плоскость. Щелкните на кнопке Create Water ( Создать Воду ). На панели Create ( Создать ) появится свиток Properties ( Свойства ) с параметрами объемной деформации (рис.4.65). Рис. 4.65. Свиток Properties со средствами настройки объемной деформации Water

Щелкните в одном из углов бассейна и растяните плоскость объемной деформации по диагонали до другого угла. Отпустите кнопку мыши. В качестве настроек всех параметров воды оставьте значения, принятые по умолчанию. Щелкните правой кнопкой мыши, чтобы выключить инструмент Create Water ( Создать Воду ). Поднимите сетку объемной деформации, в центре которой помещается надпись Water ( Вода ), на такой уровень, где должна находиться поверхность воды в бассейне (рис.4.66).

Рис. 4.66. Окончательный вид трехмерной сцены с моделью бассейна, подготовленной для анимации модулем reactor

  1. Просмотрите анимацию воды в окне предварительного просмотра, щелкнув на кнопке Preview in Window ( Просмотреть в окне ) в свитке Preview & Animation ( Просмотр и анимация ) утилиты reactor ( реактор ). Жесткие тела падают в воду, и, как и предполагалось, брусок тонет, а шар плавает, слегка покачиваясь на волнах. Обратите внимание на то, как реалистично выглядит поверхность воды в окне предварительного просмотра.
  2. Измените массу бруска, установив значение 1200кг . Для шара уменьшите массу до 500кг . Снова просмотрите анимацию. Теперь брусок будет плавать, правдоподобно ныряя и раскачиваясь на волнах, а полегчавший шар после падения может даже слегка выпрыгнуть из воды.
  3. Слегка измените настройки свойств воды в свитке Properties ( Свойства ) на панели Modify ( Изменить ). Увеличьте значение параметра Wave Speed ( Скорость волн ) с 1м/с до 3м/с. Величину Max Ripple ( Максимальная рябь ) также увеличьте с 1м до 3м . Еще раз просмотрите анимацию, обращая внимание на то, как изменился вид волн.
  4. Пока вода существует только в окне предварительного просмотра. Объемные деформации не являются визуализируемыми объектами, поэтому при попытке построить изображение сцены, вы не увидите воды. Для имитации поверхности воды, которую можно визуализировать, создайте плоскость, изображающую воду, использовав примитив Plane ( Плоскость ). Подгоните размер и положение плоскости под размер и положение сетки деформации Water ( Вода ). Обязательно увеличьте сегментацию плоскости до 30-40 по каждому измерению. Свяжите плоскость с объемной деформацией с помощью кнопки Bind to Space Warp ( Связать с воздействием ) главной панели инструментов 3 ds max . Для удобства можете выделить плоскость, щелкнуть на кнопке Bind to Space Warp ( Связать с воздействием ), затем нажать клавишу h и выбрать имя деформации Water01 ( Вода01 ) в окне Select Space Warp ( Выбор объемной деформации ).
  5. Создайте материал для воды. Цвет можно выбрать светло-лиловый или зеленовато-синий. Настройте хороший яркий блик, полупрозрачность Opacity ( Непрозрачность ) = 75. В канал Reflection ( Отражение ) можете поместить карту текстуры типа Bitmap ( Растровая карта ) и выбрать в качестве проецируемого изображения какую-нибудь фотографию реальной поверхности воды.
  6. Щелкните на кнопке Create Animation ( Создать анимацию ) свитка Preview & Animation ( Просмотр и анимация ) утилиты reactor ( реактор ), чтобы создать ключи анимации жестких тел и вершин плоскости, имитирующей водную поверхность. После этого можно будет скрыть из вида деформацию Water ( Вода ), воспроизвести анимацию в окнах проекций и выполнить ее визуализацию ( рис .4.67).

а

б

Рис. 4.67. Визуализированные кадры анимации воды в бассейне до начала падения жестких тел ( а ) и после их падения в воду ( б )

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

Свиток Properties объемной деформации Water

В свитке Properties ( Свойства ) объемной деформации Water ( Вода ) можно настраивать следующие параметры:

  • SizeX (Размер поX), SizeY (Размер поY)- размеры сетки объемной деформации;
  • Subdivisions X (Сегментов поX), S ubdivisions Y (Сегментов поY)- число сегментов сетки объемной деформации по каждой из координат;
  • Landcsape ( Ландшафт )- при установке этого флажка оказывается возможным указать с помощью кнопки с надписью < none > ( <нет> ) объект, ограничивающий область действия объемной деформации. Щелкните на кнопке, а затем на объекте геометрической модели сцены, играющем роль емкости для воды. Это может быть как сосуд, в который налита вода, так и ландшафтный объект, изображающий, например, побережье озера. При наличии такого объекта вершины сетки объемной деформации будут анимироваться только до границ касания сетки с объектом. Волны будут отражаться от стенок сосуда или берегов;
  • Wave Speed ( Скорость волн )- скорость распространения гребней волн по поверхности воды;
  • Min Ripple ( Минимальная рябь ), Max Ripple ( Максимальная рябь )- пределы изменения высот генерируемых волн;
  • Density ( Плотность )- коэффициент, задающий плотность воды относительно ее истинного физического значения. Для расчета истинной плотности необходимо данный параметр умножить на 1000кг/м 3 ;
  • Viscosity ( Вязкость ) - задает степень сопротивления воды внешним возмущениям при формировании волн и сопротивления движению тел в воде;
  • Depth ( Глубина ) - задает глубину воображаемой толщи воды.

Остальные параметры свитка Properties ( Свойства ) объемной деформации Water ( Вода ) полностью аналогичны соответствующим параметрам свитка Properties ( Свойства ) модификатора reactor Cloth ( реактор: Ткань ), рассмотренного в разделе <Имитация тканей модулем reactor>.

133 0 850 5
9
2005-12-22
Огромное спасибо , наконец-то понял ,что надо делать кллекцию для работы Реактора .:-D
2006-01-07
RENDER.RU RULLZ!!!!!!!!!!!!!!!!!!!!!!!!
2006-01-30
Блин, народ обленился.Срывает стандартные туторы из макса и кидает. Так уж сложно чтоли на буржуйском осилить руференс. Да там работы то 2 часа на весь реавтор чтоб осилить.....
2006-02-07
Спасибо Михаилу Марову за его статьи и за класную книгу "Эффективная работа 3ds max 5"!!!
2006-06-21
а всплеск
2006-09-11
Есть ценные сведения.
2008-02-19
А мне урок очень помог! Не у всех есть под рукой руководство по реактору. Так что такие уроки тоже нужны!
2008-03-06
Сто пудов видел этот урок не то в референсе, не то в какой-то книге... Точно такой, именно с таким же мячиком =) А на самом деле чему тут учить, тут ничего сложного или непонятного нет. А при работе с программами типа Макса английский знать имзо обязательно хотя бы основы, так что чтение тутора не должно вызывать особых сложностей, тем более там довольно простым языком всё... Короче урок в топку
2008-06-30
Фигня... очень слабый урок
RENDER.RU