Bagikan melalui


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

 

Matematika Pencahayaan