По просьбе Новенькой привожу адаптацию урока по созданию штор (вариант 2).
Итак, поехали:
1. Создаем полотно штор, которое мы в дальнейшем будем сворачивать. Я создал poly plane размером 2х2.5 метра, разрешением 50х50. Понятно, что чем больше полигонов в объекте, чем точнее будет отрабатываться симуляция, но и работать это будет медленнее. Стоит иметь в виду что после того, как мы сделаем из этой плоскости nCloth, у нас еще будет возможность управлять детализацией.
2. Далее создаем верхнюю планку, шнурок и пол. Все это — простые poly cubes и poly plane в роли пола. Про помощи нехитрой анимации данных объектов мы будем придавать форму нашим шторам — планку и шнурок будем масштабировать, поэтому их pivot нужно перенести на их края.
3. Теперь проанимируем эти объекты.
Верхнюю плашку мы будем масштабировать, чтобы собрать шторы к краю.
Среднюю — тоже масштабировать (еще можно повращать), чтобы создать обвязку шнурком.
Пол — поднимать вверх для создания складок внизу штор (это по желанию).
Я добавил ключи анимации всех трех объектов в 200м кадре, чтобы добиться плавности работы симуляции.
4. Создаем из полотна шторы nCloth объект. Выделяем его и nMesh > Create nCloth. Так как сцена была создана с units=cm, то тут же для созданного солвера nucleus1 меняем space scale на 0.01 (почему так — ищем в хелпе описание ноды nucleus1). А на саму штору накидываем пресет; я выбрал silk (конечно же, вам ничего не будет стоить прочитать про параметры динамики nCloth и настроить все вручную как надо). Тут же можно настроить толщину шторы (параметр Thickness в разделе Collisions) на что-нибудь поменьше, например, 0.1 вместо 0.8 по умолчанию. Это сантиметры.
5. Теперь нам необходимо соединить шторы с верхней планкой и шнурком, то есть надо создать constraint.
Для этого выделяем верхний ряд вершин у полотна шторы и сам объект планки, далее nConstrainst > Point to Surface. Как нетрудно догадаться из названия пункта меню, только что мы соединили верхние точки к плоскости объекта планки.
6. То же самое и со шнурком. При помощи дрожащей руки (это опционально) и Lasso Tool выделяем вершины, расположенные вдоль куба, изображающего из себя шнурок. Ультра-мега точность в выделении здесь не особо важна. Далее дополнительно выделяем куб шнурка и снова nConstrainst > Point to Surface.
7. Осталось добавить в нашу динамику пол, выбрав его и сделав nMesh > Create Passive Collider. Как вариант, можно было сделать подборку штор снизу по полу, анимируя параметр Plane Origin в атрибутах солвера nucleus1, не забыв при этом включить Use Plane — это собственно невидимый пол, встроенный в солвер.
8. Теперь в Time Slider ставим кадров побольше (например, 500), убеждаемся, что режим проигрывания выбран play every frame (для корректной отработки динамики) и запустить play. И вот что у нас получилось:
Что-то похожее на собранную штору. Однако, как мы видимо, у нас случилось много проникновений материала шторы сквозь саму себя (это черные области на вставке справа снизу, там отключен Two Sided Lighting).
9. Качество self collisions регулируется параметром Max Self Collide Iteration у шторы в разделе Quality Settings. Увеличив его до с 4 до 12, получим симуляцию поаккуратнее:
10. Глобально качество симуляции управляется из раздела Solver Attributes солвера nucleus1 — это параметры Substeps и Max Collision Iteration. Как несложно узнать из F1, Substeps — это количество дополнительных шагов (вычислений), которые будут производиться за один кадр симуляции. А Max Collision Iterations — максимальное количество вычислений коллизий (и внутренних и межобъектных) на каждый шаг.
Повысив значения этих параметров до 6 и 8 (3 и 4 было по умолчанию) соответственно, мы вообще избавимся от взаимопроникновений шторы:
11. Когда мы останемся довольны формой получившихся штор, нам останется сделать duplicate шторы для того, чтобы получить конечную геометрию, которую можно дополнительно сгладить.
На картинке слева направо: полученная геометрия > сглаженная при помощи Smooth Mehs Preview сетка > конечный вид шторы.
12. Остается только назначить материал (как?) и отрендерить.
Я же здесь отрендерил попроще:
Итак, поехали:
1. Создаем полотно штор, которое мы в дальнейшем будем сворачивать. Я создал poly plane размером 2х2.5 метра, разрешением 50х50. Понятно, что чем больше полигонов в объекте, чем точнее будет отрабатываться симуляция, но и работать это будет медленнее. Стоит иметь в виду что после того, как мы сделаем из этой плоскости nCloth, у нас еще будет возможность управлять детализацией.
2. Далее создаем верхнюю планку, шнурок и пол. Все это — простые poly cubes и poly plane в роли пола. Про помощи нехитрой анимации данных объектов мы будем придавать форму нашим шторам — планку и шнурок будем масштабировать, поэтому их pivot нужно перенести на их края.
3. Теперь проанимируем эти объекты.
Верхнюю плашку мы будем масштабировать, чтобы собрать шторы к краю.
Среднюю — тоже масштабировать (еще можно повращать), чтобы создать обвязку шнурком.
Пол — поднимать вверх для создания складок внизу штор (это по желанию).
Я добавил ключи анимации всех трех объектов в 200м кадре, чтобы добиться плавности работы симуляции.
4. Создаем из полотна шторы nCloth объект. Выделяем его и nMesh > Create nCloth. Так как сцена была создана с units=cm, то тут же для созданного солвера nucleus1 меняем space scale на 0.01 (почему так — ищем в хелпе описание ноды nucleus1). А на саму штору накидываем пресет; я выбрал silk (конечно же, вам ничего не будет стоить прочитать про параметры динамики nCloth и настроить все вручную как надо). Тут же можно настроить толщину шторы (параметр Thickness в разделе Collisions) на что-нибудь поменьше, например, 0.1 вместо 0.8 по умолчанию. Это сантиметры.
5. Теперь нам необходимо соединить шторы с верхней планкой и шнурком, то есть надо создать constraint.
Для этого выделяем верхний ряд вершин у полотна шторы и сам объект планки, далее nConstrainst > Point to Surface. Как нетрудно догадаться из названия пункта меню, только что мы соединили верхние точки к плоскости объекта планки.
6. То же самое и со шнурком. При помощи дрожащей руки (это опционально) и Lasso Tool выделяем вершины, расположенные вдоль куба, изображающего из себя шнурок. Ультра-мега точность в выделении здесь не особо важна. Далее дополнительно выделяем куб шнурка и снова nConstrainst > Point to Surface.
7. Осталось добавить в нашу динамику пол, выбрав его и сделав nMesh > Create Passive Collider. Как вариант, можно было сделать подборку штор снизу по полу, анимируя параметр Plane Origin в атрибутах солвера nucleus1, не забыв при этом включить Use Plane — это собственно невидимый пол, встроенный в солвер.
8. Теперь в Time Slider ставим кадров побольше (например, 500), убеждаемся, что режим проигрывания выбран play every frame (для корректной отработки динамики) и запустить play. И вот что у нас получилось:
Что-то похожее на собранную штору. Однако, как мы видимо, у нас случилось много проникновений материала шторы сквозь саму себя (это черные области на вставке справа снизу, там отключен Two Sided Lighting).
9. Качество self collisions регулируется параметром Max Self Collide Iteration у шторы в разделе Quality Settings. Увеличив его до с 4 до 12, получим симуляцию поаккуратнее:
10. Глобально качество симуляции управляется из раздела Solver Attributes солвера nucleus1 — это параметры Substeps и Max Collision Iteration. Как несложно узнать из F1, Substeps — это количество дополнительных шагов (вычислений), которые будут производиться за один кадр симуляции. А Max Collision Iterations — максимальное количество вычислений коллизий (и внутренних и межобъектных) на каждый шаг.
Повысив значения этих параметров до 6 и 8 (3 и 4 было по умолчанию) соответственно, мы вообще избавимся от взаимопроникновений шторы:
11. Когда мы останемся довольны формой получившихся штор, нам останется сделать duplicate шторы для того, чтобы получить конечную геометрию, которую можно дополнительно сгладить.
На картинке слева направо: полученная геометрия > сглаженная при помощи Smooth Mehs Preview сетка > конечный вид шторы.
12. Остается только назначить материал (как?) и отрендерить.
Я же здесь отрендерил попроще: