필자는 피벗을 원점으로 변환, 회전 및 뒤쪽으로 이동하여 OpenGL의 한 점에서 객체를 회전하는 방법에 대한 다른 게시물을 읽었습니다. 그러나, 나는 그것을 작동시키는 것처럼 보일 수 없다. 큐브가 있고 glm :: perspective 및 glm :: lookAt를 사용하여 프로젝션 및 뷰 행렬을 생성합니다. 그러나GLM을 사용한 점 주위의 OpenGL 회전
gl_Position = MVP * vec4(vertexPosition_modelspace,1);
:
if (glfwGetKeyOnce(window, GLFW_KEY_UP))
{
Model = translate(Model, vec3(1.0f, 0.0f, 0.0f));
Model = rotate(Model, 90.0f, vec3(1.0f, 0.0f, 0.0f));
Model = translate(Model, vec3(-1.0f, 0.0f, 0.0f));
}
mat4 MVP = Projection * View * Model;
을 그리고 내 버텍스 쉐이더에서, 나는이 있습니다
glm::mat4 Projection = glm::perspective(45.0f, 4.0f/3.0f, 0.1f, 100.0f);
// Camera matrix
glm::mat4 View = glm::lookAt(
glm::vec3(0,3.5,-5),
glm::vec3(0,0,0),
glm::vec3(0,1,0)
);
// Model matrix : an identity matrix (model will be at the origin)
glm::mat4 Model = glm::mat4(1.0f);
는 그럼 난 while 루프 내부에이 같은 모델 매트릭스에 변환을 적용 이것은 여전히 그 중심을 중심으로 큐브를 회전시킵니다. glm :: translate에 대한 호출을 없애고 대신 vertex의 x 위치를 조정하여 변환하면 제대로 작동합니다. 그러나 나는 그것이 올바른 방법이라고 생각하지 않습니다. 내가 여기서 무엇을 놓치고 있니?
X 축을 따라 변환 한 다음 동일한 축을 중심으로 회전하고 Y 축을 따라 변환 해보십시오. –
오 싹 덕분에! – CoffeeCrisp