如何在 Three.js 场景中平滑我的多边形?

How can I smooth my polygons in a Three.js scene?

我在Three.js这里有这个模型:

Unsmoothed part of the model

我使用 Unity 资产商店的插件将模型导出到 JSON 文件,然后导入我的 three.js 应用程序。问题是插件没有导出平滑组,所以模型的质量看起来不太好。

有什么方法可以让 three.js 变得平滑吗?

您可以使用 THREE.SubdivisionModifier 并像这样使用它:

var modifier = new THREE.SubdivisionModifier(divisions);

// Apply the modifier to your geometry NOT MESH.
modifier.modify( geometry );

实际上 Three.js 构建中不包含它,因此您必须导入它。 你可以得到它here

更新 1 基本上你 JSON 文件被加载为一个 Object3d,它就像一个容器。它的结构如下:

  • Object3D
  • children(包含您的网格的数组(数量可以根据场景中的模型而改变))
    • 网格(包含有关您的几何体的数据,这是您需要修改的内容)。

所以为了修改 "geometry" 你需要像这样访问它:

modifier.modify( mesh.children[0].children[0].geometry );

您需要对场景中的每个模型应用修改器,因此:

modifier.modify( mesh.children[0].children[0].geometry );
modifier.modify( mesh.children[0].children[1].geometry );
modifier.modify( mesh.children[0].children[2].geometry );

取决于您拥有的模型数量。 这就像您必须打开一个容器,然后在里面找到一个较小的容器,然后是另一个容器,依此类推,直到您访问几何数据。希望它足够清楚:)