【发布时间】:2016-11-28 08:08:20
【问题描述】:
此页面https://goocreate.com/learn/everything-you-always-wanted-to-know-about-rotation/ 将“LookAt”功能描述为能够旋转 3D 对象以面对另一个对象。 LookAt 函数的内部操作描述(但未在代码中列出)为:
函数的工作方式是它接受实体和目标 位置并减去它们以获得一个反向向量。然后它计算 上向量和后向量的叉积得到 正确的向量。然后它计算右之间的叉积 向量和后向量得到一个与 方向和右向量,最后存储所有三个 在我们的旋转 Matrix3x3 内归一化的向量在它们各自的 行。
我试图在没有 3D 函数库的情况下复制它来帮助我。我有 3d 矢量减法、矩阵乘法、点积和叉积函数。 (我在 Lua 中编码。)
我想不通的是如何使一个对象与另一个对象面对相同的方向(并且希望是方向)。
我已经读到这只是基于角度创建一个旋转矩阵的问题,但是我发现的所有关于 3D 角度的讨论都通过返回一个角度来完成 - 我认为会有 3 个角度 - 一个用于每架飞机。
如何构造这个旋转矩阵?我不知道我的对象面向哪个方向,这就是为什么计算对象当前的 x,y,z 角度的问题是个问题。我认为我需要一个函数来确定对象当前的 3 维角度,以及将其转换为另一个对象的旋转矩阵的方法。
【问题讨论】: