суббота, 18 марта 2017 г.

Blender: Molecular Script. Документация

Эта статья — русскоязычная версия оригинальной документации Molecular Script для Blender
Molecular Script расширяет функционал систем частиц в Blender, позволяя создавать связи между ними и управлять столкновением частиц. Ниже описаны параметры аддона и их влияние на конечный результат симуляций.
Аддон создавался в первую очередь не как инструмент для физически корректных симуляций, а как удобный и по возможности простой инструмент для художников, позволяющий получить результат, схожий с поведением частиц веществ в реальном мире.

1. Установка аддона

Загрузить подходящую вам версию можно с официального сайта по этой ссылке. После загрузки архива, вы можете распаковать его в папку [папка_с_blender]\[версия_blender]\scripts\addons\ — убедитесь, что туда вы помещаете именно папку molecular из архива. Установить аддон можно и через окно настроек Blender (File > User Preferences) — в разделе Add-ons нажмите кнопку Install From File... и укажите путь к zip-архиву Molecular Script.

2. Как работает Molecular Script

Как уже говорилось выше, этот аддон фактически делает две вещи: связи между частицами и взаимодействие, столкновение частиц друг-с-другом (self-collision).
Self-collision позволяет частицам не проходить сквозь друг-друга (как это обычно работает для всех частиц в Blender, кроме имитирующих жидкость — тип частиц Fluid в настройках Physics — но они имеют т. н. soft collision, «мягкую коллизию»).
Также этот инструмент позволяет связывать частицы друг-с-другом, создавая некое подобие вещества, которое они как бы формируют. Эти связи похожи на рессоры автомобиля, с одной стороны не дающие частицам разлететься, с другой стороны, не позволяющие им сблизиться меньше, чем на определенное расстояние. Также можно задать условия (скорость расхождения частиц), при которых такие связи будут разрываться.

3. Панели и параметры

Прежде всего необходимо активировать сам аддон, установив флажок Molecular Script на панели систем частиц объекта в Blender.

3.1. Density — Плотность

Этот параметр включает автоматический расчет веса частиц на основе заданной плотности в килограммах на кубический метр.
В списке Preset содержатся несколько заготовленных значений, а другие, подходящие для имитируемого вами вещества, можно найти в любом справочнике по физике.
Данный параметр рекомендуется включать, так как это позволяет выполнять более точный расчет для разных по массе частиц. Если он не активен, то значение берется из стандартных настроек частиц Blender.
Следует помнить, что указываемый в нижней части приблизительный вес системы частиц, на самом деле очень приблизительный, полученный простым перемножением объема частицы, ее плотности и количества частиц в системе.

3.2. Collision — Столкновение

В этой группе параметров всё про Self-Collision:
Activate Self Collision — включает расчет столкновений для данной системы частиц.
Activate Collision with others — включает расчет столкновений текущей системы частиц с остальными системами.
Collide only with: — позволяет выбрать группу для взаимодействия. Из доступных 12 групп активная система частиц будет взаимодействовать только с теми системами, для которых установлена та же группа.
Friction — задает силу трения между частицами во время столкновения. Диапазон значений от 0.0 до 1.0 позволяют как исключить любое трение, так и задать максимально возможную силу.
Damping — устанавливает, насколько жестко происходит столкновение. При околонулевых значениях потери энергии минимальны и частицы отскакивают друг-от-друга. Чем ближе значение к 1.0, тем больше энергии теряется при столкновении и частицы будут отскакивать с меньшей силой (как при преобразовании трения в тепло в реальном мире).

3.3 Links — Связи

Вот здесь начинается самое интересное — Activate Particles linking включает просчет связей между частицами, позволяя тем самым создавать из них «материю».
3.3.1. Link at bird — изначальные связи
Здесь устанавливаются связи между частицами в момент рождения.
Search length — максимально необходимое расстояние (в единицах измерения Blender) между двумя любыми частицами на котором аддон будет их связывать. Флажок Relative указывает, что расстояние задано относительно размера частицы (радиуса в терминологии Blender). Автор аддона рекомендует использовать именно относительные расстояния, так как по его мнению это интуитивно проще, например, значение 2.01 в этом случае заставит аддон связать все частицы, которые при равных радиусах практически соприкасаются друг-с-другом, а значение 3.51 свяжет все соприкасающиеся частицы в сетке по горизонтали, вертикали и диагонали. Большее количество связей позволяет создавать более прочные материалы, но и более затратно с точки зрения вычислений.
Max links — максимальное количество связей для каждой частицы. Для большинства случаев рекомендуется значение 8 и выше.
Link Friction — своего рода «вязкость» вещества. Каждая связь подобна шарниру — она позволяет вращаться одной частице вокруг другой в любом направлении. Увеличивая значение этого параметра, вы «затрудняете» эти движения, и возникающие колебания быстрее гасятся.
Tension — (натяжение) увеличивает или уменьшает размер связи относительно начального расстояния между частицами, на котором она создается. Соответственно, значение 1.0 означает, что связь останется точно такого же размера, как в момент возникновения, 0.9 или 1.1 — связь будет на 10% короче или длиннее, чем в момент возникновения. В поле справа от этого параметра можно задать значение случайной вариации длины. Используйте эти значения осторожно, чтобы ваше «вещество» случайно не взорвалось.
Stiff — жесткость связи, то, насколько тяжело сжать или растянуть ее. Значения в районе 1.0 означают практически нерастягиваемую связь, в то время как значения около 0.0 создадут очень мягкие связи. Значения выше 1.0 в большинстве случаев сделают вашу систему частиц нестабильной. Для этого параметра также можно задать случайную вариацию.
Damping — устанавливает степень замедления колебания связи (подобно цилиндру рессора автомобиля). Чем выше это значение по шкале от 0.0 до 1.0, тем быстрее затухают колебания (тем больше вещество становится похоже на глину). Значения больше 1 приведут к «взрыву». Этот параметр также имеет настройку величины случайного отклонения значения.
Broken — это порог степени растяжения или сжатия связей, превышение которого вызовет их разрыв. Например, значение 0.05 означает, что если связь удлинится или сожмется более, чем на 5% от своей нормальной длины, то она будет разорвана. Соответственно, значение 2.00 будет означать возможность растяжения или сжатия связи в 2 раза, прежде чем она порвется. Значение 0.00 вызовет моментальный разрыв связей и, фактически, бесполезно. Параметр также имеет настройку случайных значений.
Same values for compression/expansion — если флажок установлен, то для растяжения и сжатия связей используются одинаковые параметры. Если его снять, то для растяжения (E — expansion) можно задать отдельные значения параметров разрыва (E Broken), смягчения (E Damping) и жесткости (E Stiff).
3.3.2. New Linking (at collision) — новые связи (при столкновении)
Когда значение параметра % linking больше нуля, программа будет создавать новые связи между частицами при их столкновении для симуляции прилипания материалов. Обратите внимание, что для этого необходимо, чтобы столкновения (Self Collision и/или Collision with others) были активны (см. п. 3.2.).
Only links with — новые связи между частицами будут возникать только для частиц выбранной группы.
% linking — вероятность возникновения связи при столкновении двух частиц. Этот шанс рассчитывается для каждого столкновения частиц в каждом суб-кадре (subframe). Можно установить разброс случайных значений параметра.
Все остальные параметры полностью идентичны тем, что были рассмотрены в п. 3.3.1.

3.4. UV-развертка

Установите этот флажок, чтобы запечь UV из развертки эмиттера. При этом сам эмиттер должен иметь UV-развертку иначе данная опция будет недоступна.
UV-информация сохраняется в Angular Velocity частиц как показано на изображении:
Поскольку UV-развертка — двумерная таблица координат для изображения, а Angular Velocity — трехмерная, в третьем измерении аддон сохраняет информацию о расстоянии до поверхности. Так что вы можете назначить различные материалы в зависимости от удаленности частицы от поверхности вещества подобным образом:

3.5. Simulate — Симуляция

После тщательной настройки параметров неплохо бы и посмотреть, что там в итоге получается.
Start FrameEnd Frame — первый и последний кадры симуляции. Соответствуют первому и последнему кадру активной области анимации на timeline.
substep — наиболее важный параметр для симуляции, определяющий количество промежуточных вычислений между двумя кадрами. Чем больше у вас частиц, тем больше нужно таких расчетов. Например, для системы из 10 частиц можно вообще не делать промежуточных расчетов (установить значение в 0), а для системы со 100 тысячами и более частиц необходимо установить значение не ниже 20-30. Иногда система с очень жесткими связями (stiffness) может выглядеть очень мягкой, если количество промежуточных вычислений недостаточно.
CPU used — количество вычислительных потоков процессора, задействованных в расчете симуляции.
Bake all at ending — следует ли запекать все системы частиц с активным Molecular Script по достижению конца процесса симуляции.
Render at ending — запустить ли процесс визуализации (в соответствии с настройками панели Render в Blender) по окончании симуляции. При этом во избежание сюрпризов опцию Bake all at ending следует включить. Важно: до окончания процесса визуализации Blender «зависнет».
Start Molecular Simulation — волшебная кнопка запуска процесса симуляции и высвобождения времени для чашки кофе, прогулки или сна (в зависимости от заданных параметров).
Процесс симуляции всегда можно прервать клавишей Esc на клавиатуре. Вся информация о процессе выводится в системную консоль.

3.6. Tools — Инструменты


Аддон также содержит несколько небольших инструментов, которые могут слегка помочь вам в процессе работы с ним.
3.6.1 Particle UV — UV-развертка частиц
Set Global Uv — устанавливает глобальные UV из текущего кадра и сохраняет в Angular Velocity как показано в п. 3.4. Полезно только для 3D-текстур.
Set Active UV — задает UV на основе UV-развертки активного эмиттера в текущем кадре анимации. Подробнее в п. 3.4.
3.6.2 Substeps Caculator — калькулятор промежуточных вычислений
Пожалуй, самый полезный инструмент, позволяющий рассчитать подходящее значение параметра substep (см. п. 3.5.) для заданного количества частиц.
Current numbers of particles — сколько частиц ваша система имеет в данный момент.
Current substeps — количество суб-вычислений, которое вы установили для данного количества частиц.
Targeted number of particles — число частиц, которое вы рассчитываете получить в итоге симуляции.

4. Полезные советы

1. Аддон работает с уже существующими инструментами Blender вроде частиц-жидкостей (fluid particles), силовыми полями (forces), столкновениями с геометрией (geometry collisions) и т. п.
2. Частицы, создаваемые с выравниванием по сетке (Grid) формируют более стабильную систему, так как создаются на определенном расстоянии. Когда частицы распределяются в пространстве случайным образом, они могут находиться очень близко друг-к-другу на расстоянии, меньше заданных пороговых значений — такие связи будут моментально рваться и/или вынуждать частицы разлетаться друг-от-друга. Они будут взаимодействовать с другими частицами, вызывая цепную реакцию.
3. Если вы используете выравнивание частиц по сетке, убедитесь, что разрешение сетки и размер частиц заданы корректно (см. изображение справа).
4. Всегда кешируйте частицы на диск (особенно, если у вас их много, а анимации состоят из большого количества кадров). Для этого существует галочка Disk Cache в настройках Cache систем частиц Blender. Кэширование в память требует большого ее объема, а риск потерять весь кэш при падении Blender'а очень велик. И убедитесь, что установили уникальное имя файла кэша для каждой системы частиц.
5. Если в самом начале симуляции ваши частицы взрываются, и это не совсем то, чего вы от них ожидали, убедитесь, что Normal Velocity (вкладка Velocity в настройках системы частиц Blender) установлена в значение, отличное от 0.0 (значение по умолчанию).
6. Для достижения хороших результатов рекомендуется установить значения Drag и Damp в физических параметрах частиц в значения, отличные от нуля. Совсем немного вполне достаточно. А флажок Size Deflect благотворно сказывается на расчете столкновений с геометрией.
7. Если вы посмотрите на изображение справа, то заметите различные типы физического поведения частиц (“No”, “Newtonian”, “Keyed” и т. д.). Отключение физики (установка значения в “No”) — хороший способ «зафиксировать» другие системы частиц с включенным аддоном Molecular, чтобы они участвовали только в коллизии и создании связей с активной системой частиц.
8. Всегда тестируйте свои симуляции на небольших системах частиц (до 32 тысяч) и если результат соответствует вашим ожиданиям, увеличивайте количество частиц до необходимого значения.
9. Сворачивание окон Blender ускоряет процесс симуляции. Особенно это заметно на системах с небольшим количеством частиц.
Автор аддона, Jean-Francois Gallant, выражает благодарность всем, кто поддерживает его разработку и надеется, что эксперименты с его детищем принесут вам удовольствие и окажут практическую помощь в работе. Поддержать его можно на официальном сайте Blender Molecular Script.