И так, вопрос возникал у многих, и задавали мне его довольно часто, но точного ответа дать не мог, т.к к не анимировал раму вообще, считаю что это лишнее. Но чего не сделаешь ради неугомонных мододелов.
Будем делать на примере стандартного МАЗ-а 537:
Первое что нужно сделать, так это физическую модель. Но их естественно должно быть две, т.к одна часть рамы будет статична, а другая динамична. Подумайте над тем, где будет происходить излом рамы, там же будет пересечение физических моделей:
После того как мы сделали cdt, нужно подумать над костями и иерархии. Делаем две кости примерно по середине тех cdt которые мы делали. Одна кость на cdt. Первая ость, та что у кабины, будет называться BoneChassisFront, а задняя BoneChassisRear.
Давайте разберемся с иерархией, расписывать как ее делать не буду, т.к об этом я писал в предыдущих уроках.
Кость BoneChassisFront будет на вершине иерархии, что означает - все объекты ей подчиняются, так же как и кость BoneChassisRear. Задняя cdt подчиняется кости BoneChassisRear:
Сама модель маза называется MazChassis. В модель добавляем модификатор Skin, в который включаем кости BoneChassisFront и BoneChassisRear.
Соответственно зона действия костей, будет пересекаться в месте изгиба и в месте пересечения cdt.
На этом в максе настройка закончена.
Переходим к настройке xml
В PhysicsModel пишем:
<Body
Mass="8000"
CenterOfMassOffset="(0.0; -0.8; 0)"
ImpactType="Truck"
CreateSubstanceParams="true"
>
<Body
ModelFrame="BoneChassisRear"
Mass="11000"
CenterOfMassOffset="(0.0; -0.2; 0)"
ImpactType="Truck"
CreateSubstanceParams="true"
>
<Constraint
Type="Ragdoll"
PlaneAxis="(0; 0; 1.0)"
TwistAxis="(1.0; 0; 0)"
Cone="15"
TwistMin="-15"
TwistMax="15"
PlaneMin="0"
PlaneMax="0"
PivotOffset="(1.8; 0.2; 0.0)"
>
<PlaneMotor
Type="Spring"
Spring="600000"
Damping="60000"
/>
<TwistMotor
Type="Spring"
Spring="300000"
Damping="60000"
/>
</Constraint>
</Body>
</Body>
Как видно, указана одна кость BoneChassisRear, т.к является динамической.
Это оси отклонения:
PlaneAxis="(0; 0; 1.0)"
TwistAxis="(1.0; 0; 0)"
Угол отклонения:
TwistMin="-15"
TwistMax="15"
И другие настройки связанные с пружинистостью.
Ну и не забывайте про то, что нужно будет привязывать анимацию мостов к отклоняющейся задней части. В конце приписываем это дело:
<Wheel
_template="Wheel"
ParentFrame="BoneChassisRear"
DiffGroup="axle2"
>
<Suspension Hardpoint=" (-1.192; 0.564; 1.091) " />
</Wheel>
<Wheel
_template="Wheel"
ParentFrame="BoneChassisRear"
DiffGroup="axle2"
>
<Suspension Hardpoint=" (-1.192; 0.564; -1.091) " />
</Wheel>
<Wheel
_template="Wheel"
ParentFrame="BoneChassisRear"
DiffGroup="axle3"
>
<Suspension Hardpoint=" (-2.886; 0.564; 1.091) " />
</Wheel>
<Wheel
_template="Wheel"
ParentFrame="BoneChassisRear"
DiffGroup="axle3"
>
<Suspension Hardpoint=" (-2.886; 0.564; -1.091) " />
</Wheel>
ParentFrame="" - тот самый параметр отвечающий за привязку.
На этом урок закончен. Не забывайте про иерархию и перепроверяйте все настройки.
P.S По тому же принципу делается и анимация кренения и отклонения кабины, стой лишь разницей что кабина должна быть отдельным объектом от рамы с собственной cdt и костью(пример Камаз).