我需要为相机在任何角度观察时创建一个向上矢量(除了直接向下或向上,因为向上矢量将垂直于y轴)。
向上矢量必须垂直于航线。当视线不是沿着y轴时,你可以想象一个眼睛周围的圆圈和向上矢量可能的视线。在这个圆上,将有一个点在y轴上比任何其他点更远。这就是我想要的向上传感器。
我确信我可以找到一个解决方案,但我猜测人们之前会做很多次这样的事情,我希望得到最有效的解决方案。
我的相机,至少在使用时,不会直接向下或向上看y轴,所以没有问题。
答案 0 :(得分:16)
大多数商业游戏使用交叉产品生成垂直。
规范化您的外观向量。
取你的外观矢量和矢量0,1,0的叉积。这为您提供了正确的向量。
获取右矢量和外观矢量的叉积。这是您的新向上矢量,它与原始外观矢量垂直。
答案 1 :(得分:3)
gluLookAt
不要求您提供的向上矢量垂直于您正在查找的方向。所以你可以使用0,1,0。
如果你真的,真的想要提出一个垂直向量,看看the man page for gluLookAt
并做他们正在做的事情来做你