This PR adds support for new !slice, !intersect, !union and !difference nodes in a !canvas3d scene that cut apart models and combine them with boolean operations. There are some important notes on this:
models must be solid, steps will be taken to combine edges and fill holes; if necessary, the nuclear option is to compute a convex hull around the model
because edges are combined, primitive models with sharp edges will lose their definition as their vertices are combined and vertex normals averaged – the operators will attempt to snap apart these edges again for rendering so as to retain smooth, natural shading (controlled by the smooth= and minimum_area= attributes
solid model geometric operations are expensive, but they will be aggressively cached – if the operations have to be re-executed constantly because of dynamic parameters then it is a good idea to step these parameters so that caching will do something useful
This PR re-adds a hard requirement on scipy and introduces new ones on manifold3d, mapbox_earcut, networkx, rtree and shapely.
This PR adds support for new
!slice
,!intersect
,!union
and!difference
nodes in a!canvas3d
scene that cut apart models and combine them with boolean operations. There are some important notes on this:smooth=
andminimum_area=
attributesThis PR re-adds a hard requirement on scipy and introduces new ones on manifold3d, mapbox_earcut, networkx, rtree and shapely.