Carbon N-Lattice

The Carbon N-Lattice is one of the most versatile nodes that Carbon has to offer.

It can be used for hair, fur, foliage, and plumage.

Carbon N-Lattice takes an input mesh made of multiple lattices and turns them into a multitude of hybrid dynamic objects where each individual lattice consists of a Carbon Soft that is partially welded to a Carbon Rigid frame. Then its attachment as well as swing and twist behavior is controlled with Carbon Joints.

 

Features 

With Carbon N-Lattice, you get fully dynamic lattices that interact with themselves and all other Carbon objects, meaning:

  • Precise collision detection between each lattice and optional self-collision per lattice.
  • Precise collision detection between each lattice and other Carbon objects, such as Cloth, Collider, Morph, Plumage, Rigid Body, Tetra and other N-Lattices.
  • Fast and robust simulation.
  • Interaction with Carbon Flow for lattices blowing in wind.

 

Furthermore, each lattice contains a simulated dynamic rigid frame modeling the root / shaft and providing each lattice with rigid body like joint capabilities that can:

  • Create and preserve styled lattice.
  • Swing and orient lattices for dynamic layering.
  • Swing and orient lattices for effects, such as fur/hairs/feathers suddenly standing up on a creature that is surprised or angry.

 

Supports fully animated lattice geometry, which opens up the opportunity to simulate:

  • Lattices on an animated character.
  • Individual lattice transformations, these could be: growing, shrinking, swinging, twisting, bending, etc.

 

 

Setup Details

The following sections provide more information about the technical details needed to set up and run a successful N-Lattice simulation.

 

Lattice Topology

A single lattice is a simple two-dimensional grid and can come in a variety of sizes and tessellations.

A simple example Lattice is shown below:

We call this a 3x4 guide, as it has 3 base points and is 4 points tall. We do not restrict the lattice in terms of maximum resolution, but require a minimum resolution of 2x2.

The dotted lines mark how triangles should generally be laid out. As Carbon internally works with triangles, it is recommended to triangulate all lattices before using them in N-Lattice. The reason for this is that the tessellation matters because it describes the degrees of freedom where the physics will be able to bend.

Besides the pure topological information, the guide serves a second purpose. It describes which of the points should be welded to the rigid shaft:

This rigid shaft allows us to create a mechanical constraint, which we can then use to control the orientation of the entire lattice and allow angular swing animation of any lattice of the N-Lattice.

It is important that there are enough vertices which are constrained to the rigid frame, as otherwise the soft part of the lattice would be free to rotate around the shaft. The rigid shaft allows us to create a mechanical constraint with an underlying geometry, for example body of a bird or branches on a tree, which we can then use to control the orientation of the entire lattice and allow angular swing animation of any individual lattices.

Same as for the Carbon Plumage solution, a shaft attribute, which can be painted easily, marks which points of the guide are to be welded.

Furthermore, just as with our Carbon Plumage guides, all attributes contributing to the soft/cloth behavior can be painted on the guide to influence the simulation. This information is then shared between all the lattices in the N-Lattice geometry.

 

Individual Poses

A single mesh is used to provide a pose for the entire set of lattices, while each individual lattice can be deformed in the likes of:

  • Stretch/Squash
  • Bending
  • Twisting
  • Moving individual points around for a unique shape
  • (Non-)Uniform scale

The user has unrestricted freedom to deform the lattices, as long as they are made from the same grid topology as the guide. An example of a deformed lattice with better collision shell would be:

Bringing the outer points on the bottom line closer to the center can avoid over-constraining the vertices that are welded to the rigid shaft with near neighbor collisions; this will heavily reduce the risks of conflicting constraints and jittering.

The individual lattices can then be animated via a scale and angle paint attribute and also be further customized in terms of painted attributes like swing stiffness or twist stiffness to create individual characteristics for each lattice.

 

Growth And Swing

Similar to the Carbon Plumage solution, the beginning of each simulation, can have a growing and swinging process to produce a physically correct laminated starting pose, as described in the image below.

This process is part of the N-Lattice node and automatized for ease of use.

It gives the user the option to grow the lattices from a scaled-down representation to their desired scale of the reference pose.

After that, the user can take advantage of our ability to animate the mechanical representation and swing the lattices into their desired groom orientation. 

Advanced users may want to do this process manually by animating the lattices directly.

 

With collision detection always active, the lattices repulse one another instead of intersecting and corrupting.