Hi everybody
The subject says "again" because it's a kind of post I have already seen in the forum.
I have a JME model with his bounding box and I have a tiled terrain.
I have the world coordinates of the bottom of the boundig box and the world coordinates of the point on the terrain where the bottom must be placed.
So I calculate the world translation between the two points, but what I need is to translate the model and I can only change his local translation.
I'm sorry but I really didn't find an answer in the other posts on these subjects (WorldToLocal, …).
Could you help me, Monkey Fans ?
Spatial.worldToLocal(…) would help you if you really need to convert from world to local coordinate space. But do you need it? I could imagine that world and local coordinates are the same for this case as you most probably do not have a parent node that is transformed (scaled/translated/rotated), do you?
In fact, my model node himself is transformed. I had to chage his scale and I translate it to be over the terrain.
So when I translate it with the world translation I have calculated, it goes under the terrain.
Perhaps the problem come from my understanding of the node hierarchy in JME ?
Here is my code. I hope it can help.
BoundingBox vol = (BoundingBox)((TriMesh)freak.getNode().getChild(0)).getWorldBound();
Vector3f bottom = new Vector3f(vol.getCenter().subtract(0,vol.yExtent,0));
Vector3f position = new Vector3f(bottom.x,terrain.getHeight(bottom.x,bottom.z),bottom.z);
float calc = position.y-bottom.y;
Vector3f vtmp = new Vector3f(decal,calc,-decal);
freak.getNode().setLocalTranslation(vtmp);
Ok, I finally found a solution.
You were right Irrisor, if I scale the Trimesh and not the node, the translation works fine !
Thanks a lot. XD