刚体的中心(原点)与质心相同,因此是物理模拟的重要属性。如果你愿意,你可以使用 a“移动”这个中心btCompoundShape
,但这也会影响物理模拟,因此可能不会给你满意的结果。
或者,您可以补偿btMotionState
. 例如,通过设置ModelInstance#transform
提供的worldTransform
乘以Matrix4
包含偏移量的实例(Matrix4#translate
例如使用)。
然而,这可能只是让它变得比它需要的更复杂。你可以说,真正的问题是为什么你要偏移模型的中心与身体相比?例如,在您的第二张图像中,模型的中心看起来与第一张图像中的相同。您只移动了Node
,基本上表明您要为ModelInstance#transform
成员提供初始值。ModelInstance
您可以通过如下实例化来实现这一点:
modelInstance = new ModelInstance(model, "coneNode", true);
替换"coneNode"
为在建模应用程序中创建的节点名称。最后一个 ( true
) 参数告诉 ModelInstance 将其transform
成员设置为您在建模应用程序中给它的转换。如果需要,您可以调用modelInstance.transform.translate(x, y, z);
或相对modelInstance.transform.trn(x, y, z);
于此转换移动 modelInstance 。
可以在这里找到更深入的解释:http: //blog.xoppa.com/loading-a-scene-with-libgdx/
请注意,这仅在您使用.g3db
或从支持节点转换的文件格式(例如,但不支持)创建的.g3dj
文件(例如 using )时才有效fbx-conv
.fbx
.obj