可考虑二阶系统,对于目标方向马达而言,强度是位移项系数,因为目标是从A点->B点,力是基于位移和位移项系数计算的。对于目标速度而言,强度是微分项系数,因为速度的计算是通过阻尼(微分项系数)计算的。
这样在C++代码中使用
void FConstraintInstance::SetAngularDriveParams(float InSpring, float InDamping, float InForceLimit)
就清晰了,InSpring代表的是位移项系数,InDamping代表的是微分(速度)项系数,InForceLimit是最终出力的clamp,使用目标角度时应设置InSpring,使用目标速度时应设置InDamping。
看这个文本框的源码也是这样写的,target velocity这里的strength对应的是三个电机的damping
TSharedRef<SWidget> DampingSlerpWidget = ConstraintDetails::CreateTriFloatWidget(DampingSlerpProperty, TwistDriveProperty->GetChildHandle(GET_MEMBER_NAME_CHECKED(FConstraintDrive, Damping)), SwingDriveProperty->GetChildHandle(GET_MEMBER_NAME_CHECKED(FConstraintDrive, Damping)), LOCTEXT("EditStrength", "Edit Strength"));
target orientation的strength对应的是三个电机的stiffness
TSharedRef<SWidget> OrientationStrengthWidget = ConstraintDetails::CreateTriFloatWidget(StiffnessSlerpProperty, TwistDriveProperty->GetChildHandle(GET_MEMBER_NAME_CHECKED(FConstraintDrive, Stiffness)), SwingDriveProperty->GetChildHandle(GET_MEMBER_NAME_CHECKED(FConstraintDrive, Stiffness)), LOCTEXT("EditStrength", "Edit Strength"));
0
暂无讨论