作者etrexetrex (moonet)
看板GameDesign
标题Re: [请益] 求滑鼠点在萤幕上对应到的3D位置
时间Sat Dec 20 10:19:03 2008
※ 引述《CKShane (轩)》之铭言:
: 嗯,在这个版这似乎是个基本的问题
: (或应该说我实在太菜了)
: 用的是OpenGL
: 假设我现在在3D中对一个场景做了一连串的transform
: 然後perspective的投影到screen space上
: 我现在用滑鼠在视窗中点一下
: 想要知道这一下是点在我3D场景的什麽位置,(然後准备接着作一些互动)
: 该如何下手呢? 现下没有什麽头绪
: 该对最後算出来的transformation matrix求反矩阵?
: 或是该走什麽方向?
: 感谢
刚好有作过
class Point
{
public:
double x;
double y;
double z;
};
//输入滑鼠座标,输出滑鼠对应到模型的座标
Point findPoint(int x , int y)
{
GLfloat depth[1];
double modelm[16], projm[16];
int view[4];
Point p;
glGetDoublev( GL_MODELVIEW_MATRIX, modelm );
glGetDoublev( GL_PROJECTION_MATRIX, projm );
glGetIntegerv( GL_VIEWPORT, (GLint*)view );
glReadPixels(x,y,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,depth);
gluUnProject(x,y,depth[0],modelm,projm,
(GLint*)view,&(p.x),&(p.y),&(p.z));
return p;
}
--
blog:
http://etrex.blogspot.com/
site:
http://web.ntust.edu.tw/~B9409041/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.168.162.178