2011-01-10 8 views
1

glRotate(), glScale(), glTranslate()에 의해 변형되는 OpenGL을 사용하여 구를 그립니다. 혼자서 모든 변환을 계산하지 않고 Object의 절대 위치를 얻는 방법은 무엇입니까?OpenGL에서 카메라 위치를 변형하십시오.

카메라 시점 위치를이 좌표로 설정하려면 좌표가 필요합니다.

답변

2

, 당신은 modelviewmatrix를 조작됩니다

는 현재 OpenGL은 변환에 대한 자세한 내용을보실 수 있습니다이

float fvViewMatrix[ 16 ];

glGetFloatv(GL_MODELVIEW_MATRIX, fvViewMatrix);

을 같은 매트릭스를 사용 뭔가를 얻으려면

받는 사람 사용할 수있는 현재 (예 http://linux.die.net/man/3/glgetfloatv)

void glGetFloatv(
GLenum pname, 
GLfloat * params 
); 

얻을 :

float modelview[16]; 

// save the current modelview matrix 
glPushMatrix(); 

// get the current modelview matrix 
glGetFloatv(GL_MODELVIEW_MATRIX , modelview); 

가 시작 벡터를 곱하면 현재의 행렬을 받아야을//이 매트릭스 좌표 꼭지점에게 절대 줄 것 세계 좌표.

편집 : 응용 프로그램을 만들 때 일반적으로 각 개체의 절대 좌표를 제어하고이를 조작하고 OpenGL 변환을 사용하여 정의 된 위치에서 그릴 수 있습니다.

1

개체는 종종 하나의 좌표계에서 모델링 된 다음 크기 조정, 변환 및 회전중인 개체로 구성됩니다. World Coordinates는 ModelView 행렬에 저장된 모델 변환에 의해 객체 좌표를 변형하여 생성됩니다. 그러나 OpenGL에는 World Coordinates에 대한 개념이 없습니다. World Coordinates는 순전히 응용 프로그램 구성입니다.

개체 좌표는 ModelView 행렬에 의해 변환되어 눈 좌표를 생성합니다.

opengl.org 올린 사람 : 9.120 어떻게 ModelView 매트릭스에 의해서만 변형 된 정점의 좌표를 찾을 수 있습니까?

정점의 눈 좌표 공간 값 (ModelView 행렬로 변환 된 객체 공간 정점)을 얻는 것이 유용한 경우가 있습니다. 현재 ModelView 행렬을 검색하고 간단한 벡터/행렬 곱셈을 수행하면됩니다. 그 변환을 사용하는 경우 http://www.opengl.org/resources/faq/technical/transformations.htm