Physics Control Component浅析

Tags
Published
Author
原有概念:
Body:
  • 可以包含多个形状,通常只会包含一个胶囊体或长方体
  • 是否启用物理,是否启用重力,以及质量、Linear Damping、Angular Damping等物理参数
  • 对应物理引擎中的Rigidbody(PhysX的PxRigidActor或Chaos的FSingleParticlePhysicsProxy)
  • 可以理解为骨骼+骨骼的物理属性
Constraint:
  • 父子Body之间的位移和旋转约束(Free/Limited/Locked),可以单独设置任意一个轴的约束类型
    • 如果模拟关节的话,位移约束应选择Locked,旋转约束选择Limited,这样骨骼不会脱离,而是围绕关节在一定角度范围旋转
  • 还包括是否启用碰撞、硬度(Stiffness)、阻尼(Damping)、恢复系数(Restitution)等参数
  • 可以理解为关节
Constraint Profile:
  • 多个Constraint的配置,可以创建多个Constraint Profile,在运行时切换
 
新增概念:
Body Modifier:
  • 一个Body Modifier对应一个Body
  • 可以修改Body是否启用物理、是否启用重力等
  • 在UPhysicsControlComponent的Tick里执行
  • 命名规则是”BoneName_NUMBER”
 
Body Modifier Set:
  • 对应多个Body Modifier
  • 内置了”All”Set,其他Set需要我们自己创建
  • 通过UPhysicsControlComponent::CreateControlsAndBodyModifiersFromLimbBones函数可以方便地为四肢创建Body Modifier Set,并且为四肢中的每个骨骼都创建一个Body Modifier
 
Control:
  • 一个Control对应一个Constraint,Control会创建FConstraintInstance
  • 可以修改Constraint是否开启碰撞、硬度(Stiffness/Strength)、阻尼(Damping)、Max Force、Max Torque等参数
  • 在UPhysicsControlComponent的Tick里执行
  • Control的命名规则是”ParentBoneName_ChildBoneName_NUMBER”
 
Control Set:
  • 对应多个Control
  • 内置了”WorldSpace”和”ParentSpace”两个Set,其他Set需要我们自己创建
  • 通过UPhysicsControlComponent::CreateControlsAndBodyModifiersFromLimbBones函数可以方便地为四肢创建Control Set,并且为四肢中的每个骨骼都创建一个Control,每个Limb创建两个Set,命名为ParentSpace_LimbName和WorldSpace_LimbName
 

被击

Body配置:
  • Linear 0
  • An 0.01
 
Constraint配置
  • 全部勾选Disable Collision
  • Projection Linear Tolerance和Projection Angular Tolerance全部清零