你如何确定查看向量?

Cod*_*ein 4 graphics linear-algebra

这是Peter Shirley 的计算机图形基础知识的摘录.在第114页(在第3版中它的内容如下:

我们希望能够在3D中改变视点并向任何方向看.指定观察者位置和方向有许多约定.我们将使用以下一个:

  • 眼睛位置e
  • 凝视方向g
  • 查看向量t

眼睛位置是眼睛"从中看到"的位置.如果您将图形视为摄影过程,它就是镜头的中心.凝视方向是观察者正在观察的方向上的任何向量.查看向量是平面中的任何向量,它将观察者的头部分成左右两半,并指向站在地面上的人"向天空".这些向量为我们提供了足够的信息来建立一个具有原点euvw基础的坐标系.....

大胆的句子让我最为困惑.遗憾的是,本书仅提供了非常基本和粗略的图表,并未提供任何示例.

这句话是否意味着所有的查看向量都是简单的(0, 1, 0)

我在一些例子上尝试了它,但它与给定的解决方案并不完全匹配(尽管它有时很接近).

com*_*orm 6

简短回答:查看向量不是从其他组件派生的:相反,它是一个用户输入,选择此项以确保摄像机正面朝上.或者,换句话说,查看向量是如何告诉您的相机系统"向上"的方向,以便定向相机.


您需要查看向量的原因是相机的位置和注视方向不足以完全确定其姿势:您仍然可以围绕位置/注视轴旋转相机.需要查看向量来完成锁定相机; 并且因为人们通常喜欢正面向上看,所以查看向量通常是固定的方向,由场景在坐标空间中的定向方式决定.

理论上,查看向量可以在任何方向,但实际上"向上"通常是坐标方向.哪个坐标是"向上"是一个常规问题:在你的情况下,它看起来Y轴是"向上",但有些系统更喜欢Z轴.

也就是说,我会重申:你可以选择你想要的任何方向.如果您希望您的第一人称POV"倾斜"(例如,环顾四周,或指示中毒),您可以调整您的查看向量来完成此操作.此外,考虑像超级马里奥银河这样的游戏中的相机控制......


def*_*ect 3

我去年参加了图形学课程,但我已经很生疏了。我参考了一些旧笔记,所以这里是。

我认为粗体线只是为了介绍而试图解释视图向上向量 ( VUP) 在一种情况下的含义,而不是在所有情况下都必然是什么。措辞有点奇怪;这里有一个改写:“考虑一个人站在地上。VUP在这种情况下,向量将平分观看者的头部并指向天空。”

要确定标准向上向量,请执行以下操作:

  1. 正常化g
  2. g_norm x (0,1,0)给你view-right,或相机视图右侧的向量
  3. view-right x g给你VUP

如果您愿意,您可以应用轮换。