logoalt Hacker News

don-brightyesterday at 1:38 AM3 repliesview on HN

That immediacy is mostly thanks to OpenCSG which is essentially a magic trick to quickly fake 3d rendering of booleans between 3d objects using stencil buffer of gpu. http://opencsg.org/

In other words it renders the cylinders cubes spheres etc and their unions differences etc, to a 2d screen without actually calculating the intersection of those meshes / solids in 3d space.

This is the special thing about OpenSCAD design is they figured out how to build an abstract syntax tree that could either be sent to OpenCSG, CGAL (old engine), Manifold (new engine), or even the bare bones 'ThrownTogether' renderer (ancient engine on machines with no gpu that just draws 'negatives' as green blobs iirc).

It should be theoretically possible for any CAD program to do this. its just a lot of work.


Replies

spacedcowboyyesterday at 11:49 AM

> This is the special thing about OpenSCAD design is they figured out how to build an abstract syntax tree that could either be sent to OpenCSG, CGAL (old engine), Manifold (new engine), or even the bare bones 'ThrownTogether' renderer (ancient engine on machines with no gpu that just draws 'negatives' as green blobs iirc).

Mostly.

I've still had several instances when drawing curved solids that the OpenCSG renderer worked well with (visually) but when it came to render-time, there was something wrong. It is very hard to debug things, or at least I found it so, when it goes wrong like that.

marcosscrivenyesterday at 7:44 AM

I didn’t know they’d added an alternative kernel. The CGAL one used arbitrary precision which massively slowed it down.

Also, fillets are made using the Minkowski operation, which is super slow.

show 1 reply
beefletyesterday at 2:06 AM

wow, this is really neat. I always noticed how, when panning around with ortho view, it didn't need to re-render