默认情况下,Panda3D中的BulletGenericConstraint沿正 X 轴定向。setAngularLimit方法只能用于沿 X、Y 或 Z 轴进行设置。如何通过 BulletGenericConstraint 连接两个不与任何轴正交的物体?
也就是说,我如何将 BulletGenericConstraint定向到沿任意矢量的方向,而不是沿 X、Y 或 Z 轴?
默认情况下,Panda3D中的BulletGenericConstraint沿正 X 轴定向。setAngularLimit方法只能用于沿 X、Y 或 Z 轴进行设置。如何通过 BulletGenericConstraint 连接两个不与任何轴正交的物体?
也就是说,我如何将 BulletGenericConstraint定向到沿任意矢量的方向,而不是沿 X、Y 或 Z 轴?
BulletGenericConstraint 接受两个“框架”参数,每个参数都是一个 TransformState 对象。我相信您可以使用这些来指定受约束影响的两个物体之间的相对旋转。
TransformState 接口使用起来有点棘手,但一旦掌握了它就很容易使用。转换状态使用一种特殊的缓存,使它们不可变。您对其执行的每个 setX 操作都不会修改对象,而是返回一个新的 TransformState 对象,并应用了请求的操作。
使用已在节点上应用的 TransformState 对象可能是最简单的方法,使用getTransform()
、getNetTransform()
或getTransform(otherNode)
。或者,您可以从平移和一组 HPR 角度构造一个 TransformState 对象:
ts = TransformState.makePosHpr(pos, hpr)