Dynamic Bone学习笔记
Dynamic Bone将物理学应用于角色的骨骼或关节。
通过简单的设置,角色的头发,布料,胸部或任何部分都会运动得更加真实。
基本设置:
1.准备一个支持Mecanim或者legacy动画的角色。
2.选择要应用Dynamic Bone的游戏对象。
3.在组件菜单中,选择Dynamic Bone -> Dynamic Bone。
4.在inspector中,设置root object。
5.调整参数(请参阅下面的详细说明)。
如果需要,可以添加碰撞体:
1.选择附加碰撞体的游戏对象。
2.在组件菜单中,选择Dynamic Bone -> Dynamic Bone Collider。
3.调整碰撞体的位置和大小。
4.在Dynamic Bone组件的Colliders中,增加Dynamic Bone Collider。
Dynamic Bone组件各种设置:
-
Root:受到影响的层次结构的根节点。
-
Update Rate:内部物理模拟速率,以每秒帧数为单位。
-
UpdateMode
Normal:正常更新。
AnimatePhysics:与物理计算同步更新,以便与物理引擎同步。
UnscaledTime:独立于Time.timeScale的更新。 -
Damping:阻尼,骨骼运动的快慢。
-
Elasticity:弹性,用于将每个骨骼返回到原始方向的力。
-
Stiffness:刚度,骨骼的原始方向会保留多少。
-
Inert:惰性,在物理模拟中会忽略多少角色的位置变化。
-
Radius: 每个骨骼都可以是与碰撞器碰撞的球体,半径描述球体的大小。
-
Damping Distrib, Elasticity Distrib, Stiffness Distrib, Inert Distrib, Radius Distrib:参数如何在骨骼层次结构上变化,曲线值将乘以相应的参数。
-
End Length:如果不为零,则在变换层次结构的末尾生成额外的骨骼,将在此长度上乘以最后两个骨头的距离。
-
End Offset:如果不为零,则在变换层次结束时生成额外的骨骼,
offset是局部空间的偏移。 -
Gravity:在世界空间的作用于骨骼的重力。部分适用于角色的初始姿势的力会被取消。
-
Force:在世界空间中作用于骨骼的力。
-
Colliders:与骨骼相互作用的碰撞体。
-
Exclusions:排除在物理模拟之外的骨骼。
-
Freeze Axis: 限制骨骼在指定平面上移动。
-
Distant Disable, Reference Object, Distance To Object
如果角色远离相机或玩家,则自动禁用物理模拟。
如果没有参考对象,则使用默认main camera。
Dynamic Bone Collider组件各种参数:
-
Center:位于物体的局部空间中的碰撞体的中心位置。
-
Radius:球体或胶囊碰撞体的半径,受比例缩放影响。
-
Height:胶囊碰撞体,包括两个半球,受比例缩放影响。
-
Direction:胶囊碰撞体的朝向。
-
Bound: 将骨骼约束到边界外部或内部。
API使用参考:
-
public void SetWeight(float w);
控制物理计算与现有动画的融合。 -
public void UpdateParameters();
在运行时更新参数,在修改参数后调用此函数。