0

我在这个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()
);

(静止的)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不正确吗?如果是这样,我哪里错了。如果没有,如何获得某种反馈来玩弄。

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

4

1 回答 1

0

我想你的问题是比例向量。实际上,我认为默认向量值为0.0, 0.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任何地方。

于 2017-10-12T20:08:12.040 回答