2010-08-07 4 views
2

Comme vous savez quand nous voulons dessiner un objet à trois dimensions dans DirectX, nous devons définir une caméra. Maintenant, nous avons un objet Device dont le nom est 'device1'. C'est ma question: device1.View = Matrix.Look ... (Nouveau Vector3(), Nouveau Vector3(), Nouveau Vector3()); L'argument n ° 3 est Up Vector. Qu'est-ce que ça fait exactement?Que fait exactement Up Vector dans DirectX?

Répondre

8

Comme son nom l'indique, il définit dans quelle direction "haut" est. C'est une chose assez importante. Vous devez connaître la position de la caméra, vous devez savoir dans quelle direction elle se trouve, mais vous devez également savoir comment elle est tournée, c'est-à-dire ce qui sera perçu comme haut et bas, gauche et droite.

Dans notre monde réel, le vecteur «haut» de notre champ de vision est (généralement) impliqué par le champ de gravité, c'est-à-dire l'inverse du vecteur de gravité exercé par la Terre.

2

Dans une matrice de caméra, vous devez former une matrice de base "orthonormale" pour décrire la trame de coordonnées.

Si vous pensez à un cadre de coordonnées 3D, vous avez 3 axes. L'axe X (ou vecteur latéral/latéral), l'axe Y (vecteur ascendant) et l'axe Z (vecteur directionnel).

Le vecteur ascendant est simplement important pour définir ce repère.

Une matrice de base de rangée principale est définie comme suit:

xx, xy, xz, 0 
yx, yy, yz, 0 
zx, zy, zz, 0 
px, py, pz, 1 

xx, xy, xz est un 3-vecteur définissant l'axe des x, yx, yy, yz l'axe y, zx, zy, zz l'axe z et px, py, pz définit le vecteur de position. Aussi, si vous y pensez si vous avez pointé le vecteur vers le haut, alors vous vous attendez à voir tout à l'envers .. non? De plus, comme vous n'avez pas fait pivoter le vecteur vers le haut, vous remarquerez également que le vecteur latéral pointe dans le mauvais sens et que vous verrez quelque chose qui apparaît en miroir sur l'axe X et qui est également à l'envers.

Questions connexes