Transformations de l’espace de caméra (Direct3D 9)
Les sommets dans l’espace caméra sont calculés en transformant les sommets d’objet avec la matrice d’affichage du monde.
V = V * wvMatrix
Les normales de vertex, dans l’espace de la caméra, sont calculées en transformant les normales d’objet avec la transpose inverse de la matrice de vue du monde. La matrice de vue du monde peut ou non être orthogonale.
N = N * (wvMatrix⁻¹)T
L’inversion de matrice et la transpose de matrice fonctionnent sur une matrice 4x4. La multiplication combine la normale avec la partie 3x3 de la matrice 4x4 résultante.
Si l’état de rendu, D3DRENDERSTATE_NORMALIZENORMALS est défini sur TRUE, les vecteurs normaux de vertex sont normalisés après la transformation en espace de caméra comme suit :
N = norm(N)
La position de la lumière dans l’espace de la caméra est calculée en transformant la position de la source de lumière avec la matrice de vue.
Lp = Lp * vMatrix
La direction de la lumière dans l’espace de la caméra pour une lumière directionnelle est calculée en multipliant la direction de la source de lumière par la matrice de vue, en normalisant et en annulant le résultat.
Ldir = -norm(Ldir * wvMatrix)
Pour les D3DLIGHT_POINT et D3DLIGHT_SPOT la direction vers la lumière est calculée comme suit :
Ldir = norm(V * Lp), où les paramètres sont définis dans le tableau suivant.
Paramètre | Valeur par défaut | Type | Description |
---|---|---|---|
Ldir | N/A | D3DVECTOR | Vecteur de direction du vertex de l’objet vers la lumière |
V | N/A | D3DVECTOR | Position du vertex dans l’espace de la caméra |
wvMatrix | Identité | D3DMATRIX | Matrice composite contenant les transformations du monde et de la vue |
N | N/A | D3DVECTOR | Vertex normal |
Lp | N/A | D3DVECTOR | Position de la lumière dans l’espace de la caméra |
vMatrix | Identité | D3DMATRIX | Matrice contenant la transformation de vue |
Rubriques connexes