Transformasi Ruang Kamera (Direct3D 9)
Simpul di ruang kamera dihitung dengan mengubah simpul objek dengan matriks tampilan dunia.
V = V * wvMatrix
Puncak normal, di ruang kamera, dihitung dengan mengubah objek normal dengan transpose terbalik dari matriks tampilan dunia. Matriks tampilan dunia mungkin atau mungkin tidak ortogonal.
N = N * (wvMatrix⁻¹)T
Inversi matriks dan transpose matriks beroperasi pada matriks 4x4. Perkalian menggabungkan normal dengan bagian 3x3 dari matriks 4x4 yang dihasilkan.
Jika status render, D3DRENDERSTATE_NORMALIZENORMALS diatur ke TRUE, vektor normal verteks dinormalisasi setelah transformasi ke ruang kamera sebagai berikut:
N = norm(N)
Posisi cahaya di ruang kamera dihitung dengan mengubah posisi sumber cahaya dengan matriks tampilan.
Lp = Lp * vMatrix
Arah ke cahaya di ruang kamera untuk lampu arah dihitung dengan mengalikan arah sumber cahaya dengan matriks tampilan, menormalkan, dan meniadakan hasilnya.
Ldir = -norm(Ldir * wvMatrix)
Untuk D3DLIGHT_POINT dan D3DLIGHT_SPOT arah ke cahaya dihitung sebagai berikut:
Ldir = norm(V * Lp), di mana parameter ditentukan dalam tabel berikut.
Parameter | Nilai default | Jenis | Deskripsi |
---|---|---|---|
L dir | T/A | D3DVECTOR | Vektor arah dari puncak objek ke cahaya |
V | T/A | D3DVECTOR | Posisi puncak di ruang kamera |
wvMatrix | Identitas | D3DMATRIX | Matriks komposit yang berisi dunia dan melihat transformasi |
N | T/A | D3DVECTOR | Puncak normal |
Lp | T/A | D3DVECTOR | Posisi cahaya di ruang kamera |
vMatrix | Identitas | D3DMATRIX | Matriks yang berisi transformasi tampilan |
Topik terkait