three-edge-projection
Visible geometry edge projection and flattening based on three-mesh-bvh.
JavaScript★ 347⑂ 21 forksMITupdated 1 month ago
visit the demo
git clone https://github.com/gkjohnson/three-edge-projection.gitgkjohnson/three-edge-projectionREADME.mdfork it — it’s yours
three-edge-projection
Edge projection based on three-mesh-bvh to extract visible projected lines along the y-axis into flattened line segments for scalable 2d rendering. Additonally includes a silhouette mesh generator based on clipper2-js to merge flattened triangles.
Examples
WebGPU
Installation
npm install github:@gkjohnson/three-edge-projection
API
See API.md for full API documentation.
Use
Generator
More granular API with control over when edge trimming work happens.
const generator = new ProjectionGenerator();
generator.generate( scene );
let result = task.next();
while ( ! result.done ) {
result = task.next();
}
const lines = new LineSegments( result.value.getVisibleLineGeometry(), material );
scene.add( lines );
Promise
Simpler API with less control over when the work happens.
const generator = new ProjectionGenerator(); const result = await generator.generateAsync( scene ); const mesh = new Mesh( result.getVisibleLineGeometry(), material ); scene.add( mesh );
Visibility Culling
To visibility cull a scene before generation you can use MeshVisibilityCuller before running the projection step.
const input = new MeshVisibilityCuller( renderer ).cull( scene ); const result = await generator.generateAsync( scene ); const mesh = new Mesh( result.getVisibleLineGeometry(), material ); scene.add( mesh );
more like this
