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);
}
3D到2D坐标转换
本文介绍了一种从三维空间坐标转换为二维屏幕坐标的算法实现。通过应用对象和摄像机的转换矩阵,该算法将3D空间中的点投影到2D平面上,并根据屏幕尺寸调整坐标位置。
505

被折叠的 条评论
为什么被折叠?



