3

我在 THREE.js 中遇到顶点法线问题。(作为参考,我使用的是修订版 58。)出于各种原因,我想在设置几何体时首先计算面顶点法线,然后可以自由地对其进行变换、合并等等。

虽然我意识到法线取决于应用矩阵时转换的顶点,但我认为 geometry.applyMatrix 也能够转换它们。但是,虽然以下工作正常:

geometry.applyMatrix(new THREE.Matrix4().makeScale(1, -1, 1));
geometry.computeFaceNormals();
geometry.computeVertexNormals();

...以下操作顺序产生反转的顶点法线:

geometry.computeFaceNormals();
geometry.computeVertexNormals();
geometry.applyMatrix(new THREE.Matrix4().makeScale(1, -1, 1));

所以我只是想知道,这是否按预期工作?在计算顶点法线之前,是否需要先对几何体进行所有转换?

4

1 回答 1

4

three.js 不支持对象矩阵中的反射。通过设置负比例因子,您可以反映对象的几何形状。

您可以自由地将这样的矩阵直接应用于您的几何图形,当然,这就是您正在做的事情。

但是,这将导致许多不良后果,其中之一是几何面将不再具有逆时针缠绕顺序,而是顺时针。它还将导致反转的面法线,如 计算geometry.computeFaceNormals()

除非您熟悉图书馆的内部运作,否则我建议不要这样做。

三.js r.58

于 2013-05-09T19:48:18.860 回答