Le centre (origine) du corps rigide est le même que le centre de masse et à cet effet une propriété importante pour la simulation physique. Vous pouvez "déplacer" ce centre en utilisant un btCompoundShape
si vous le souhaitez, mais cela influencera également la simulation physique et ne vous donnera probablement pas de résultats satisfaisants. Vous pouvez également compenser la différence d'origine physique et d'origine visuelle dans votre btMotionState
. Par exemple, en définissant ModelInstance#transform
sur worldTransform
fourni multiplié par l'instance Matrix4
qui contient le décalage (utilisez par exemple Matrix4#translate
).
Cependant, ceci est probablement juste le rendant plus complexe que nécessaire. Vous pourriez dire que la vraie question est pourquoi vous voulez compenser le centre du modèle par rapport au corps? Par exemple, dans votre deuxième image, le centre du modèle semble être le même que dans la première image. Vous avez uniquement déplacé le Node
, indiquant en principe que vous souhaitez fournir une valeur initiale au membre ModelInstance#transform
. Vous pouvez y parvenir en instancier le ModelInstance
comme suit:
modelInstance = new ModelInstance(model, "coneNode", true);
Remplacer "coneNode"
avec le nom du noeud tel que créé dans votre application de modélisation. Le dernier argument (true
) indique à ModelInstance de définir son membre transform
sur la transformation que vous lui avez donnée dans l'application de modélisation. Au besoin, vous pouvez appeler le modelInstance.transform.translate(x, y, z);
ou modelInstance.transform.trn(x, y, z);
pour déplacer le modèleInstance relative à cette transformation.
Une analyse plus approfondie explication de ce qui peut être trouvé ici: http://blog.xoppa.com/loading-a-scene-with-libgdx/
Notez que cela ne fonctionne que si vous utilisez des fichiers .g3db
ou .g3dj
(par exemple à l'aide de fbx-conv
) créés à partir d'un format de fichier qui prend en charge les transformations de noeud (par exemple .fbx
, mais pas .obj
)
Je lis votre tutoriel pour 2 jours maintenant, la recherche sur le web entier pour comprendre ce qui a mal tourné, jusqu'à ce que je trouve cela. Wow cela résout tout pour moi. Merci beaucoup! –