@threepipe/plugin-geometry-generator
Exports GeometryGeneratorPlugin with several Geometry generators to create parametric and updatable geometries like plane, circle, sphere, box, torus, cylinder, cone etc.
Example — Source Code — API Reference
bash
npm install @threepipe/plugin-geometry-generator
The generated geometries/meshes include the parameters in the userData and can be re-generated by changing the parameters from the UI or the plugin API.
Includes the following generator which inherit from AGeometryGenerator:
- plane: PlaneGeometryGenerator,
- sphere: SphereGeometryGenerator,
- box: BoxGeometryGenerator,
- circle: CircleGeometryGenerator,
- torus: TorusGeometryGenerator,
- cylinder: CylinderGeometryGenerator,
Sample Usage:
typescript
import {ThreeViewer, UnlitMaterial} from 'threepipe'
import {GeometryGeneratorPlugin} from '@threepipe/plugin-geometry-generator'
const viewer = new ThreeViewer({...})
const generator = viewer.addPluginSync(GeometryGeneratorPlugin)
const sphere = generator.generateObject('sphere', {radius: 3})
viewer.scene.addObject(sphere)
// to update the geometry
generator.updateGeometry(sphere.geometry, {radius: 4, widthSegments: 100})
// to add a custom generator
generator.generators.custom = new CustomGenerator('custom') // Extend from AGeometryGenerator or implement GeometryGenerator interface
// refresh the ui so the new generator is available to select.
generator.uiConfig.uiRefresh?.()
// change the material type for all objects
generator.defaultMaterialClass = UnlitMaterial // by default its PhysicalMaterial
viewer.scene.addObject(generator.generateObject('box', {width: 2, height: 2, depth: 2}))