的刚性主体的中心(原点)是相同的质量中心和为此的重要性质为所述物理仿真。如果你愿意,你可以使用btCompoundShape
“移动”这个中心,但这也会影响物理模拟,因此可能不会给你满意的结果。
或者,您可以补偿btMotionState
中物理原点和视觉原点的差异。例如,通过将ModelInstance#transform
设置为提供的worldTransform
乘以包含偏移的a 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
文件(例如,使用fbx-conv
) (如.fbx
,但不.obj
)
我一直在读你2天的教程现在,搜索整个网络找出了问题,直到我发现这一点。哇,这为我解决了一切。 Tnx很多! –