2

我正在尝试使用用于 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 一起使用?将所有子网格合并到一个父网格中然后执行布尔运算会更好/可能吗?

4

1 回答 1

1

为了解决这个问题,我旋转了平面而不是 OBJ,它工作得很好。要查看对象的所有侧面,您还可以简单地旋转相机,交替轨迹球控制并控制平面的移动以获得所需的视图。

于 2014-06-16T06:23:40.267 回答