Ich habe mehrere Objekte in einem 3D-Raum bewegt und bin auf der Suche nach Möglichkeiten, auf Knopfdruck die Kamera einrasten zu lassen und dem gewählten Objekt zu folgen.DirectX-Kamera zu folgen basierend auf 3D-Modell der Welt Matrix?
Gibt es eine Möglichkeit, die WorldMatrix jedes Objekts zu verwenden? (Im Folgenden ein Beispiel für ein Objekt ist. Dieser ist ein Planet, die & Bahnen dreht)
//set up matrices for rendering
D3DXMATRIX worldMatrixMer, viewMatrixMer, projectionMatrixMer;
m_Camera->GetViewMatrix(viewMatrixMer);
m_D3D->GetWorldMatrix(worldMatrixMer);
m_D3D->GetProjectionMatrix(projectionMatrixMer);
D3DXMatrixRotationX(&matRotateX, rx/65.0f);
//Rotate about Y axis
D3DXMatrixRotationY(&matRotateY, rotation * 15.0f);
D3DXMatrixRotationZ(&matRotateZ, rz/65.0f);
//Collate Rot Matrices
D3DXMATRIX rotMatrixMer = matRotateX * matRotateY * matRotateZ;
D3DXVECTOR3 newVecDirMer;
D3DXVec3TransformCoord(&newVecDirMer, &initVecDirMer, &rotMatrixMer);
D3DXVec3Normalize(¤tVecDirMer, &newVecDirMer);
//Create the size of the object
D3DXMATRIX matScaleMer;
D3DXMatrixScaling(&matScaleMer, 0.1f, 0.1f, 0.1f);
//Starting position of object
D3DXMatrixTranslation(&matTranslateMer, 0.0f, 0.0f, 3.5983f * 3);
//Rotate about it's own axis
D3DXMatrixRotationY(&worldMatrixMer, rotation);
worldMatrixMer *= rotMatrixMer * matScaleMer * matTranslateMer;
//'Orbit'
D3DXMatrixRotationY(&matOrbit, (-1000.0f * rotation)/88);
worldMatrixMer *= matOrbit;
Ich versuche wirklich eine elegante Art und Weise zu machen dies geschehen, zu finden, so Anregungen würden sehr geschätzt werden.
Dank
Vielen Dank für den Abbau der Matrix für mich, das ist wahrscheinlich die Art, wie ich darüber gehen werde. –