Procedural Skeleton Generator

pavelzosim:~/atlas_SYS.ONLINE / UTC+3

01 Overview — Three Core Problems

When creating skeletons in Houdini, a large part of the work is repetitive. Each joint must be positioned manually, named according to convention, mirrored for symmetry, and connected into a hierarchy. This process repeats for every new model and quickly becomes a bottleneck.

Video 01: rig_bones_generator — full workflow overview.

To address this, I developed rig_bones_generator — a procedural skeleton generation system for Houdini. The goal is to reduce iteration cost and allow reusable skeleton presets for anatomically similar assets: humanoid characters, vehicles with symmetric structure, or any asset type requiring a consistent skeletal layout.

The system focuses on three core problems: automatic joint naming based on game industry conventions, working with different topology types (clean edge loops vs broken remeshed geometry), and preparing skeletons for downstream workflows — Apex rigging and animation export.

rig_bones_generator overview
Fig 01: rig_bones_generator node — three output streams: Skeleton, Guides, Weights.

02 Skeleton Creation Workflow

The first stage covers joint positioning and naming. Two selection modes handle different topology conditions, and naming is fully automated once the bone name and options are set.

Joint Placement — Edge vs Point Selection

Δ1 // EDGE SELECTION — clean topology
For clean and predictable topology, joint placement is driven by edge selection. The algorithm places joints precisely in the center of the selected edge loop area, maintaining correct deformation and weight distribution. Recommended for production character meshes with consistent edge flow.
Δ2 // POINT SELECTION — broken topology
For broken topology or quick concept meshes, point selection is used instead. By selecting point groups — including points behind the visible surface — joints can be placed reliably even on remeshed or unstable geometry. Useful for rapid prototyping and scan-based assets.

Joint Naming — Convention & Mirroring

Joint naming is handled automatically. The naming format follows a standard game industry structure:

[ NAMING_CONVENTION // JOINT FORMAT ]
COMPONENTEXAMPLENOTES
Joint typebone_Prefix identifying the element as a rig bone
Body regionarm_User-defined name — set once per bone group
Sidel_ / r_Auto-applied when symmetry mode is enabled
Index_01 / _02Auto-generated for chains (spine, tail, fingers)

For symmetrical bones, selecting left or right automatically applies side suffixes and generates mirrored joints in a single operation. For chains such as spine or tails, indexed naming generates numbered joints automatically — no manual renaming required.

Additional joints can be inserted by defining start and end joints and applying resampling — creating intermediate joints for finer rotational control. Joint orientation can be adjusted when needed, though for models aligned to the +Z axis default settings are usually sufficient.

Gallery 02: Joint naming interface (left) — automatic side suffixes and index generation. Resampling controls (right) — intermediate joints for chain segments.

03 Hierarchy & Parenting

Once joint positions and names are defined, the skeleton hierarchy is created using the parenting workflow. Parent and child joints are assigned in the parent joint tab.

Hierarchy parenting workflow
Fig 03: Parent joint tab — hierarchy assignment for the full skeleton.

Wildcard patterns can be used in joint names to speed up parenting. This allows entire mirrored joint groups to be connected to a parent in a single operation — avoiding repetitive manual connections for left/right symmetrical limbs. At this stage, the skeleton is already suitable for export to a game engine.

TECHNIQUEEXAMPLE PATTERNRESULT
Wildcard side matchbone_arm_*Matches bone_arm_l_01, bone_arm_r_01, all arm joints
Index rangebone_spine_0*Matches all numbered spine segments
Exact namebone_rootSingle joint — root parenting

04 Apex Integration

For more advanced rigs, the skeleton can be extended using Apex — Houdini's procedural rig-graph system. Apex operates on top of an existing skeleton and uses tags to build rig logic without modifying the underlying joint hierarchy.

The rig_bones_generator node outputs three data streams that connect directly to a standard Apex setup:

[ OUTPUT_STREAMS // rig_bones_generator ]
OUTPUTTYPEAPEX ROLE
SkeletonJoint hierarchyBase structure — joint positions, orientations, hierarchy
GuidesTagged control dataApex input — builds IK/FK controls, constraints, rig logic
WeightsBone influence weightsSkinning data for mesh deformation and FBX export
Apex integration network
Fig 04: Apex integration — three outputs connected to a standard rig-graph setup. Modular IK/FK construction without modifying the base skeleton.

All three outputs connect to a standard Apex setup, allowing construction of modular IK/FK rigs without modifying the underlying skeleton. The tag-based approach means rig logic is defined in the Apex graph — the skeleton remains clean and reusable across rigs.

05 FBX Export & Animation Retargeting

For export, the ROP FBX Character Output node is used. Connecting the Skeleton and Weights outputs is sufficient to export a game-ready FBX file — no additional configuration required for standard engines.

FBX Export and animation retargeting
Fig 05: ROP FBX Character Output — Skeleton + Weights connected for game-ready export. TOP network for batch animation clip baking.

Animation Retargeting

Retargeting is handled using Houdini's MapPoints workflow. As long as bone names remain consistent — which the rig_bones_generator enforces by design — animations from external sources such as Mixamo can be mapped and reused without manual remapping.

Using a TOP network, multiple animation clips can be baked and exported into a single FBX file. This allows batch processing and keeps all required animations in one asset. Testing in Unity confirms that clip names and frame ranges are preserved correctly.

WORKFLOWNODEOUTPUT
Single FBX exportROP FBX Character OutputOne FBX: mesh + skeleton + weights
Animation retargetingMapPoints + external sourceRemapped animation on rig_bones_generator skeleton
Batch clip exportTOP NetworkSingle FBX: all clips, correct names and frame ranges

06 Preset-Based Workflow

Once configured, the rig_bones_generator node becomes a reusable preset. It can be duplicated across different models where only joint positions need to be reassigned. Naming, hierarchy, mirroring, and connections are handled automatically by the existing configuration.

A single preset can be created for human anatomy, then reused across all humanoid characters in a production. The same approach applies to any asset type requiring consistent skeletal structure — vehicles, creatures, mechanical rigs. The tool is anatomy-agnostic: the preset defines the convention, the geometry defines the positions.

Humanoid preset result
Fig 06: Humanoid skeleton preset — fully named, mirrored, hierarchically connected. Ready for FBX export or Apex extension.

What the Preset Preserves Across Assets

PRESERVED IN PRESETREASSIGNED PER ASSET
Bone names and naming conventionJoint world positions
Side suffixes and mirroring rulesEdge / point selection inputs
Chain indexing (spine, tail, fingers)
Hierarchy and parent assignments
Apex output connections
Export configuration
// END OF LOG // HOUDINI_RIG_BONES_GENERATOR // 6 SECTIONS // EOF