Three.js使用THREE.ExtrudeGeometry无法冲压切割线性形状孔洞求助
问题原因
Three.js 中 THREE.ExtrudeGeometry 可识别的孔洞必须是封闭的路径区域,你定义的两个线性孔洞仅包含单条线段,属于开放路径,没有围成闭合的面,因此无法被识别为需要挖除的区域,也就不会生效。圆形孔洞能正常生效的原因是圆弧路径本身是闭合的环形区域。
解决方法
如果需要实现细缝效果的孔洞,需要将单条线条转换为带微小宽度的闭合矩形路径,示例修改代码如下:
// 定义细缝的宽度,可根据需求调整数值 const slitWidth = 0.5; // 第一个细缝孔洞修改为闭合矩形 var hole1 = new THREE.Path(); hole1.moveTo(18, 20 - slitWidth/2); hole1.lineTo(20, 20 - slitWidth/2); hole1.lineTo(20, 20 + slitWidth/2); hole1.lineTo(18, 20 + slitWidth/2); hole1.lineTo(18, 20 - slitWidth/2); // 闭合路径 boardShape.holes.push(hole1); // 第二个细缝孔洞同理修改 hole1 = new THREE.Path(); hole1.moveTo(25, 25 - slitWidth/2); hole1.lineTo(27, 25 - slitWidth/2); hole1.lineTo(27, 25 + slitWidth/2); hole1.lineTo(25, 25 + slitWidth/2); hole1.lineTo(25, 25 - slitWidth/2); boardShape.holes.push(hole1);
额外注意事项
- 所有孔洞路径必须完全闭合,不能有断点
- 孔洞路径的环绕方向需要和外轮廓方向相反(你示例中外轮廓是顺时针绘制,孔洞按逆时针绘制即可,上述修改后的代码已经符合该要求)
内容的提问来源于stack exchange,提问作者Bhavin S.
相关产品推荐
相关产品推荐

