@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
26 lines (25 loc) • 859 B
JavaScript
;
import { BaseSopOperation } from "./_Base";
import { LoopSubdivision } from "./utils/Subdivide/three-subdivide";
import { mergeVertices } from "three/examples/jsm/utils/BufferGeometryUtils";
export class SubdivideSopOperation extends BaseSopOperation {
static type() {
return "subdivide";
}
cook(inputCoreGroups, params) {
const coreGroup = inputCoreGroups[0];
const objects = coreGroup.threejsObjects();
for (let object of objects) {
const geometry = object.geometry;
if (geometry) {
const subdividedGeometry = LoopSubdivision.modify(geometry, params.subdivisions, {});
object.geometry = params.mergeVertices ? mergeVertices(subdividedGeometry) : subdividedGeometry;
}
}
return coreGroup;
}
}
SubdivideSopOperation.DEFAULT_PARAMS = {
subdivisions: 1,
mergeVertices: true
};