2012-01-09 4 views
5

는이 코드 시도 :DirectX에서 XYZ 축에서 오브젝트를 회전하는 방법은 무엇입니까?

D3DXMatrixRotationX(&matRotate, rx); 
D3DXMatrixRotationY(&matRotate, ry); 
D3DXMatrixRotationZ(&matRotate, rz); 
d3ddev->SetTransform(D3DTS_WORLD, &matRotate); 

를하지만 항상 마지막 회전 (Z 축) 회전 보인다.

개체를 동시에 모든 XYZ 축으로 회전하려면 어떻게해야합니까?

glRotatef(rx, 1, 0, 0); 
glRotatef(ry, 0, 1, 0); 
glRotatef(rz, 0, 0, 1); 


편집 : 나 자신에 의해 그것을 생각처럼 이 보이는 것은 :

D3DXMATRIX matRotateX; 
D3DXMATRIX matRotateY; 
D3DXMATRIX matRotateZ; 
D3DXMatrixRotationX(&matRotateX, rx); 
D3DXMatrixRotationY(&matRotateY, ry); 
D3DXMatrixRotationZ(&matRotateZ, rz); 
D3DXMATRIX matRotate = matRotateX*matRotateY*matRotateZ; 
d3ddev->SetTransform(D3DTS_WORLD, &matRotate); 

하지 않을 경우, 의견을주십시오 은 임 OpenGL을 회전 다이렉트 동등한를 찾기 위해 노력 . 나는 8 시간이 지날 때까지 대답으로 글을 올릴 수 없다! (그것을하기 위해서는 +7 평판이 필요함).

+0

저는 DirectX에 대해 모르지만 잘못된 순서로 곱셈을했을 수 있습니다. 주문 내용이 정확하다면이 의견을 무시하고, 그렇지 않으면 확인하십시오. –

답변

4

D3DXMatrixRotationX는 행렬을 회전하지 않지만 무언가를 회전하는 데 사용할 수있는 행렬을 만듭니다. ...

D3DXMatrixRotationYawPitchRoll(&matRotate, ry, rx, rz); 

편집을

그래서 당신은 바로 이후 각 단계 매트릭스를 사용할 수 있으며, 다른 뭔가를 회전하거나 한 번만를 만들어야 있도록 D3DXMatrixRotationYawPitchRoll을 사용할 수 귀하의 편집도 작동 ...

+0

멋진 찾기, 올바른 순서로 매개 변수를 수정하십시오 : ry, rx, rz – Rookie

+0

@ 루키 감사합니다. 그리고 이것이 중복 확인을 잊었을 때 일어나는 일입니다 ... 지금 수정되었습니다 ... –

관련 문제