Saya cukup baru untuk C ++ dan DirectX9 dan saya ingin Menerapkan Kamera Orang Ketiga. Setelah beberapa membaca tentang Kamera berbasis Quaternion saya memutuskan untuk mencoba Menerapkannya. Tapi itu benar-benar membuat saya berpikir, jadi saya bertanya di sini apa cara termudah untuk Menerapkan Kamera-TP?
Berikut adalah hal-hal yang harus dilakukan Kamera:
Ikuti koordinat yang disimpan dalam 3DVector (x, y, z)
Putar di sekitar Objek (Halus)
Mungkin beberapa jenis 'pegas' = Perlahan-lahan bergerak kembali ke Pos normal di belakang Objek setelah Memutar
Minta maaf untuk bahasa Inggris saya yang buruk: Saya orang Jerman dan masih di sekolah!
Terima kasih sebelumnya!
EDIT:
Setelah mencoba, saya mengerti.
Masalah terbesar yang saya pertimbangkan adalah penggalian kanan vektor "arah" dari Matriks-Dunia.
Selama penelitian saya, saya menemukan sebagian besar hal seperti ini:
D3DXVECTOR3 direction;
direction.x = worldMatrix->_13;
direction.y = worldMatrix->_23;
direction.z = worldMatrix->_33;
D3DXVec3Normalize(&direction, &direction);
Itu TIDAK bekerja untuk saya! Sebaliknya saya melakukan ini:
D3DXVECTOR3 direction;
direction.x = worldMatrix->_13;
// Consider the .y after the .z!
direction.z = worldMatrix->_23;
direction.y = worldMatrix->_33;
D3DXVec3Normalize(&direction, &direction);
Untuk penskalaan:
// The tenfold of the average distance
D3DXVec3Scale(&direction, &direction, 10.0f);
Mengatur Posisi:
cameraPos = targetPos - direction;
// For a top-view
cameraPos.y = targetPos.y + 5;
Untuk Rotasi, Anda harus membuat Matriks dunia sementara (dari posisi target) dan memutarnya sesuai keinginan dan mengekstrak arahnya.
Smoothing of the Rotation sangat tergantung pada game ANDA!
Kamera 3rd Person jenis ini sangat mudah dibuat dan berfungsi dengan baik!
SANGAT BESAR terima kasih kepada "jheriko" yang memberi saya jawaban yang benar!