UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

26 lines (25 loc) 859 B
"use strict"; 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 };