我正在尝试制作横截面OBJ装载有Three.js OBJ 加载器使用threeCSGJavaScript 的包装器构造立体几何图书馆。
当我使用常规网格(如球体/立方体)时,相交 csg 操作效果很好。我还可以使用处于初始位置的 obj 制作漂亮的横截面(白色对象,下面以红色显示横截面):
但是,当我旋转对象时,无论我如何更改其旋转,横截面都是相同的:
如何让 csg 相交运算考虑到对象的旋转?它与普通的 Three.js 网格(立方体)按预期工作。
这可能与 Three.js 加载 OBJ 文件的方式有关——它似乎将一堆网格存储在父对象中,然后可以在场景中添加/操作这些网格。这就是我执行 csg 操作的方式:
threeOBJ.traverse( function ( child ) {
if (child instanceof THREE.Mesh) {
cc = crossSection( child );
scene.add( cc );
}
} );
The crossSection()
函数与图像中看到的蓝色透明平面和每个子网格执行 csg 相交操作。它返回一个 THREE.Mesh,然后我将其添加到场景中。
我觉得我一定是错误地提到了一些东西,因为它没有考虑轮换,但我不知道是什么。有没有更好的方法将 csg 与 Three.js 加载的 OBJ 一起使用;将所有子网格合并到一个父网格中然后执行布尔运算会更好/可能吗?
为了解决这个问题,我旋转了飞机而不是 OBJ,效果非常好。要查看对象的所有侧面,您还可以简单地旋转相机、交替轨迹球控件并控制平面的移动以获得所需的视图。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)