Анімація рідини - уроки 3ds max

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

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

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

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

Давайте уявимо, що цей стакан ще й рухається уздовж осі Х в негативному напрямку. Рідина спочатку запізнюється, піднімаючись по стінці склянки, потім наздоганяє, потім піднімається на іншу стінку, і цей процес повторюється, поступово затухаючи. Спробуйте поставити кілька довільних значень кривизни curve і переконайтеся, що одного модифікатора Taper цілком достатньо для завдання такого руху.

Ну а що робити, якщо нахил не вздовж осі Y, та й рух не вздовж осі X? Можна, звичайно, зробити два модифікатора Taper - по одному на кожну вісь і потім управляти ними, але ми підемо іншим шляхом. Ми згадаємо, що модифікатор Taper має gizmo, яке так само можна анімувати. Скористаємося поворотом габаритного контейнера щодо осі Z локальної системи координат, - це дасть нам можливість імітувати нахил / рух склянки в будь-якому напрямку. Самостійно переконайтеся в правильності останньої заяви.

Видаліть циліндр, оскільки нам він більше не знадобиться. Побудуйте куб зі стороною, що дорівнює одиниці, і назвіть його 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 і надайте йому контролер Безьє. Двічі клацніть по ньому, щоб зробити активним.

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

Схожі статті