|
|
取得一个三维坐标投影在屏幕(视口)上的二维坐标的方法:
将要变换变换的坐标Vector3 v3;转换成Vector4 v4(v3);
取得使用者的摄影机的视角变换矩阵和投影变换矩阵
Camera* cam=mSceneMgr->getCamera(" layerCam");
Matrix4 viewMatrix=cam->getViewMatrix();
Matrix4 projectMatrix=cam->getProjectionMatrix();
将转换坐标左乘矩阵的积
Vector4 v4=viewMatrix*projectMatrix*v4;
然后齐次化
Vector3 ScreenPos=Vector3(v4.x/v4.w,v4.y/v4.w,v4.z/v4.w);
这里得到的x,y坐标的范围是(-1,+1)转换成(0,1)的范围。
float x=ScreenPos.x/2+0.5
float y=-ScreenPos.y/2+0.5
ogre wiki上查到的方法一种是直接将文字绑定到SCENENODE上,作为3维的部件渲染;另一种是使用的近似的方法,
将以视口坐标作为归一化量,试验了一下觉得动态准确度不是很好,不能作为锁定标志使用(因为要一直准确的表示敌机的位置)。
一点心得而已。。希望可以帮到需要的人。 [em5] |
|