The Lattice Plane is a powerful yet easy-to-use deformer inspired by the FFD Deformer to arbitrarily reshape an object by influencing the generator’s control points located on a 2D cage.
Whilst traditional FFD deformation (Wikipedia) is usually delivered starting from a 3D cage of evenly spaced points which modify the target object based on the displacement of the control points using Bezier approximation, the Lattice Plane restricts the deformation cage to 2D space (actually a rectangular area) making it much easier to identify points and delivering lower computation latency due to the lower number of points.
Although using a 2D cage all the prerogatives of FFD deformation are granted:
- smooth deformations of arbitrary shapes
- local control of the deformation
- fast computation
- customizable degree of smoothness
- topology continuity preservation in deformed body
The usage of the Lattice Plane doesn’t differ from the usage of any other deformer in Cinema 4D. After nesting the deformer under the target body, deformation takes place displacing the control points of the cage. Similarly to other deformers, multiple Lattice Plane(s) can be stacked to create local refinements without the need to increase the cage segmentation too much.
- Active Area: area interested by the deformation [Unlimited / Within cage]. If set to “Unlimited”, and the projection of the deformed object is larger than the deformation cage, the deformation affects all the object even those parts whose projections fall outside the deformer’s cage. If set to “Within cage” the deformation interests only those portions of the object whose projections fall within the deformation cage.
- S-size: size of the cage in the “S” direction.
- T-size: size of the cage in the “T” direction.
- S-segments: number of cage segments in the “S” direction (points are S-segs + 1).
- T-segments: number of cage segments in the “T” direction (points are T-segs + 1).
- Enable Normals Check: checks if the deformation affects also those polygons whose normals are within the angle defined by the deformer’s Z-axis and the “Normal Threshold” value.
- Normal Threshold: the angular range [0º:180º] for filtering normals.
- It’s always a good practice to start the deformation process with the lowest possible number of control points, in order to avoid undesired hills and bumps. Once the deformed shape fits within a certain amount of tolerance with the desired shape, it’s suggested to increase the refinement level to optimize the shape.
- Increasing the number of control points always maintains the deformation achieved; decreasing the number of control points might result in deformation details being lost.
- Local refinements should always be achieved with small-sized Lattice Plane(s) stacked together rather than a single deformer featuring an highly detailed cage.
- When using “Unlimited” active area it’s suggested to have the size of the cage at least as big as modified object or to keep control points displacement small enough to avoid unpleasant deformations.
When Active Area is set to “Unlimited” the deformation of the object is defined by the virtual control points extended (both directions / both sides) using tangent continuity from the current cage’s points. The further the vertex of the object from the cage boundaries, the more the deformation applied to it. To limit this behavior beware to use small control points displacement or to have a cage as big as the projected mesh on the cage plane.
Enable Normals Check
Enabling normals check with the default value of 90º, will limit the deformation to affect only those polygons of the mesh which are “visible” by the cage itself. Those in the “dark side” are instead left unmodified.
The angle threshold, once the “Enabling Normals Check” is active, gives control on the influence of the deformation based on the angle formed by the original face normal and the Z-axis of the deformer. If the angle is within the angle threshold the face is deemed to be deformed otherwise it’s left in its original status.
Cinema 4D R17 and higher.
latticeplane_1.0.0.zip (93.8 KiB)