3D Engineering

...Лучшее из общего.

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Изменять геометрию то

vladirr

Удачной тебе охоты, о Великий Алл! Вот и пересеклись снова наши пути дорожки. Сегодня я намерен рассказать о том, как можно анимировать жидкость, налитую в некую посудину. Что и говорить, скрипты будут, но немного и не больно :), так что пугаться не надо. Ну все, поехали.

Давайте для начала просто построим произвольный цилиндр и представим, что это жидкость в некоторой емкости. Емкость в настоящий момент нам глубоко неинтересна, потому будем работать только с жидкостью. Наша задача - на этом подопытном цилиндре найти и отработать метод изображения анимации жидкости.

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

Присвойте цилиндру модификатор Taper, указав в качестве primary axis X, а в качестве Effect - Z. Давайте разберемся, что нам это дает. В принципе, этого уже достаточно для анимации жидкости в стакане, так как данный модификатор позволяет создать односторонний скос (при наклоне стакана установить поверхность горизонтально) и имитировать запаздывание жидкости вследствие инерции. Проверить это утверждение просто - наклоните цилиндр, к примеру, на 30 градусов вдоль оси Y и постепенно увеличивайте значение amount в параметрах модификатора. Получили жидкость в наклоненном стакане. У меня это вышло при значении 0.5, но здесь все зависит от соотношения длины и ширины цилиндра, чем "толще" цилиндр, тем большее значение придется ввести.

Давайте представим, что этот стакан еще и двигается вдоль оси Х в отрицательном направлении. Жидкость сначала запаздывает, поднимаясь по стенке стакана, затем догоняет, потом поднимается на другую стенку, и этот процесс повторяется, постепенно затухая. Попробуйте задать несколько произвольных значений кривизны curve и убедитесь, что одного модификатора Taper вполне достаточно для задания такого движения.

Ну а что делать, если наклон не вдоль оси Y, да и движение не вдоль оси X? Можно, конечно, сделать два модификатора Taper - по одному на каждую ось и затем управлять ими, но мы пойдем другим путем. Мы вспомним, что модификатор Taper имеет gizmo, которое так же можно анимировать. Воспользуемся поворотом габаритного контейнера относительно оси Z локальной системы координат, - это даст нам возможность имитировать наклон/движение стакана в любом направлении. Самостоятельно убедитесь в правильности последнего заявления.

Анимировать все это безобразие вручную - нелегкий труд, следовательно, заставим компьютер делать это за нас. Для начала вспомним, что появился такой модификатор, как Flex, позволяющий задавать "запаздывание" геометрии. Параметры его довольно просты, потому описывать не буду. Кому интересно, создайте кубик, повесьте на него модификатор, задайте кубику какое-либо движение и просмотрите анимацию. Пять минут на разбор полета методом оценки изменений параметров модификатора и поехали дальше. Легко понять, что просто применить модификатор Flex к нашей жидкости мы не можем - нам нужно, чтобы жидкость оставалась в посуде. Однако мы можем создать систему, управляющую параметрами модификатора Taper используя модификатор Flex.

Удалите цилиндр, поскольку нам он больше не понадобится. Постройте куб со стороной, равной единице, и назовите его Inerbox. Примените к нему модификатор Flex. Настройте видовые экраны, выполнив Zoom Extents All. Что нам это дает? Так как наш бокс под воздействием модификатора flex будет изменять геометрию, то и расстояния между точками противолежащих граней будут изменяться, причем в соответствии с настройками модификатора flex, проще говоря, - по законам инерции, что нам и нужно. Мы не можем напрямую использовать значения смещений между этими точками, но, привязав с помощью контроллера Attachment вспомогательный объект к точке на грани, можем получить значение положения опорной точки этого объекта. Простое выражение, определяющее разность положений между опорными точками бокса и вспомогательного объекта даст нам параметр, управляющий анимацией жидкости. Постройте объект Dummy произвольного размера, назовите его Inerdum. Из этих двух объектов мы и создадим управляющую систему. Для начала привяжем объект Inerdum к боксу, используя контроллер Attachment, - этот контроллер позволяет привязать положение объекта к конкретной точке на грани другого объекта.
Выделив объект Inerdum, перейдите на панель Motion, выберите в списке Assign Controller контроллер положения и нажмите на кнопку изменения контроллера. В раскрывшемся окне выберите контроллер Attachment и нажмите Ok. Раскроется свиток параметров контроллера Attachment.

Нажмите кнопку выбора объекта привязки Pick Object и укажите мышью на Inerbox. Имя бока появится над кнопкой выбора объекта. Активируйте режим установки позиции на грани Set Position и снова укажите на Inerbox. В параметрах позиции появятся значения положения Inerdum относительно той грани, на которую вы указали мышью. Исправьте значения: face=2, A=0.5, B=0. Мы выставили вспомогательный объект по центру верхней стороны бокса, обеспечив, тем самым, максимальную амплитуду колебаний опорных точек объектов относительно друг друга.

Отключите режим Set Position. Обратите внимание,- значениями положения для контроллера Attachment являются величины A и B, определяющие размещение объекта на грани. Нас же интересует положение опорной точки объекта в пространстве, - для этого измените контроллер позиции на List, оставив в списке Attachment. Выберите новый появившийся трек Available и присвойте ему контроллер Безье. Дважды щелкните по нему, чтобы сделать активным.

Остался последний штрих - если просмотреть значение положения вспомогательного объекта, выбрав инструмент Select and Move, и щелкнув по нему правой кнопкой мыши при выделенном объекте Inerdum, то можно увидеть, что это значение по оси Z равно единице. Запомним этот момент, он нам пригодится в дальнейшем. Сохраните сцену. Данная заготовка может пригодиться во многих анимациях, имитирующих инерцию, так что можете не уничтожать ее, закончив урок.

Все, с приготовлениями покончено, давайте делать стакан и воду. Спрячьте на время объекты Inerbox и Inerdum, выполните Zoom Extents All для пустых экранов. Поскольку наша задача заключается в том, чтобы разобраться с анимацией, модели объектов мы будем делать чисто схематически. На экране Front постройте две линии, представляющие собой сечения стакана и фужера.

 

Архив статей

 апр   Май 2020   июн

ВПВСЧПС
   1  2
  3  4  5  6  7  8  9
10111213141516
17181920212223
24252627282930
31 
Julianna Willis Technology

Случайная новость

swatnaum
10.06.2009 16:22 Всё получилось. Похоже ошибка была в том, не перевёл сплайн в editmesh
Спасибо Wasteland!

swatnaum
08.06.2009 19:52 Цитирую Wasteland:

Ок, попробую. Я так понял, скаттер работает только телами. В случае выбора плоскостей он не активен.


Онлайн Wasteland (3D Work)
08.06.2009 19:43 Что-то не так значит сделал) всё с начала попробуй внимательно повторить

swatnaum
08.06.2009 19:23 [quote=Wasteland]

Я немного неправильно написал. При выделении травинки кнопка "scatter" не активна. Только Blobesh и Mesher.Вот


Онлайн Wasteland (3D Work)
08.06.2009 19:14 swatnaum, к объекту ground скаттер ты вообще не должен применять - откуда у тебя там параметр "pick distribution object" ?))
Выдели травинку, примени скаттер, проверь, чтоб стоял параметр use distribution object, нажми "pick distribution object" и кликни на ground

swatnaum
08.06.2009 18:28 В п.29 при выборе Straw01" не активна кнопка"pick distribution object". Она активна только, когда выделен объект "ground". В чём может быть причина этой нестыковочки? Заранее спасибо

HayPro
06.02.2009 10:45 TJT, просто в уроке пропущена одна маленькая деталь: при использовании "Array" нужно скопировать, т.е. выбрать "Copy", тем самым, создать 3 копии травинки, тогда каждая будет изгибаться по-своему. А насчет shineness и shin. strength, я и сам не мог найти эти функции, пока не догадался, что это, как пишет Wasteland, Glossiness и Specular Level. При правильном выполнении всех пунктов получается действительно реалистичная трава. А для большей реальности я добавил еще и чуть пожелтевшую траву =)

varvarvarvarra
11.01.2009 00:47 трава получилась, но с одним жестким недостатком.у меня травинки не нагнулись плавно, а просто повернулись...хотя так впринципи на траву похоже. надеюсь я просто напутала что то. урок понятный, главное внимательность.

s_father
25.11.2008 19:15 Что то не ахти... Тяжелая трава не годится. Нужно чтоб можно было большие площади застелять и с разных ракурсов одинаково хороша видна была бы.

sepia
18.06.2008 21:44 к сожалению у меня нечего не вышла, если создать line по описанию то получаю невидимый в рендере объект.

TJT
02.03.2008 19:25 почемуто я начинаю изгибать траву, гну одну а вместе с ней сами по себе гнуться остальные, что не так?


Онлайн Wasteland (3D Work)
18.10.2007 22:39 Параметры shineness и shin. strength равносильны параметрам glossiness и Specular Level соответственно.

Андрей Шарапов
25.06.2006 22:06 урок хороши, но я так и не нашел в настройках материала: shineness и shin. strength
мог бы поточнее сказать где ты нашел это ?




далее