मैं इस कोड की कोशिश की:डायरेक्टएक्स पर 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);
नहीं है, तो कृपया टिप्पणी इम ओपन रोटेशन के लिए डायरेक्ट बराबर खोजने की कोशिश । मैं 8 घंटे बीतने तक इसे उत्तर के रूप में पोस्ट नहीं कर सकता! (इसे करने के लिए +7 प्रतिष्ठा की आवश्यकता है)।
मुझे डायरेक्टएक्स के बारे में पता नहीं है, लेकिन आपके पास गलत क्रम में गुणा हो सकता है। यदि आप जानते हैं कि आपका ऑर्डर सही है, तो इस टिप्पणी को अनदेखा करें, अन्यथा इसे जांचें। –