Sono abbastanza nuovo in C ++ e DirectX9 e voglio implementare una fotocamera in terza persona. Dopo aver letto delle telecamere basate su Quaternion, ho deciso di provare a implementarlo. Ma mi fa davvero impazzire, quindi chiedo qui qual è il modo più semplice per implementare una TP-Camera?
Ecco le cose che la fotocamera dovrebbe fare:
Segui le coordinate memorizzate in un 3DVector (x, y, z)
Ruota attorno all'oggetto (Smooth)
Forse un qualche tipo di "molla" = Ritorna lentamente alla posizione normale dietro all'oggetto dopo aver ruotato
Mi scuso per il mio pessimo inglese: sono tedesco e ancora a scuola!
Grazie in anticipo!
MODIFICARE:
Dopo aver provato, ce l'ho.
Il problema più grande che ho preso in considerazione è stato l'estrazione corretta del vettore "direction" dalla World-Matrix.
Durante la mia ricerca ho trovato principalmente qualcosa del genere:
D3DXVECTOR3 direction;
direction.x = worldMatrix->_13;
direction.y = worldMatrix->_23;
direction.z = worldMatrix->_33;
D3DXVec3Normalize(&direction, &direction);
Questo NON funziona per me! Invece ho fatto questo:
D3DXVECTOR3 direction;
direction.x = worldMatrix->_13;
// Consider the .y after the .z!
direction.z = worldMatrix->_23;
direction.y = worldMatrix->_33;
D3DXVec3Normalize(&direction, &direction);
Per il ridimensionamento:
// The tenfold of the average distance
D3DXVec3Scale(&direction, &direction, 10.0f);
Impostazione delle posizioni:
cameraPos = targetPos - direction;
// For a top-view
cameraPos.y = targetPos.y + 5;
Per Rotations dovresti creare una World-Matrix temporanea (dalla posizione del bersaglio) e ruotarla come vuoi ed estrarre la direzione.
Il Smoothing of the Rotation dipende davvero dal TUO gioco!
Questo tipo di fotocamera in terza persona è davvero facile da realizzare e fa il suo lavoro!
Davvero GRANDE grazie a "jheriko" che mi ha dato la risposta giusta!