|
|

楼主 |
发表于 2008-12-5 17:38:00
|
显示全部楼层
Re: opengl 中对选中的物体移动不正确,希望高人帮帮我!
Vector3 CSView::GetSelectionRay(int mouse_x, int mouse_y)、、这是实现移动的函数,得到世界中的坐标
{
// 获取 Model-View、Projection 矩阵 & 获取Viewport视区
GLdouble modelview[16];
GLdouble projection[16];
GLint viewport[4];
glPushMatrix();
glGetDoublev (GL_MODELVIEW_MATRIX, modelview);
glGetDoublev (GL_PROJECTION_MATRIX, projection);
glGetIntegerv (GL_VIEWPORT, viewport);
GLdouble world_x, world_y, world_z,win_z;
// 获取近裁剪面上的交点
gluUnProject( (GLdouble) mouse_x, (GLdouble) mouse_y, 0.0,
modelview, projection, viewport,
&world_x, &world_y, &world_z);
Vector3 near_point(world_x, world_y, world_z);
glReadPixels( (GLdouble) mouse_x, viewport[3]-(GLdouble)mouse_y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &win_z );
gluUnProject( (GLdouble) mouse_x, viewport[3]-(GLdouble)mouse_y, 1.0,
modelview, projection, viewport,
&world_x, &world_y, &world_z);
Vector3 far_point(world_x, world_y, world_z);
int model_x=(near_point.x*far_point.z-far_point.x*near_point.z)/far_point.z-near_point.z;
int model_z=(near_point.y*far_point.z-far_point.y*near_point.z)/far_point.z-near_point.z;
return Vector3(model_x,4.5,model_z);
}
高人帮忙啊,别让帖子沉下去 啊,哈哈 [em2] [em2] [em2] [em2] |
|