我有,我认为这对某些人来说是一个非常明显的问题,所以我希望有人可以快速为我清理它。我有一个XNA应用程序,我绘制一个顶点网格,相机位于它上方20.0f。如果我将相机置于0,-20,0并且目标位于0,0,0,则顶点不会出现。如果我将X或Z轴稍微调整为0.1,则顶点显示。这是为什么?
由于
答案 0 :(得分:0)
如果没有看到您的代码,最可能的原因是因为您的视图矩阵的向上矢量与您的相机所看到的方向平行。如果您的相机位于0,-20,0并且您的目标是0,0,0并且您的向上矢量是0,1,0则会出现并行情况。偏移位置或目标会略微消除这种平行情况。
当您运行CreateLookAt()时,幕后框架代码会使用摄像头所在的方向(目标 - 位置)穿过向上矢量。如果正在交叉的两个向量是平行的,则返回零长度向量结果,该结果会破坏视图矩阵。
道德: 永远不要让你的向上矢量与相机看的方向平行。