我正在尝试使用用于 JavaScript构造实体几何库的threeCSG包装器来制作使用three.js OBJ 加载器加载的OBJ的横截面。
当我使用常规网格(如球体/立方体)时,交叉 csg 操作效果很好。我还可以在初始位置使用 obj 制作漂亮的横截面(白色对象,横截面在下面显示为红色):
但是,当我旋转对象时,无论我如何更改其旋转,横截面都是相同的:
如何让 csg 交集操作考虑到对象的旋转?它与普通的 three.js 网格(立方体)按预期工作。
这可能与three.js 加载OBJ 文件的方式有关——它似乎将一堆网格存储在父对象中,然后可以在场景中添加/操作。这就是我执行 csg 操作的方式:
threeOBJ.traverse( function ( child ) {
if (child instanceof THREE.Mesh) {
cc = crossSection( child );
scene.add( cc );
}
} );
该crossSection()
函数与图像中看到的蓝色透明平面和每个子网格执行 csg 相交操作。它返回一个 THREE.Mesh,然后我将其添加到场景中。
我觉得我一定是指错了一些东西,因为它没有考虑到轮换,但我不知道是什么。有没有更好的方法将 csg 与加载了三个.js 的 OBJ 一起使用?将所有子网格合并到一个父网格中然后执行布尔运算会更好/可能吗?