directx相机位置令我困惑

时间:2014-01-07 02:45:39

标签: c++ camera directx-11

我刚刚阅读了以下内容:

  

我们想让玩家查看位于该处的对象   世界的起源(0,0,0)。我们希望玩家能够查看该对象   从坐标(100,100,100)。要做到这一点,我们需要建立一个   包含此数据的矩阵。我们使用函数构建此矩阵   叫做XMMatrixLookAtLH()。以下是您使用它的方式:

XMVECTOR vecCamPosition = XMVectorSet(100, 100, 100, 0);
XMVECTOR vecCamLookAt = XMVectorSet(0, 0, 0, 0);
XMVECTOR vecCamUp = XMVectorSet(0, 1, 0, 0);

XMMATRIX matView = XMMatrixLookAtLH(vecCamPosition, vecCamLookAt, vecCamUp);
     

来自:http://www.directxtutorial.com/Lesson.aspx?lessonid=111-6-1

我不明白为什么如果你想看一个位于0,0,0的物体,你应该将相机定位在100,100,100 ......当然这意味着相机已经过了它...然后回头看看它?

事情是,如果我将相机设置为0.0,0.0,-1.0并且我的对象的z索引为1.0 ......我的相机再也看不到我的对象...

我不明白吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

当位于(0,0,-1)时,听起来像2D物体“面向”远离相机。如果你反转你的三角形顶点的排序,它们应该出现。

你可以将相机放在任何你想要的地方。如果您正在查看3D对象,则应该没有问题。

在DirectX中,只有在从相机看到它们的顶点按顺时针顺序时才能看到2D对象(尽管你可以关闭它,或者如果你愿意,可以改变它以丢弃逆时针三角形)。 DirectX使用顺时针和逆时针排序来丢弃面,因此它不会绘制3D对象的背面。