zhucde (虚拟闲人) 的博客

OGRE,FLY3D, 图形开发, 一起探讨吧.QQ超级群(500人):186898914 QQ群(200人):23806843
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在3D中, 将世界坐标映射为屏幕上的坐标点

Posted on 2011-01-09 13:58  zhucde  阅读(1165)  评论(0编辑  收藏  举报

首先介绍Ogre中的方法:

 

Vector3 tartgetpos;
Ogre::Matrix4 viewMat
= mCamera->getViewMatrix();
Ogre::Matrix4 projMat
= mCamera->getProjectionMatrix();
Ogre::Vector3 screenPos
= projMat * viewMat * tartgetpos;
float x = (screenPos.x + 1.0f)/ 2.0f;
float y = -1*(screenPos.y - 1.0f) / 2.0f;

 

 


 再谈谈直接使用OpenGL的方法:

 

Vector3 pos(...); //物体的位置
double xfpcoord[3];
gluProject(pos.x,pos.y,pos.z,cam_model_mat,cam_proj_mat,cam_viewport,
&xfpcoord[0],&xfpcoord[1],&xfpcoord[2]);

 

 

 

 参数解释一下,

cam_model_mat: camera model matrix

cam_proj_mat:     camera projection matrix

cam_viewport:     camera viewport

xfpcoord[0]:  屏幕X

xfpcoord[1]:  屏幕Y

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhucde/archive/2010/12/07/6060095.aspx