[OpenSCAD] Can you give me any rendering advice...?
Dan Zuras 3D
threedee at nonabelian.com
Sun Dec 26 17:05:57 CET 2010
> Subject: Re: [OpenSCAD] Can you give me any rendering advice...?
> From: Marius Kintel <marius at kintel.net>
> Date: Sat, 25 Dec 2010 22:57:09 +0100
> To: Dan Zuras 3D <threedee at nonabelian.com>,
> openscad at rocklinux.org
> On Dec 10, 2010, at 12:56 PM, Dan Zuras 3D wrote:
> > The fly in the ointment is that CGAL increases the
> > rendering time by a lot for each object I add. And
> > I am no where near the number of objects I need.
> I took a look at this and the reason why the F5 preview has issues is =
> that the intersection operation causes the number of evaluated objects =
> for OpenCSG to increase dramatically. We have implemented a safety =
Thank you for looking into the problem.
> measure where we don't render this preview if the number of objects =
> after CSG normalization exceeds 1000. This could be made configurable in =
Will this mitigate the problem or merely
cause OpenSCAD to crap out when it happens?
> the GUI, but it would quickly become extremely slow to render the =
> resulting CSG trees.
> I'm not 100% familiar with the inner workings of the OpenCSG library, so =
> it hard to say if it's possible to optimize this.
> Also, the CGAL library used for geometric evaluation (F6) is extremely =
> slow. This is a long-standing issue which I'm hoping to be able to =
I believe I (& others) have run into variations
of this issue before. While I also have no idea
how it happens I am well aware that it does.
> address in the future, although it's not too trivial. I'm painfully =
> aware of that this significantly limits the usefulness of OpenSCAD for =
> large designs, or even certain types of smaller designs. In the next =
> version of OpenSCAD, CGAL will be isolated into components which could =
> be rewritten to other libraries, which would open for easier =
> experimentation in case someone feels like picking up this issue.
This last approach is the only path to a real cure,
The fact that OpenCSG or CGAL uses aribtrary precision
software floating-point rather than 64-bit hardware
double precision is at the root of the problem. The
fact that their data structures grow to gobble up
huge amounts of memory in a more than linear fashion
suggests some algorithmic problem as well.
Really, in an era of cheap computers with gigabytes
of memory & gigaFLOPS of processing power available,
one would expect to be able to render objects with
millions of primitives in seconds. Not be crippled
in both time & space by the attempt to render (at
all) a thing with mere thousands of primitives.
I know now that the fault lies with CGAL or OpenCSG
& not with anything you have written. Still, the
decision to use them to save programming time must
be looked at again in the light of how much rendering
time your users are spending.
If, as you suggest, this can be done incrementally
then the pain of doing it can be administered in
And the promise is that OpenSCAD will become an
extraordinary tool when you come out the other end.
I look forward to that day.
More information about the OpenSCAD