Частки і динаміка в Maya

15

Mike Zugschwert, CG-generalist з більш ніж десятирічним досвідом роботи, розповість про симуляції води в Maya.

Симуляцію води я почав із створення геометрії, в якій збирався симулювати воду: склянки й пляшки. При цьому важливо пам’ятати про масштаб моделі, я перевірив, щоб робочими юнітами у мене були встановлені сантиметри, і швидко замоделил необхідні об’єкти в реальному масштабі.

Частки і динаміка в Maya

Тепер я міг додати в сцену частинки і скористатися перевагою пресета nParticle. Нижче меню nParticles > Create nParticles розташовано п’ять опцій дефолтних налаштувань.

Частки і динаміка в Maya

Я вибрав пресет Water в тому ж самому меню, виконав команду Create Emitter. Це створило в сцені емітер типу Omni і об’єкт nParticle. За умовчанням параметр Max Distance емітера типу Omni має значення 0, що означає, що частинки будуть генеруватися в одному певному місці. Це не зовсім підходить для симуляції води, оскільки через сил, керуючих симуляцією, частинки будуть дуже швидко відштовхуватися один від одного. Тому я вибрав емітер, відкрив Attribute Editor і встановив значення 2 параметра Max Distance, розташованого нижче Distance/Direction Attributes. Також я змінив значення параметра Rate на 500 і помістив емітер всередині пляшки.

Частки і динаміка в Maya

Далі мені було необхідно змінити число Substeps у Nucleus Solver’а. За замовчуванням було встановлено 4, що могло призвести до нестабільних симуляциям. Я накрутив його до 12, якщо під час симуляції я побачу, як частинки будуть вибухати або рухатися всередині Collision Objects, я завжди зможу збільшити це число. Також я включив галочку Use Plane, розташовану під налаштуваннями Ground Plane. Це утримає частинки, ті, що схибили повз склянки, від падіння в нескінченність. Якщо я не створив геометрію в початку координат, то можу завжди можу створити в сцені площину, яку буду використовувати як Collider.

Частки і динаміка в Maya

І, нарешті, мені необхідно додати геометрію як об’єкт зіткнення частинок. Я вибрав геометрію і виконав команду nMesh > Create Passive Collider. Це створить нові nRigid-об’єкти в сцені для кожного вибраного об’єкта. У вкладці nRigidShape в Attribute Editor я можу налаштувати такі властивості зіткнення, як товщина (Thickness), відскік (Bounce) і тертя (Friction). Дефолтні налаштування зазвичай непогано справляються з симуляцією.

Тепер я можу прорахувати симуляцію. Дефолтні властивості пресета води відмінно працюють, але я хочу внести кілька правок.

Порада: Якщо ви не використовуєте пресет води, то обов’язково включіть Liquid Simulations і вимкніть Self Collisions. З включеною симуляцією рідини частинки почнуть вести себе подібно воді, виникли завдяки силам притягання і відштовхування, що дозволить їм взаємопроникати. Якщо галочка Self Collide буде включена, вона буде заважати симуляції рідини.

У вкладці nParticleShape в Attribute Editor я починаю змінювати радіус частинок. Чим більше вони будуть, тим менше води мені знадобиться, що також знизить деталізацію симуляції. Для сцени такого масштабу добре підійде радіус .15. Також я змінив значення Radius Scale Input з None на Randomized ID і збільшив Radius Scale Randomize до .1. Це рандомизирует радіус частинок і допоможе запобігти скупчення частинок вздовж стінки, як на зображенні нижче.

Частки і динаміка в Maya

Також я хочу, щоб частинки трохи проникали в склянку так, щоб я міг заповнити меш повністю, не залишаючи проміжку між ним і склянкою. Для цього я встановив для параметра Collide Width Scale значення .7.

Нижче Liquid Simulation розташований атрибут Liquid Radius Scale. Він впливає на те, як сильно частинки проникають один в одного. Мені був потрібен невеликий оверлап, щоб отримати гладкий меш. Дефолтний значення 1 було занадто високим. Я скрутив його до .5, пам’ятаючи при цьому, що чим більше я дозволяю часткам взаємопроникати, тим більше частинок мені знадобиться, щоб наповнити склянку.

Параметр Viscosity трохи змінить поведінку рідини. Густі рідини, такі, як мед або сироп, мають велику в’язкість, в той час, як вода меншу. Я також заключевал у емітера параметр Rate, щоб після 140 кадру він вимкнувся і перестав генерувати воду. Я завжди можу налаштувати таймінг після перегляду першої симуляції. Фінальні налаштування можна побачити на зображенні нижче.

Частки і динаміка в Maya

Для більш швидкого програвання симуляції її необхідно кешувати. Я вибрав nParticles, зайшов в меню nCache і вибрав налаштування команди Create New Cache. Тут я налаштував різні опції і вибрав папку кеша. Зазвичай я використовую налаштування One file per frame, щоб у разі крашу я міг продовжити з того місця, де закінчив, а не перераховувати кеш з самого початку. Після кешування я побачив, що налаштування кешу з’явилися у вкладці Info внизу вкладки Cache в Attribute Editor. Там я міг побачити всі налаштування, використані при створенні кеша, що могло мені допомогти стежити за тим, які параметри мають різні кеш.

Симуляція зайняла 17 хв і 300 кадрів. В кінці я мав 34,750 частинок.

Частки і динаміка в Maya

Для першої симуляції вона виглядала непогано, хоча я хотів ще заанимировать пляшку, щоб вода з неї не лилася постійно в одне і те ж місце. Також я хотів наповнити склянку трохи більше. Напевно, 150.000 частинок, при цьому швидкість склала б 25.000 частинок в секунду за 140 кадрів. Я підвищив Liquid Radius Scale до .7 і знову запустив симуляцію, щоб подивитися, як вона буде виглядати.

Нова симуляція розтягнулася на 380 кадрів і 3 години (все залежить від системних потужностей). У сцені нараховувалася 144, 791 частинка.

Частки і динаміка в Maya

Нарешті у мене вийшла непогана симуляція, а, значить, я міг створювати меш. Я виконав команду Modify > Convert > nParticles to Polygons. Так у мене в сцені з’явився меш, з яким я продовжив працювати. Відображення часток я відключив, щоб прискорити роботу вьюпорта.

Відразу після низки цих операцій я побачив на сцені всього лише пару бульбашок.

Частки і динаміка в Maya

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

Частки і динаміка в Maya

Threshold і Blobby Radius Scale будуть впливати на те, як меш змішується з частками. Threshold зменшує меш, виходячи з щільності частинок.

Mesh Triangle Size впливає на розмір полігонів, з яких генерується меш. Max Triangle Resolution автоматично змінить Mesh Triangle Size, якщо воксельная сітка, яка генерує меш, більше значення Resolution. В основному, для неї встановлено значення 100, і у неї йде понад 100 полігонів на створення всій протяжності меша вздовж однієї з осей, вона змінює розмір трикутників. У більшості випадків, зміна розміру трикутників при симуляції змушує меш лопатися між кадрами, щоб уникнути цього я встановив для цього параметра досить високе значення.

Motion Streak розтягує форму частинок в напрямку руху, створюючи Motion blur. Mesh Smoothing допоможе згладити меш.

Для параметра Mesh Method я намагаюся використовувати значення Quad Mesh, що дозволяє мені працювати з лоупольным мешем, який я потім смужу натисканням клавіші 3. Також я включив галочку Velocity Per Vertex, тому що планував рендер з Motion blur’ом.

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

Частки і динаміка в Maya Частки і динаміка в Maya Частки і динаміка в Maya

Читайте в нашій попередній статті про те, як налити склянку вина в Maya 2015 з допомогою Bifrost.

Хочете знати більше? Приходьте на наші курси 3D-моделювання, скульптинга, композитинга, анімації та VFX.

Журналіст: Альона

Джерело