Tuesday 7 June 2011

Slicing NURBS: surface intersection with a plane

I'd like to create a skeinforge equivalent that takes a pure NURBS model as input and creates a set of NURBS toolpaths, the fundamental challenge in this approach is how to efficiently/accurately slice the model into printable layers.  Graphics literature contains some promising leads for suitable algorithms, this is the most directly applicable I've found so far:

http://kingkong.me.berkeley.edu/~adarsh/TVCG09.pdf

Ignoring it's use of the GPU, my summary of the technique is as follows:

Find the intersections of two NURBS surfaces by building an octree that progressively identifies child nodes that contain an intersection of surface bounding boxes.  The octree is expanded until the desired precision is reached.  A new curve(s) can then be fitted to the identified intersection points (defined by the octree leaf nodes), using MLS, etc. 

I was hoping for a more direct method, but a search based technique will do although maintaining sufficient accuracy on complex models may involve a large computation overhead.  I doubt this would be a practical limitation - especially as the host could be generating slices as the model is being printed, so the delay before printing can start would be negligible.

Referring to my earlier post regarding tool path optimisation, the "smoothing" process would be incorporated into the curve fitting stage of the slice algorithm - intuitively I suspect this could be optimised, such that the fitting algorithm simultaneously solves for an accurate and sufficiently smooth curve.

More to follow...  once I've read this paper properly: http://www.cs.berkeley.edu/~hling/research/paper/curve.htm

No comments:

Post a Comment