我知道,在opengl中,相机不会移动,但是模型是围绕着它移动的。我需要相机在MODELVIEW中的位置..。是的,我也知道有很多关于它的话题,但我尝试了他们所做的一切来获得相机坐标,但它总是返回(0, 0, 0) (相机的真正位置)。
这就是我想要的:
GLfloat mdl[16];
float camera_org[3];
glMatrixMode( GL_MODELVIEW );
glPushMatrix();
glGetFloatv(GL_MODELVIEW_MATRIX, mdl);
camera_org[0] = -(mdl[0] * mdl[12] + mdl[1] * mdl[13] + mdl[2] * mdl[14]);
camera_org[1] = -(mdl[4] * mdl[12] + mdl[5] * mdl[13] + mdl[6] * mdl[14]);
camera_org[2] = -(mdl[8] * mdl[12] + mdl[9] * mdl[13] + mdl[10] * mdl[14]);也尝试过这样做(如在某些主题中所述):
camera_org[0] = mdl[12];
camera_org[0] = mdl[13];
camera_org[0] = mdl[14];他们给了我相同的结果(0,0,0),谁能告诉我做错了什么吗?
发布于 2014-08-27 13:11:28
我找到了答案:
int viewport[4];
// get matrixs and viewport:
glGetDoublev( GL_MODELVIEW_MATRIX, matModelView );
glGetDoublev( GL_PROJECTION_MATRIX, matProjection );
glGetIntegerv( GL_VIEWPORT, viewport );
gluUnProject( (viewport[2]-viewport[0])/2 , (viewport[3]-viewport[1])/2,
0.0, matModelView, matProjection, viewport,
&camera_pos[0],&camera_pos[1],&camera_pos[2]);这将给你的坐标相机在现场。
https://stackoverflow.com/questions/25527571
复制相似问题