저는 먼저 회전하려고하는 대상을 가지고 있습니다. 나는 회전을 유지하는 glm :: quat와 번역 될 필요가있는 점을 보유하고있는 glm :: vec3을 가지고있다. 나는 (멀리 회전을 적용 할 때 내가 할 기능을 렌더링 내에서 다음glm 회전과 변환을 결합합니다.
glm::vec3 position;
glm::quat orientation;
glm::mat4 modelmatrix; <-- want to combine them both in here
modelmatrix = glm::translate(glm::toMat4(orientation),position);
..
pvm = projectionMatrix*viewMatrix*modelmatrix;
glUniformMatrix4fv(pvmMatrixUniformLocation, 1, GL_FALSE, glm::value_ptr(pvm));
.. 그리고 렌더링 ...
불행하게도 객체는 원점 주위 궤도 원점에서 "위치", 큰 궤도).
위치 만 적용하면 잘 변환됩니다. 회전 만 적용하면 원점에 머무르고 예상대로 중심을 중심으로 회전합니다. 그렇다면 둘 다 적용 할 때 왜 이상하게 느껴지나요? 기본 무언가를 놓치고 있습니까?
glm :: translate가 번역을 함수의 첫 번째 인수에 적용한다는 인상하에있었습니다. 고맙습니다. – Jubei
@ Jubei : 행렬에 번역을 적용합니다. 그것은 그것을 오른쪽으로 곱합니다. 즉, 먼저 회전이 발생하기를 원할 때 번역이 * 처음 * 발생합니다. –
이 답변을 주셔서 감사합니다. 저는 오늘 당황했습니다.하지만 내가 잘못하고있는 것이 무엇인지 알았음에도 불구하고이 기능이 어떻게 작동하는지 확인하지 못했습니다. –