【问题标题】:Cross-sections of OBJ in three.js using ThreeCSGThree.js 中使用 ThreeCSG 的 OBJ 横截面
【发布时间】:2014-08-01 18:17:57
【问题描述】:

我正在尝试使用 JavaScript constructive solid geometry 库的 threeCSG 包装器制作带有 three.js OBJ loaderOBJ 的横截面。

当我使用常规网格(如球体/立方体)时,交叉 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 一起使用?将所有子网格合并到一个父网格中然后执行布尔运算会更好/可能吗?

【问题讨论】:

    标签: javascript three.js 3d-model threecsg


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-04-26
      • 2022-11-02
      • 2018-01-23
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多