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

时间:2016-04-05 14:45:41

标签: javascript unity3d three.js modeling

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

Unsmoothed part of the model

我使用了Unity资源商店中的插件,将模型导出到JSON文件中,然后导入到我的three.js应用程序中。问题是该插件不会导出平滑组,因此模型的质量看起来不太好。

有没有办法用three.js来平滑一切?

1 个答案:

答案 0 :(得分:1)

你可以使用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(包含网格的数组(数字可以根据场景中的模型进行更改))
    • 网格(包含有关几何体的数据,这是您需要修改的内容)。

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

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 );

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