【发布时间】:2014-08-01 18:17:57
【问题描述】:
我正在尝试使用 JavaScript constructive solid geometry 库的 threeCSG 包装器制作带有 three.js OBJ loader 的 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 一起使用?将所有子网格合并到一个父网格中然后执行布尔运算会更好/可能吗?
【问题讨论】:
标签: javascript three.js 3d-model threecsg