Up Vector在DirectX中做了什么?

时间:2010-08-07 13:42:58

标签: directx

如你所知,当我们想在DirectX中绘制一个三维对象时,我们应该定义 相机。现在我们有一个Device对象,它的名字是'device1'。这是我的问题:  device1.View = Matrix.Look ...(New Vector3(),New Vector3(),New Vector3()); 参数#3是向上矢量。它到底是做什么的?

2 个答案:

答案 0 :(得分:8)

顾名思义,它定义了“向上”的方向。这是非常重要的事情。你需要知道相机的位置,你需要知道它面向哪个方向,但你还需要知道它是如何转动的 - 即上下左右都会被感知到的。

在我们的现实世界中,我们视野的“向上”矢量(通常)是由重力场所暗示的,即它是由地球施加的重力矢量的反向(向上,而不是向下!)。 / p>

答案 1 :(得分:2)

在相机矩阵中,您需要形成一个“正交”基矩阵来描述坐标系。

如果您想到任何3D坐标系,您有3个轴。 X轴(或侧面/侧面矢量),Y轴(向上矢量)和Z轴(方向矢量)。

向上矢量对于定义坐标系非常重要。

行主基矩阵定义如下:

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

xx,xy,xz是定义x轴的3矢量,yx,yy,yz是y轴,zx,zy,zz是z轴,px,py,pz定义位置矢量。 / p>

另外如果你想一想,如果你向上指向向上的向量那么你会期望看到一切都是颠倒的......对吧?此外,由于您没有将向上矢量旋转到向下位置,您还会注意到侧向量指向错误的方向,因此您将看到在X轴上显示为镜像的内容以及上下颠倒的内容。