2

我尝试绘制具有多个面的网格。

有些脸是画的,有些不是。

当实例化一个通常不绘制的网格时,使用相反的索引绘制它。

以下不起作用:

   geom.faces.push(new THREE.Face3(k,k+1,k+2,myface.normal));

这有效:

   geom.faces.push(new THREE.Face3(k+2,k+1,k,myface.normal));

这对我来说意味着顶点的顺序是错误的,因此法线是在相反的方向绘制的,但是我将正确的法线传递给脸部(我自己计算)即使我尝试否定法线,脸部也是未绘制。

因此,如果我按照我的理解通过了正确的法线,那么如果将索引放在相反的位置或以其他方式放置,则没有任何区别。

我哪里错了?

4

1 回答 1

4

面正面由缠绕顺序决定,而不是面法线。默认缠绕顺序是逆时针 (CCW)。

查看 的来源Geometry.computeFaceNormals(),并注意计算出的面法线如何与 CCW 缠绕顺序一致。

三.js r.58

于 2013-07-14T15:00:10.423 回答