在此示例中:http://deeplogic.info/project/webGL/
如何在物体行进方向上旋转物体?
答案 0 :(得分:3)
假设您的物体正在朝D方向移动,那么您需要做的就是找到一个垂直于该方向的矢量。如果您的移动只在一个平面上,您可以通过取D与平面法线N的叉积来找到此向量E.
E = D × N
这会产生3个向量D,E和N.归一化后,它们形成旋转坐标系的基础。您可以将它们放入3×3矩阵的列中
D_x E_x N_x
D_y E_y N_y
D_z E_z N_z
将此矩阵扩展为4×4同质矩阵
D_x E_x N_x 0
D_y E_y N_y 0
D_z E_z N_z 0
0 0 0 1
并且您可以使用glMultMatrix将其传递给OpenGL,以将其应用于矩阵堆栈。
答案 1 :(得分:1)
要在方向(x,y)上移动的对象绕z旋转,可以使用Math.atan2(y,x)
方法。它会以弧度返回一个角度。 ES 2之前的OpenGL约定是以度为单位的,但是现在它取决于您将变换推送到顶点着色器的任何代码。你可能想要转换,在这种情况下,只需将结果乘以180(半度以度为单位)并除以pi(弧度为半圈)。