WebGL - 沿其行进方向旋转对象

时间:2011-09-02 19:39:53

标签: javascript math opengl webgl three.js

在此示例中:http://deeplogic.info/project/webGL/

如何在物体行进方向上旋转物体?

2 个答案:

答案 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(弧度为半圈)。