首先我们打开物理资产:

影响物理动画的是两个,一个是Profile里面物理动画的配置,还有一个是本身Body 上面的配置

一. Body的设置

  1. Mass ,默认是根据你Body上的体积自动计算的,我们可以更改。最终影响的是惯性
  2. LinearDamping:线性阻尼。控制Body的线性速度减缓强度。值越大,速度减小越快。
  3. AngularDamping:角速度阻尼。控制Body的角速度减缓强度。值越大,速度减小越快。

(以上两个数值,若启用PhysicalAnimationProfile,一般不再设置这两个数值,Profile的值也影响该效果)

  1. Enable Gravity:是否启用重力。关闭后不受重力影响,只受Body的惯性影响。

  2. CollisionReponse:是否和外部物体碰撞。需要和外部物体碰撞时打开,如在人群中穿行和碰墙壁

二. Limit的设置

原则上是根据人体骨骼活动范围设置limit,并且所有动作都应在limit中运动。为了方便,可把所有limit设为free,通过Physical Animation Profile来约束,Profile无法满足的,再去设置个别骨骼的limit,如Spine。

三. Physical Animation Profile

打开Profile

选择一个已经有的prfile,这个名字对应的配置是可以在蓝图里指定的。

选择完成后,就可以看不同的刚体对应的物理参数

  1. Is Local Simulation:是在世界空间还是在局部空间,判断移动Kinematic时是全局还是相对父Body的。目前从代码来看我们用世界空间的比较好。
  2. Orientation Strength:用于更正方向误差的力。值越大,越靠近动画的角度
  3. Angular Velocity Strength:用于更正角速度误差的力。值越大,速度稳定(向动画靠近)的越快。
  4. Position Strength:用于更正线性位置误差的力。仅可用于非局部模拟。值越大,越靠近动画的位置。
  5. Velocaty Strength:用于更正线性速度的力。仅可用于非局部模拟。值越大,速度稳定(向动画靠近)的越快。
  6. Max Linear Force:用于更正线性误差的最大力。(设为0)
  7. 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)。