分离模型

This commit is contained in:
Last
2025-05-06 15:58:04 +08:00
parent 5042099121
commit 986fd6f3e8
5 changed files with 216 additions and 17 deletions

35
objects/螺丝帽.js Normal file
View File

@@ -0,0 +1,35 @@
import * as THREE from 'three';
import { SUBTRACTION, Brush, Evaluator } from 'three-bvh-csg';
export class 六角螺丝帽 extends THREE.BufferGeometry {
constructor(radius = 1, height = 0.5, holeRadius = 0.6) {
super();
this.parameters = {
radius: radius,
height: height,
holeRadius: holeRadius
};
this.buildGeometry();
}
buildGeometry() {
const { radius, height, holeRadius } = this.parameters;
// 创建螺丝帽主体 (六棱柱)
const hexagonBrush = new Brush(new THREE.CylinderGeometry(radius, radius, height, 6));
// 创建内部的孔洞 (圆柱体)
const holeBrush = new Brush(new THREE.CylinderGeometry(holeRadius, holeRadius, height + 0.1, 128));
// 执行布尔运算 (差集)
const resultBrush = new Evaluator().evaluate(hexagonBrush, holeBrush, SUBTRACTION);
// 将布尔运算结果应用到当前 BufferGeometry
this.copy(resultBrush.geometry);
this.computeVertexNormals(); // 计算法线
}
}
export default { 六角螺丝帽 };