@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
82 lines (71 loc) • 3.08 kB
text/typescript
// import {BaseSopOperation} from './_Base';
// import {CoreGroup} from '../../../core/geometry/Group';
// import {DefaultOperationParams} from '../../../core/operations/_Base';
// // import {bunnyMesh} from '../../../core/softBody/Bunny';
// import {Object3D, Mesh} from 'three';
// import {tetrahedralize,TET_CREATION_STAGES} from '../../../core/geometry/modules/tet/utils/tetrahedralize';
// import {ObjectType} from '../../../core/geometry/Constant';
// import {MeshWithBVHGeometry,ThreeMeshBVHHelper} from '../../../core/geometry/bvh/ThreeMeshBVHHelper';
// import {logBlueBg} from '../../../core/logger/Console';
// // import { BufferGeometryWithBVH } from '../../../core/geometry/bvh/three-mesh-bvh';
// // function _makeBunny() {
// // const geometry = new BufferGeometry();
// // const pos = new Float32Array(bunnyMesh.verts);
// // geometry.setAttribute('position', new BufferAttribute(pos, 3));
// // geometry.setIndex(bunnyMesh.tetSurfaceTriIds);
// // geometry.computeVertexNormals();
// // return geometry;
// // }
// interface TetrahedralizeSopParams extends DefaultOperationParams {
// resolution: number;
// minQualityExp: number;
// // oneFacePerTet: boolean;
// // tetScale: number;
// stage: number;
// subStage: number;
// // removeOutsideTets: boolean;
// }
// export class TetrahedralizeSopOperation extends BaseSopOperation {
// static override readonly DEFAULT_PARAMS: TetrahedralizeSopParams = {
// resolution: 10,
// minQualityExp: -3,
// // oneFacePerTet: true,
// // tetScale: 0.8,
// stage: 0,
// subStage: 0,
// // removeOutsideTets: false,
// };
// static override type(): Readonly<'tetrahedralize'> {
// return 'tetrahedralize';
// }
// override cook(inputCoreGroups: CoreGroup[], params: TetrahedralizeSopParams) {
// const coreGroup = inputCoreGroups[0];
// const objects = coreGroup.threejsObjectsWithGeo() as Mesh[];
// const newObjects: Object3D[] = [];
// const stage = TET_CREATION_STAGES[params.stage];
// logBlueBg(`****************** tetrahedralize START (${stage})`);
// for (let object of objects) {
// // const geometry = _makeBunny();
// // const object = this.createObject(geometry, ObjectType.MESH);
// this._tetrahedralize(object ,params)
// }
// logBlueBg(`****************** tetrahedralize END (${stage})`);
// return this.createCoreGroupFromObjects(newObjects);
// }
// private _tetrahedralize(mesh: Mesh, params: TetrahedralizeSopParams) {
// ThreeMeshBVHHelper.assignDefaultBVHIfNone(mesh);
// const tetGeometry = tetrahedralize({
// mesh:mesh as MeshWithBVHGeometry,
// // resolution: params.resolution,
// minQuality: Math.pow(10.0, params.minQualityExp),
// // oneFacePerTet: params.oneFacePerTet,
// // scale: params.tetScale,
// //
// stage: TET_CREATION_STAGES[stage],
// subStage: params.subStage,
// // removeOutsideTets: params.removeOutsideTets,
// });
// const objectType = params.stage == 0 ? ObjectType.POINTS : ObjectType.MESH;
// newObjects.push(this.createObject(tetGeometry, objectType));
// }
// }