Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
3d threeJS/threeCSG-使用EdgesGeometry时,在threeCSG布尔函数之后的共面上的杂散边_3d_Three.js_Csg_Threecsg - Fatal编程技术网

3d threeJS/threeCSG-使用EdgesGeometry时,在threeCSG布尔函数之后的共面上的杂散边

3d threeJS/threeCSG-使用EdgesGeometry时,在threeCSG布尔函数之后的共面上的杂散边,3d,three.js,csg,threecsg,3d,Three.js,Csg,Threecsg,我使用EdgesGeometry显示网格的外边缘,如下所示:EdgesGeometry(几何体,阈值角度) 这通常按预期工作,但在使用threeCSG进行“减法”或“并集”后,然后在生成的网格上生成边几何体,我得到各种杂散边出现在共面面上,即使我将“阈值角度”增加到“180度”,它们仍然存在 事情就是这样- 这是我的密码: (a和b是长方体几何图形的网格) 有人有什么想法吗? 谢谢 更新 下面是“线框几何体”的外观。。。 使用EdgesGeometry进行渲染时,您会看到意外的“边” 原因是t

我使用EdgesGeometry显示网格的外边缘,如下所示:EdgesGeometry(几何体,阈值角度)

这通常按预期工作,但在使用threeCSG进行“减法”或“并集”后,然后在生成的网格上生成边几何体,我得到各种杂散边出现在共面面上,即使我将“阈值角度”增加到“180度”,它们仍然存在

事情就是这样-

这是我的密码: (a和b是长方体几何图形的网格)

有人有什么想法吗? 谢谢

更新

下面是“线框几何体”的外观。。。

使用
EdgesGeometry
进行渲染时,您会看到意外的“边”

原因是
threeCSG
输出的伪影

大三角形的长边与三个小三角形的边重合——重合,但不共享

这意味着,长边根本不共享。三条短边也不是

未共享的边由EdgesGeometry渲染


three.js r.87

不是答案,但如果您想知道这些边来自何处,可以将线框应用于网格
c
,并查看其结构。我已在上面添加了这一点。这似乎不能解释为什么在使用“EdgeGeometry”时,有些线仍然存在。我的意思是使用
。线框:网格材质的true
,以查看内部发生的情况。当然,是的,它显示的网格与使用“EdgeGeometry”显示的网格相同,并且在可见面后面没有任何额外的内容。谢谢你的回答,我想我理解,但仍然对如何处理这个问题感到困惑,似乎它应该是可以修复的,或者这只是threeCSG系统的一个缺陷…?要修复它,你必须用三个较小的三角形替换大三角形,它们使用长边上的顶点。注意,矩形压痕周围也出现了同样的问题。好的。。因此,首先我需要想出一种方法来识别几何体中那些较大的面,然后我需要想出一种方法用正确的面替换它们。。是这样吗?我会试一试的我想。。。除非有人已经做过类似的事情?three.js是一个渲染引擎,而不是一个建模工具。在three.js之外构建或编辑模型并导入。
a_ = new ThreeBSP( a );
b_ = new ThreeBSP( b );

c_ = a_.subtract(b_);
c = c_.toMesh(mat_cube);

scene.add( c );

edges = new THREE.EdgesGeometry( c.geometry, 5 )
line = new THREE.LineSegments( edges, mat_line )
scene.add( line )