如何理解/使用gl-matrix函数fromRotationTranslationScale()

时间:2017-10-12 18:51:56

标签: animation matrix gl-matrix

我在plunkr中的GL中有一个立方体,如下所示: enter image description here

我想从枢轴缩放,旋转和平移立方体。 希望能像https://www.youtube.com/watch?v=sZeBm8EM3mw&feature=youtu.be

那样制作动画片

对于这种转变,我将使用: gl-matrix。幸运的是,这种转换在mat4.fromRotationTranslationScale()

下有一个方法

问题是我有一段时间只使用这种方法吗?没有错误,只是默认实现从屏幕上删除了多维数据集。

mat4.fromRotationTranslationScale(
  matrix,
  quat.create(), 
  vec3.create(),
  vec3.create()
);
  

(静态)fromRotationTranslationScale(out, q, v, s) → {mat4}

     

根据四元数旋转,矢量平移和矢量比例创建矩阵。

Parameters:

Name    Type    Description
out mat4    mat4 receiving operation result
q   quat4   Rotation quaternion
v   vec3    Translation vector
s   vec3    Scaling vector

问题:

我错误地使用fromRotationTranslationScale了吗?如果是这样,我哪里出错了。如果没有,怎么能得到某种反馈。

我对数学很弱,但我觉得我可以在你的帮助下进行逆向工程和学习;)。

1 个答案:

答案 0 :(得分:0)

我猜你的问题是比例矢量。实际上,我认为默认向量值为0.00.00.0,如果将此缩放参数放入转换中,则对象会消失,因为它的大小为{{1} } ...和,0太小而不可见:)

传递给这种功能的好的理想价值如下:

0.0

这对应于单位矩阵:

//             X    Y    Z    W
Quaternion  =  0.0, 0.0, 0.0, 1.0
Translation =  0.0, 0.0, 0.0
Scale       =  1.0, 1.0, 1.0

您可以注意 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 的对角线,如果您将比例值设置为1.0此对角线由0.0填充,则此矩阵转换所有矢量(例如顶点位置)在所有轴上乘以0.0,在任何地方都会0.0