UE4物理动画参数
首先我们打开物理资产:
影响物理动画的是两个,一个是Profile里面物理动画的配置,还有一个是本身Body 上面的配置
一. Body的设置
- Mass ,默认是根据你Body上的体积自动计算的,我们可以更改。最终影响的是惯性
- LinearDamping:线性阻尼。控制Body的线性速度减缓强度。值越大,速度减小越快。
- AngularDamping:角速度阻尼。控制Body的角速度减缓强度。值越大,速度减小越快。
(以上两个数值,若启用PhysicalAnimationProfile,一般不再设置这两个数值,Profile的值也影响该效果)
-
Enable Gravity:是否启用重力。关闭后不受重力影响,只受Body的惯性影响。
-
CollisionReponse:是否和外部物体碰撞。需要和外部物体碰撞时打开,如在人群中穿行和碰墙壁
二. Limit的设置
原则上是根据人体骨骼活动范围设置limit,并且所有动作都应在limit中运动。为了方便,可把所有limit设为free,通过Physical Animation Profile来约束,Profile无法满足的,再去设置个别骨骼的limit,如Spine。
三. Physical Animation Profile
打开Profile
选择一个已经有的prfile,这个名字对应的配置是可以在蓝图里指定的。
选择完成后,就可以看不同的刚体对应的物理参数
- Is Local Simulation:是在世界空间还是在局部空间,判断移动Kinematic时是全局还是相对父Body的。目前从代码来看我们用世界空间的比较好。
- Orientation Strength:用于更正方向误差的力。值越大,越靠近动画的角度
- Angular Velocity Strength:用于更正角速度误差的力。值越大,速度稳定(向动画靠近)的越快。
- Position Strength:用于更正线性位置误差的力。仅可用于非局部模拟。值越大,越靠近动画的位置。
- Velocaty Strength:用于更正线性速度的力。仅可用于非局部模拟。值越大,速度稳定(向动画靠近)的越快。
- Max Linear Force:用于更正线性误差的最大力。(设为0)
- Max Angular Force:用于更正角度误差的最大力。(设为0)
四.Constraint Profile
功能:局部控制。关节驱动身体靠近动画,靠近动画的姿势,而不影响Body的属性。如果靠PhysicalAnimationProfile驱动,会导致Body过于僵硬无法移动,ConstraintProfile解决了这一个问题,但运动时需要PhysicalAnimationProfile去稳定Body的位置(全局的)。
原理:设置Constraint的Motor,setDrive驱动关联的两个Body到达动画的相对Rotation。
SkeletalMeshComponent需要设置Update Joints From Animation为true.
Angular Drive Mode需要设置为Twist and Swing,Motor才会生效。
Target Orientation: 不必设置,Update Joints From Animation会取动画来设置该Orientation。
Strength:向动画靠近的强度。值越大越靠近,10000的值基本和动画一致。
Target Velocity: 设为0即可。可理解为停下的快慢。 待做:添加Update Velocity From Animation,从动画中取得目标速度。
Strength: 值越大,当前速度越靠近目标速度。若Target Velocity为0,值越大,则移动速度越慢(靠近0)。