如何 understand/use gl-matrix 函数 fromRotationTranslationScale()

How to understand/use gl-matrix function fromRotationTranslationScale()

我在这个 plunkr 中的 GL 中有一个立方体,如下所示:

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

一样动画

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

下有一个方法

问题是我只是使用这个方法玩得很开心吗?没有错误,只是默认实现从屏幕上删除了立方体。

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

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

Creates a matrix from a quaternion rotation, vector translation and vector scale.

Parameters:

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

问题:

我是不是用错了fromRotationTranslationScale?如果是这样,我哪里错了。如果没有,如何获得某种反馈来玩弄。

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

我猜你的问题是比例向量。实际上,我假设默认向量值为 0.00.00.0,如果您将此比例参数放入转换中,您的对象就会消失,因为它的大小为 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,这在任何地方都给出 0.0