正确定向3D网格以指向其前进方向

时间:2014-12-27 14:22:26

标签: opengl 3d rotation

我试图让一个网格遍历一个球体的电路。我拍摄了围绕球体的图像,并将我希望网格跟随的路径着色。然后我计算了路径的所有(u,v)点。使用(u,v)点,我转换为球面坐标以使网格到球体上,并围绕X和Y轴rot.xrot.y设置旋转,以便网格相切到球体并面向球体的北极。我的问题是让网格朝向它前进的方向。第三个旋转变量rot.z用于设置网格的标题。目前,我从第5点到第14点得到(u,v)点,并取当前点的线段和10个未来点中每一点的平均仰角。这是有效的,但是两个缺点是航向非常频繁地振动,并且当航向略微急剧变化时航向倾向于不准确。什么是计算网格航向的好方法?

1 个答案:

答案 0 :(得分:1)

一种简单的方法是构建旋转矩阵。因此,您不必考虑角度,因为如果您知道方向,则向上或向右矢量可以计算所有条目。在你的情况下,方向是球体上的切线,向上矢量是该点的法线。

vec3 direction = tangent;
vec3 up = normal;
vec3 right = cross(direction,up);

mat3 m;
m[0] = right;
m[1] = up;
m[2] = direction;