작은 큐브로 가득 찬 "큐브"를 회전 시키려고 노력하고 있지만 그다지 좋지 않은 키보드를 사용하려고합니다.큐브를 중심에서 회전시키는 방법
회전의 피벗 점을 큰 "큐브"/ 중심의 가장 가운데로 설정하는 데 어려움을 겪고 있습니다. 이 video에서 볼 수 있듯이 큰 큐브의 전면 (초기)면의 중심이 지금 내 회전의 피벗 점이며, 조금 회전하면 혼란 스럽습니다.
큐브를 회전시키기 위해 키를 사용할 때 큐브의 초기면을 움직이는 것처럼 보입니다. 따라서 피벗 포인트는이 관점에서 괜찮지 만 내 코드에서 무엇이 잘못 되었습니까? 나는 왜 그것이 정면으로 움직이는 지 이해하지 못한다.
작은 큐브를 모두 생성하는 경우 3 for 루프 (x, y, z) 함수를 호출하고 함수는 cubeMat
을 반환하므로 비디오에서 볼 수있는 것처럼 모든 큐브가 생성됩니다.
cubeMat = scale(cubeMat, {0.1f, 0.1f, 0.1f});
cubeMat = translate(cubeMat, {positioning...);
는 왼쪽으로 회전 간단한 예는 다음과 같습니다
mat4 total_rotation; //global variable - never resets
mat4 rotation; //local variable
if(keysPressed[GLFW_KEY_LEFT]){
timer -= delta;
rotation = rotate(mat4{}, -delta, {0, 1, 0});
}
... //rest of key controls
total_rotation *= rotation;
을 그리고 사이클 그 3 안에도 이것이다 : 내가 읽고
program.setUniform("ModelMatrix", total_rotation * cubeMat);
cube.render();
피벗 포인트를 가운데로 설정하려면 transformation
을 사용해야하지만,이 경우 피벗 포인트를 세상의 중심에있는 작은 큐브 안에 어떻게 설정할 수 있습니까? 그 큐브는 분명히 x=2, y=2, z=2
입니다. 왜냐하면 사이클에서, 나는 x=0
에서 시작하는 큐브를 생성하기 때문입니다.
비디오에서 큐브 센터에 대한 회전이 아닌 것, 즉 원하는 것은 무엇입니까? –
잘 설명하지 않았을 수 있습니다. 죄송합니다. 그것은 세계의 한가운데에서 "회전"하지만 어떤 이유에서 건 키보드 컨트롤이 앞면을 "움직"거나 컨트롤을 사용하여 앞면을 잡고 큐브를 회전시키는 것처럼 보입니다. – Ady96
죄송합니다. 나는 당신이하는 말을 듣지 않습니다. 나는 비디오를 몇 번 보았고 나는 이상한 것을 볼 수 없다. –