Trunk Extension

Extend scanned, sculpted, or otherwise hand-crafted hero trunks with procedurally-generated branches and roots.

Trunk extension is the workflow for combining a scanned (or sculpted) hero trunk with procedurally-grown branches and roots. The scanned base provides real-world fidelity at the parts of the tree that read most strongly to the viewer; procedural growth extends from the scan's profile points to fill in the branching above and the rooting below. A bake step at the boundary produces tiling textures that blend the procedural surfaces with the scanned geometry so the join is invisible.

For the broader high-poly toolkit and the other use cases it supports (module extraction, tiling texture extraction), see Scans.

Why extend a scanned trunk

A scan captures the silhouette and bark detail of a real tree at the trunk and lower bole, exactly where viewers spend the most attention. Above the bole, branching is structural and procedurally tractable; growing it gives you control over angles, density, and how the canopy fits the shot. Below the surface, roots are usually invisible or partially visible and benefit from the same procedural treatment. Combining the two gives you hero quality where it matters most and procedural control everywhere else.

The workflow

1. Import the scan

Use Import Highpoly. The node is a wrapper for several scan and mesh utilities and has a Python state: press Enter to launch the wizard, which walks through loading the scanned geometry, assigning textures, and selecting the end-tube points (profiles) of the scan that should be used for procedural extension. Alternatively, switch to advanced mode and populate the fields manually.

The wizard exposes:

  • Import step. Reads the source mesh into the workflow.
  • Scan Material. Assigns a material to the scan; by default, assigns the provided textures. Double-click in to manipulate the material directly in COPs.
  • Scan to Parts. From the point cloud, select which parts of the scan to keep.
  • Scan Profiles. Interactive picker for selecting the end-tube points that will be the attach surface for procedural extensions.

2. Graft

Use Create Graft Mesh. The node has two inputs: the left takes the imported high-poly mesh; the right (yellow) carries profiles from Import Highpoly.

Remeshing uses a fast point-cloud-based meshing process, followed by a remesh and an optional adaptive poly reduction. The key parameters:

  • Blend mode. Currently baked blend is supported; bakes textures into the unique texture.
  • Flatten ends. Recommended. Creates a cleaner tube start point for procedural extensions.
  • End reduction. How much to reduce poly count toward the ends of the mesh. End density drives the density of the procedurally-extended mesh.
  • Blend region. Over what region the poly reduction and texture blend occur. Longer regions produce smoother reduction in poly count and stretch the blended texture across a larger area.
  • Graft texture section. Where tiling textures are assigned. Set UV scale here. Alternatively, switch to resource mode and reference a Natsura surface resource.
  • Auto UV. Fast auto-UV for high-poly meshes. Effective in most cases by default; the most common setting to adjust is the number of clusters.

When the input mesh is already well-formed, remeshing can be skipped: an option at the top of the parameters preserves the input mesh's existing UVs and skips remeshing entirely. The mesh still flows through Create Graft Mesh in this case; only the remeshing portion is optional.

3. Extend procedurally

Pass the Create Graft Mesh output into a Trunk Decoration, which sits on a Grow. The grow extends the trunk procedurally from the scan's profile points using the standard growth controls (spiral angle, fork branching, taper, pitch and roll per step, etc.). Additional grows can extend further with a Surface Decoration for procedural bark and surface detail on the extended sections.

This is the current path for procedural extension. (Previously, an extend_decoration node performed this job; its function has moved to the trunk and surface decorations.)

4. Finalize

The Bake step is Natsura's COPs-based texture baker. It bakes colour, height, and normals into output texture maps, supports up to 8k resolution before memory becomes the limiting factor, super-sampling for higher-quality bakes, normals in MikkT space for clean transfer to engines like Unreal, and seam fixing across UV island boundaries.

In the bake processes section:

  • Extrapolate boundaries. Leave on for most cases.
  • Make it tile. Optional; more useful when building tiling textures than for the boundary blend.

Double-click the Bake node to enter Copernicus and intercept the baked texture maps before they are output. This enables a full in-Houdini material-editing workflow: colour grading, normal map adjustment, blending colour information into specular and normal maps, and similar operations.

Worked example

For a video walkthrough of the workflow end-to-end, see Extend Scanned Trunks.

The parent landing page is Scans; for the same workflow on screen, watch Extend Scanned Trunks. The constituent nodes have their own pages: Import Highpoly, Create Graft Mesh, Bake, Trunk Decoration, and Surface Decoration.