ShapeCutter is a procedural polygon boolean operator. It enables boolean operations on particle meshes. This operator uses standard 3ds Max boolean operations so the same guide lines and restrictions apply to mesh quality, when using boolean operations with this operator. It is strongly advised to use 'perfect' meshes to start with, when you are planning on doing multiple stages of boolean operations on the same mesh. Complex multi-boolean operations will eventually always fail when using polygons. Check out the 3ds Max manual to learn more about mesh boolean functions and how they work.
In addition to the polygon or mesh based booleans, ShapeCutter introduces an additional method that purely works on a volume representation of any mesh. When using this true volume mode, the ShapeCutter will re-sample the mesh into a rasterized (voxelized) representation of itself. All boolean operations are done 100% procedurally based on the volume representation of the meshes. The original mesh will not be used at all in all further boolean operations. The outcome will be a final mesh that is as well re-constructed out of a final volume. The resolution and quality of this mesh is directly dependent on the voxel size used to sample the volume in the first place.
To get more information about the procedural CSG modeling approach, check the end of this page.
ON - (Bool) This input data stream determines whether the operator is considered 'on' or 'off.' You can connect other operators to this input channel such as a Bool Helper to activate/deactivate the whole operator.
Time - (Time) This input data stream is used to define the local time for the operator when the user wants to override the default system time.
Particle - (Particle) This input data stream reads in the currently selected particle and uses it as the Target mesh for boolean operations.
OperantParticle - (Particle) This input data stream reads in the currently selected particle and uses it as an operant for the boolean operation
The remaining input parameters are identical to the UI controls. For more information about the use of an individual parameter, check out the descriptions below.
BornParticle - this represents the newly created particle coming out of the boolean operation. Particle will only be created when Split Elements is active.
Target - from this drop down list you may choose any particle group to act as the Target object for any of the boolean operations.
Include Subgroups - check this option to include Sub Groups
Operant - from this drop down list you may choose any particle group to act as the operant object for any of the boolean operations.
Include Subgroups - check this option to include Sub Groups
Type - chooses between several boolean operations.
Re-Bool - when checked, the Boolean operation will use the previous result and not the original object to calculate the boolean result. Whit this option you can cut away multiple parts from an object.
Split Elements - check this option to create new particles based on the 'cut off' boolean meshes
Element - choose the particle group the new elements should be created in.
From To - lets you choose how the split elements are created from the main mesh. The size based options work under the assumption that you try to cut or break off smaller parts from a bigger object.
Mesh to Volume
Voxel Size View - sets the voxel size in world units for the viewport, only. This size will be used to rasterize (voxelize) the mesh. The smaller this value the more details can be recreated form the original mesh surface. Keep in mind this is a volume so everything increases by the cubic!
Voxel Size Render - sets the voxel size in world units for rendering, only. This size will be used to rasterize (voxelize) the mesh. The smaller this value the more details can be recreated form the original mesh surface. Keep in mind this is a volume so everything increases by the cubic!
Exterior Bandwidth - the process of turning a mesh into a volume is based on the assumption that whenever there is a surface transition in 3D space (from empty to a face or face to empty) it is recorded in a volume grid. To optimize for speed and conserve memory only those areas of interest are stored in the volume. This parameter, defines how many voxels should be used to move outwards the original surface to store details in the volume. A good value is 2-5 but this may also be other values depending on the object and size.
Interior Bandwidth - like explained in Exterior Bandwidth, use this value to control how many voxels should be considered to fill the internal volume of an object. Values between
Filter - before processing of the volume a filter can be used to smooth out the result even further. Available filters are:
None - when selected, no filter will be used at all. The original volume positions will; define the surface.
Box - check this option to use a Box filter on the volume
Gaussian - check this option to use a Gaussian filter on the volume
Mean Curve - check this option to use a Mean Curve filter on the volume
Laplacian - check this option to use a Lapace filter on the volume
Iteration - filters have the option to iterate multiple times across the volume to create an even smoother result when creating a surface. Use this option to set the amount of iterations.,
Width - defines the area, used to apply the filter. The larger this area the smoother the surface gets.
Volume to Mesh
ISO Value - this defines the 'tightness' around the particles of the created surface. Negative values will move the surface closer to the particles (until the surface disappears) larger, positive values will usually create a smoother more loose surface representation of the point cloud.
Adaptivity - a valuer of 0 turns this function off. Higher positive numbers will create an adaptive mesh resolution that will only show higher mesh density near curvatures and details.
Relax Disoriented - check this option to move particles closer when they seem disoriented in relation to other faces.
Transfer from Reference Mesh
Face Normal - when checked, the surface normals of the original object are transferred to the volume representation of the object.
UVW/MtID/SmoothingGr. - check this option to transfer UVW, Material ID and Smoothing Groups of the original object onto the volume representation of the object.
Snap To Surface - check this option to move the newly generated surface as close as possible to its original position.
Auto Smoothing Group - check this option to apply an auto smoothing to the mesh created out of the volume.
Threshold - defines the angle at witch to apply smoothing to the mesh.
Relax - check this option to activate a post process mesh relaxing function. This is extremely useful for critical high detail situations to get soem extra smooth surfaces.
Smooth - a value of 1.0 will create the maximum of mesh smoothing (relaxing), a vlue of 0 will turn it off.
Iterations - sets the number of times this relaxation is processed over all vertices of the OpenVDB mesh.
Material - lets you select a material to be used for the surface.
Type - sets the mapping projection to be used on the boolean mesh
Planar - choose this to get a planar mapping
Cylindrical - when selected, cylindrical mapping is used
Spherical - select this option to get a spherical mapping
Ball - sets the mapping projection to shrink wrap be used on the boolean mesh
Box - uses box mapping
Alignment - sets the main axis for the mapping projection
Channel - sets the mapping channel
U Tiles / Flip - sets the amount of texture repetition. Flip mirrors the map on each repetition
V Tiles / Flip - sets the amount of texture repetition. Flip mirrors the map on each repetition
W Tiles / Flip - sets the amount of texture repetition. Flip mirrors the map on each repetition
Cylinder Cap - check this option to enable a planar mapping for the cylinder map
Material ID - sets the material ID for the created mesh.
Procedural CSG modelling or how to build a CSG tree
You can use multiple ShapeCutters and stack them onto each other. This is similar to the classic CSG methods were multiple boolean operations can be ordered in a tree like structure. One result will be fed into another set of operations. As one example you can have a 'rounding' boolean operation on one object and then after this has been done you can have more boolean operations on the same object. To optimize this process this operator will automatically detect that another ShapeCutter created a volume representation out of a mesh and it will take this end result and process it further.
IMPORTANT when stacking ShapeCutter operations it is the first ShapeCutter operator that defines for ALL other ShapeCutter operators the voxel size. By definition the voxelsize muts be the same throughout the boolean operations. Keep this in mind as this can be confusing as there will be no visual indicator that ShapeCutter operators will be dependent on each other. Make always sure the DynamicSet order or placement is logical and helps you in understanding what is going on.
As shown in the example below, the first boolean defines the voxel size for all ShapeCutters using the same objects.