Houdini 20.5 Nodes Geometry nodes

Tissue Solidify geometry node

Converts surface geometry to a layered solid (tetrahedrons) and prepares the output geometry for solving with a tissue solver.

On this page
Since 19.0

This node constructs the Tissue (Tissue Layers and Core Layers) from an input polygonal surface.

Tissue geometry is a layered construction consisting of alternating polygonal surfaces (triangles), and tetrahedra. The innermost layer of Tissue geometry is the Core. The Core is made of a polygonal shell with the interior volume filled with tetrahedra (see the diagram below, the Core is featured in blue). The outer layer of Tissue geometry is simply named the Tissue Layer. The Tissue layer is also made of a polygonal outer surface with an interior thickness of tetrahedra. The tetrahedra fill the space between the tissue outer surface and the core surface. (see the diagram below, the Tissue Layer is featured in green).

When you run a simulation using the Tissue Solver Vellum SOP, the Tissue Layer will convey all the dynamic qualities of your creature’s flesh: jiggle, bounce, stretch, muscle definition, etc. The Core Layer will serve more as a mechanical device: the Core will anchor itself to your animated attach geometry (usually Muscles and Bones), and also provide an attachment target for the outer tissue layer. Tissue will attach to the Core via a spring with variable stiffness, damping, and the ability to slide. The constraingts for the layers are the Tissue Layer is attached to and slides over the Core and the Core Layer is attached to Muscles and Bones.

The first input (Input 1) on this node provides the surface geometry from which all tissue layers are initially derrived. This surface undegoes a series of inward projections and tetrahedralization steps to create stratified layers of tetrahedra and polygon surfaces.

The surface geometry must be triangulated before tetrahedralization. If the surface isn’t already made of triangles, you can use the Remesh Exterior Surface parameters on this node to triangulate it. For more control over how the surface geometry’s polygons are triangulated, you can disable the internal Remesh function and use an external Remesh SOP node instead.

The Tissue Layer is initially constructed from the input surface position. The surface of the Core (Core Surface Layer) is initially constructed at the depth of the Tissue Layer’s thickness (controlled by the Tissue Relative Thickness parameter). Each of the layer boundaries can be offset using parameters (Tissue Surface Offset) or painted attributes (Thickness Multiplier and Core Offset Mask).

If procedurally generating the Core Layers isn’t sufficient, then you can also supply a custom Core surface geometry using the third input (Input 3) on this node. If you supply a custom Core surface, then it will override this node’s Tissue Relative Thickness parameter.

Tip

The second output (Output 2) on this node produces a procedurally generated Core Surface Layer. You can stash this output and use it as a starting point to model your own custom Core surface. Once you have remodeled the procedurally generated Core surface geometry, you can then disconnect it from the second output and reconnect it to the third input (Input 3) of this node.

The fourth input (Input 4) of this node is used to help compute the attachment weight that the Core layer will use when attaching to the Muscles and Bones in the Tissue Solver Vellum SOP node. The attachment weight is stored in the point attribute: corefalloff and only relevant to the Core Layer. corefalloff is calculated by measuing the distance to the closest location on any geometry found on the fourth input. The extent and falloff can be controlled with Core Falloff Distance and Core Falloff Width. If no geometry is provided on the fourth input, corefalloff will be computed relative to the approximate center of the Core layer.

Cross section showing the Tissue Layers and Core Layers
Cross section showing the Core falloff

Parameters

Tissue Surface Offset

Specifies the distance to inset the input tissue surface geometry prior to tetrahedralization. This offset distance is intended to give some allowance for the Skin pass downstream in the Muscle & Tissue network. If a Skin pass is intended, then use this same offset value for the Skin Thickness parameter on the Skin Solidify SOP node. This will ensure the Skin and Tissue boundaries match each other. If a Skin pass is not intended, this parameter can be set to 0.0 to build the Tissue Layer from the input surface position.

Tissue Relative Thickness

Controls how deep to build the Tissue Layer (tetrahedral layer) relative to the local thickness of the enclosed surface. For example, a value of 0.25 is similar to 25% of the distance to get from the front surface to the back surface. An example is your creature’s abdominal area is about 1 meter wide with a Tissue Relative Thickness of 0.2, the tetrahedral layer around the abdomen will be roughly 20 centimeters thick. If the legs were 40 centimeters wide, the tissue would be roughly 10 centimeters thick in this area.

The Core Layer will get its initial surface position from this depth. If left unmodified by any offsets, the surface of the Core Layer will match with the interior boundary of the Tissue Layer.

Tissue Layer

Thickness Multiplier

When on, specifies the name of the point attribute on the input surface with which to modulate the thickness of the Tissue. This attribute is used as a multiplier for the Tissue Relative Thickness parameter. For example, if the attribute value for a given region is 0.5, and the Tissue Relative Thickness parameter was 0.2, the resulting thickness half of the 20% of the local depth of the surface geometry (0.5 x 0.2 = 0.1) or 10%.

The Core Layer will be unaffected by modulating the tissue thickness using this multiplier.

If the tissue thickness is reduced via this multiplier, this can form a gap or separation between the Tissue Layer and the Core Layer. A separation is sometimes desirable when going for a loose or flabby flesh quality. Introducing a space between the layers can produce more freedom of movement in the outer tissue layer. If the separation is not desired, the Core Layer can be forced to reproject itself to the Tissue interior by toggling the parameter: Match Core Surface to Tissue Thickness.

Scale

When on, this parameter will further scale both the Tissue Relative Thickness and the Thickness Multiplier attribute value. It’s a global scale value applied to the tissue thickness with or without the Thickness Multiplier attribute. That is, the multiplier attribute parameter can be left blank.

Tissue Max Tet Size

Sets the maximum size for the tissue tetrahedrons. Tissue tetrahedrons will adaptively scale to this maximum if space permits, while being constrained by the surface triangle size as a first priority.

Remesh Exterior Surface

When on, the input surface geometry will be remeshed as triangles using adaptive edge lengths. The parameters are described in more detail in Remesh SOP. When off, the input surface is assumed to already be made of triangles and will be tetrahedralized as is. When tetrahedralizing surfaces, best results are obtained when the surface primitives are as close as possible to equilateral triangles.

Min Size

Sets the minimum edge length for adaptive triangle formation.

Max Size

Sets the maximum edge length for adaptive triangle formation.

Relative Density

Sets the point generation resampling frequency.

Gradation

Sets the rate which governs the transition from minimum edge length to maximum edge length. Gradation Rate closer to zero will minimize the rate of change. Higher values will allow the generation of points to adapt more readily to the maximum edge length.

Core Layer

Core Offset Mask

When on, specifies the name of the point attribute on the input surface with which to displace the core surface. The Tissue Relative Thickness parameter will establish the initial depth for the core surface. The offset parameters can be used to inset the core surface from its initial depth.

The Tissue Layer will be unaffected by modulating the Core Layer using this displacement.

The mask attribute declared in this parameter should have values in the range 0.0 to 1.0. The displacement will use this value as an intensity mask multiplied with the core offset Scale parameter.

Scale

When on, this parameter will be masked by the Core Offset Mask attribute and offset the surface of the core by this relative scale factor. A scale value of 1.0 will displace the core surface with an amount approximately the full local thickness of the core. A scale value of 0.0 will cause no displacement. The scale value will have no effect in areas where the Core Offset Mask attribute is 0.0.

Core Max Tet Size

Sets the maximum size for the core tetrahedrons. Core tetrahedrons will adaptively scale to this maximum if space permits, while being constrained by the core surface triangle size as a first priority.

Match Core Surface to Tissue Thickness

When on, the core surface will project onto the displaced interior surface of the tissue layer. This projection is done after the thickness of the tissue has been established with any offset via the Tissue Thickness Multiplier parameters. Also, this projection is done before the core offset displacement takes place.

Reduction

The input surface undergoes a reduction whereby it is projected inwards to generate the core surface layer and desired tissue thickness. In order to minimize surface anomalies and inversions when applying large reductions, the TissueSolidify SOP will iterate over a number of smaller steps to reach the desired depth. Each iteration will perform a point averaging and conversion to and from VDB. This is done to soften high frequency details evident on the input surface. The goal of the reduction is to generate a smooth, inset, and close approximation of the input surface while trying to minimize eroding away thinner regions like arms and legs. Since it may not be entirely possible to reduce the outer surface to the desired depth and maintain a solid single connected core, the parameters below are available to adjust the iterations to allow you to get as close as possible.

Use the third input of this node to supply a core surface directly into the layer construction. This will bypass the procedural reduction steps.

Substep Iterations

Determines the number of iterations that are used in reducing the input surface geometry to the depth specified by Tissue Relative Thickness.

Blurring Iterations

Determines the number of smoothing passes performed on the Core Surface Layer at each substep.

Blur Step Size

Specifies the size of Laplacian blur to apply for each Blurring Iteration.

Voxel Division Size

Specifies the voxel size for the VDB conversion. Smaller values will be able to capture finer detail in the reduction steps.

Attachment Attribute

The Core Layer automatically creates a weight mask attribute (corefalloff) that affects the attachment strength when the Tissue Solver Vellum SOP constrains the Core Layer to the Muscles and Bones. The weight mask is computed using the distance from a local central axis to the core surface.

The core central axis is either obtained procedurally by measuring the approximate local midway point anywhere within the core volume or by measuring the distance to the closest location on the geometry supplied to this node on Input 4.

Core Falloff Distance

For points in the Core Layer, this value specifies the start distance for the weight mask (corefalloff) to begin. Points closer than this distance to the core central axis will have a corefalloff weight of 1.0.

Core Falloff Width

Specifies the distance over which corefalloff will decay to 0.0 relative to Core Falloff Distance. Points in the Core Layer that are further away from the core central axis than Core Falloff Distance plus Core Falloff Width will have a corefalloff value of 0.0.

Remesh Core Surface

Remesh Input Geometry

When on, the surface geometry supplied to this node on Input 3 will be remeshed as triangles using adaptive edge lengths. This parameter will be disabled (dimmed) if Input 3 is left unconnected to any other node.

Min Size

Sets the minimum edge length for adaptive triangle formation.

Max Size

Sets the maximum edge length for adaptive triangle formation.

Relative Density

Sets the point generation resampling frequency.

Gradation

Sets the rate which governs the transition from minimum edge length to maximum edge length. Gradation Rate closer to zero will minimize the rate of change. Higher values will allow the generation of points to adapt more readily to the maximum edge length.

Visualization Guides

Guide Display

Determines which tissue features are shown in the viewport state.

Off

Turns off all tissue visualization guides.

Core Surface

Visualizes the Core Surface Layer. Use this guide to help set the depth or thickness of your tissue layer.

Outliers

Visualizes any bone, muscle, or core that may be poking through the Tissue Surface Layer. Outliers should be addressed before attempting to push through the Tissue Solver Vellum SOP. Outliers would create immediate collision conditions in the solver, and are therefore flagged as collision=disabled.

Inversions

Visualizes any inverted tissue tetrahedra. Inversions should be avoided completely. An inverted tetrahedron will have a negative volume and cause volume preservation calculations to fail. This may result in exploding points during a Vellum Solve.

Low Quality Primitives

Visualizes any low quality tetrahedra on the Tissue Surface Layer. A quality metric is used to quantify how much a tetrahedron deviates from a perfectly shaped equilateral tetrahedron. Poorly formed tetrahedra are either long and spikey or nearly flat and should be avoided as much as possible.

Core Falloff

Visualizes the core’s falloff as a point cloud heat map. If the visualized heatmap is nearly all black, there will be no attachment strength connecting the Core Layer to the Muscles and Bones. The more heat, or white color in the visualizer, the more secure the attachment will be when simulating your tissue.

Tissue Interior Surface

Visualizes the interior surface of the Tissue Solid Layer that defines the inner boundary of the tissue’s tetrahedra. This surface can be different than the Core Surface Layer, especially if any of the offset parameters are used.

Exterior Surface

When on, the Tissue Surface Layer will be included in the Guide Display with a level of transparency.

Exterior Surface Alpha

Sets the amount of transparency for the Tissue Surface Layer in the viewport state.

When Guide Display is set to Core Surface:

Color

Sets the display color for the visualization of the Core Surface Layer in the viewport state.

When Guide Display is set to Outliers:

Outlier Scale

Sets the scale for the points visualized as outlier geometry in the viewport state.

Muscle and Bone Outside Tissue

Sets the color for the visualization of the muscle and bone points that are deemed as outliers. Muscle and bone points are considered outliers when they penetrate the tissue and poke through its exterior Tissue Surface Layer.

Core Outside Tissue

Sets the color for the visualization of the Core Layer points that are deemed as outliers. Core points are considered outliers when they penetrate the tissue and poke through its exterior Tissue Surface Layer.

When Guide Display is set to Low Quality Primitives:

Quality Threshold

Determines the threshold for a tetrahedron to be considered poorly formed and therefore included in this visulaizer. A value close to 1.0 would visualize any tetrahedron that isn’t nearly perfectly equilateral. Values closer to 0.0 will only consider the most problematic tetrahedra as poorly formed and therefore included in this visualizer.

Core Primitive Color

Specifies the color for low quality tetrahedra belonging to the Core Layer.

Tissue Primitive Color

Specifies the color for low quality tetrahedra belonging to the Tissue Layer.

When Guide Display is set to Core Falloff:

Voxel Size

Sets the size of the voxels used for the visualization of the corefalloff attribute. Smaller voxel cell sizes will have more resolution when sampling the volume occupied by the core layer. Larger values will sample the core attribute at larger intervals and may look blurrier.

Particle Scale

Sets the particle scale for the sprites used to visualize the corefalloff heatmap. Particles are shaded and displayed in the viewport as sprites (discs). Smaller particles will have less coverage in the viewport while larger paticles may overlap one another and have their opacity accumulate.

Inputs

Input 1

The surface polygons from which to generate the Tissue.

Input 2

(Optional) Muscle and Bone geometry. This geometry is used to detect outliers.

Input 3

(Optional) Custom polygonal geometry for the Core’s surface. If supplied, then this input overrides the Tissue Relative Thickness parameter. If not supplied, then the Core is entirely procedurally generated.

Input 4

(Optional) Custom geometry used to compute the Core’s falloff.

Outputs

Output 1

Tissue, which includes the Tissue Layer: Tissue Exterior Surface (polygons) enveloping the Tissue Solid Layer (tetrahedra), and the Core Layer: Core Surface (polygons) enveloping the Core Solid Layer (tetrahedra).

Output 2

The Core Surface, procedurally generated or processed by this node. You can use this as a starting point for your own custom Core surface. Once you have remodeled this Core surface to your liking, you can then disconnect it from the Output 2 and connect it to the Input 3.

Geometry nodes