FW: http://lyo.blogsome.com/2007/04/12/pos3d-to-pos2d-in-m3g/
Thanks Lyo!
Camera m_camera;
//
current camera
Transform m_camTransform; // current camera transform
Transform m_objTransform; // transform of the render obj
void Pos3D2Pos2D( float [] pos3D, float []pos2D)
... {
float pos[] = new float[]...{pos3D[0], pos3D[1], pos3D[2], 1}
//get current position
m_objTransform.transform(pos);
//apply camera transform
Transform invTrans = new Transform(m_camTransform);
invTrans.invert();
invTrans.transform(pos);
//get z
float z = -pos[2];
float x = 0;
float y = 0;
//projection
Transform transProjection = new Transform();
camera.getProjection(transProjection);
transProjection.transform(pos);
// NDC to View
x = pos[0] * getWidth()/ (2 * z);
y = pos[1] * getHeight()/ (2 * z);
//convert to screen pos.
pos2D[0] = (int)(getWidth()/2 + x);
pos2D[1] = (int)(getHeight()/2 - y);
}
Transform m_camTransform; // current camera transform
Transform m_objTransform; // transform of the render obj
void Pos3D2Pos2D( float [] pos3D, float []pos2D)
... {
float pos[] = new float[]...{pos3D[0], pos3D[1], pos3D[2], 1}
//get current position
m_objTransform.transform(pos);
//apply camera transform
Transform invTrans = new Transform(m_camTransform);
invTrans.invert();
invTrans.transform(pos);
//get z
float z = -pos[2];
float x = 0;
float y = 0;
//projection
Transform transProjection = new Transform();
camera.getProjection(transProjection);
transProjection.transform(pos);
// NDC to View
x = pos[0] * getWidth()/ (2 * z);
y = pos[1] * getHeight()/ (2 * z);
//convert to screen pos.
pos2D[0] = (int)(getWidth()/2 + x);
pos2D[1] = (int)(getHeight()/2 - y);
}