如何在 Three.js 场景中平滑我的多边形?
How can I smooth my polygons in a Three.js scene?
我在Three.js这里有这个模型:
我使用 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 );
取决于您拥有的模型数量。
这就像您必须打开一个容器,然后在里面找到一个较小的容器,然后是另一个容器,依此类推,直到您访问几何数据。希望它足够清楚:)
我在Three.js这里有这个模型:
我使用 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 );
取决于您拥有的模型数量。 这就像您必须打开一个容器,然后在里面找到一个较小的容器,然后是另一个容器,依此类推,直到您访问几何数据。希望它足够清楚:)