Установите Collide Width 0ffset=0.1. Просто так, на будущее.

Для тех обескураженных умов, которые окончательно запутались в алгоритмах определения толщины кривых при вычислениях коллизий, приведу общую формулу, задающую такую толщину:

W = Clump Width * Clump Width Scale + Hair Width + Collide Width Offset

Кстати, увидеть эту толщину можно, и не отображая штрих Paint Effects. Два последних атрибута в разделе Collisions позволяют нарисовать на экране что-то похожее на кружки, символизирующие динамическую толщину кривых.

Включите Draw Collide Width, и вы увидите вдоль каждой кривой небольшие кружки (а если вы забыли установить Collide Width 0ffset=0.1, тогда просто точки). Правда, для того, чтобы они появились, надо хотя бы немного сдвинуть камеру или перейти в следующий кадр. Чтобы кружков нарисовалось побольше, установите Draw Collide Skip=0. Если они вас раздражают, выключите их немедленно.

Кстати, вышеприведенная формула используется и при расчетах взаимных столкновений между кривыми. По умолчанию взаимодействие между отдельными кривыми не вычисляется, и для того, чтобы его задать, надо включить галку Self Collide в разделе Collisions.

Понятно, что если вычислять взаимодействие между абсолютно всеми кривыми, то не поможет никакой апгрейд процессора, поэтому атрибут Num Collide Neighbors задает, со сколькими соседними кривыми будет взаимодействовать каждая кривая в системе волос.

Атрибут Repulsion задает степень отталкивания друг от друга, a Static Cling имитирует силу притяжения, похожую на прилипание волос друг к другу вследствие статического электричества. Можете поэкспериментировать с этими атрибутами и отметить, как падает производительность просчета динамики при включенном взаимодействии кривых. Не забудьте выключить его для дальнейших экспериментов.

Сейчас, когда кривые распрямились, самое время опять сохранить текущее положение как начальное.

Выберите все кривые и выполните операцию: Hair=>Set Start Position=>From Current.

Вернитесь в первый кадр.

Сохраните сцену (hairCylinderTorus.ma).

Примечание. Если вас смущают мелкие биения, пробегающие по кривым, то помните, что мы работаем с абсолютно неупругими веревками. Если вы хотите, чтобы они абсолютно застыли на месте, сделайте воздух совсем вязким (Drag=1). Если этот метод вам не нравится, можете вступить на скользкий путь игры с Iteration и Damp.

Нас дрожание не смущает, но немного конфузит форма кривых. Совершенно очевидно, что количества контрольных точек на кривых немного не хватает для придания им более гибкой формы. Однако количество контрольных точек определялось только при создании и не фигурировало среди атрибутов объекта hairSystem. Оказывается, можно определять количество сегментов для каждой отдельной кривой, так же, как и ее степень и многие другие свойства. Для того, чтобы изменить эти свойства, нужно добраться до индивидуальной природы каждой кривой. Этим мы сейчас и займемся. А я напомню, что мы решили проблему столкновений без дополнительного увеличения числа точек, и если бы форма и «гнучесть» кривых нас устраивала, не было бы необходимости увеличивать количество сегментов.


⇐ вернуться назад | | далее ⇒