0

我有两个在一端相交的圆柱体。我可以单独更改交叉点的半径,但它们仍然在一端相遇,如下所示。但是,我希望这两者之间的交点是平滑的,或者换句话说,它们在交点中的法线要像这里提到的那样共享:http ://www.opengl-tutorial.org/intermediate-tutorials/tutorial-9-vbo-索引/ . 我已将法线更新设置为 TRUE,并将法线的所有 y 分量在交点处更改为零。它仍然没有显示出平滑的交叉点。这两个圆柱体是用 BufferGeometry 制成的。在此处输入图像描述

所以我的代码的一部分更重要:1-由于几何是BufferGeometry,我首先使用下面的两个命令来创建两个几何来创建法线:

comp.mesh.geometry.computeFaceNormals();
comp.mesh.geometry.computeVertexNormals();

2-然后由于两个几何图形具有相同数量的顶点,我将所有顶点的 y 分量设置为 0:

for (i=0;i<comp.mesh.geometry.attributes.position.array.length;i++){
comp.mesh.geometry.attributes.normal.array[i*3 + 1]  = 0;
comp1.mesh.geometry.attributes.normal.array[i*3 + 1]  = 0;
}

当我让程序显示法线时,它们的法线 y 分量为 0,但几何图形还不平滑。

4

1 回答 1

0

我认为唯一可能的方法是焊接这些点。您需要检查重复项,并为它们分配相同的索引。使用这些不定数进行三角测量和顶点法线计算。

于 2017-04-25T17:53:45.243 回答