Skip to content

Rig: map the Reallusion CC3/CC4 numbered spine (CC_Base_Spine01, CC_Base_Spine02) #112

Description

@nirholas

What is wrong

Reallusion Character Creator 3 and 4 export a numbered spine chain: CC_Base_Spine01, CC_Base_Spine02. Most of the CC skeleton already maps in src/glb-canonicalize.js, but those two spine joints do not.

import { canonicalizeBoneName } from './src/glb-canonicalize.js';
canonicalizeBoneName('CC_Base_L_Upperarm');  // 'LeftArm'   works
canonicalizeBoneName('CC_Base_Hip');         // 'Hips'      works
canonicalizeBoneName('CC_Base_Spine01');     // null        <-- the gap
canonicalizeBoneName('CC_Base_Spine02');     // null        <-- the gap

A dropped spine chain does not kill the whole performance the way a dropped limb does, but it costs the torso: the upper body rides rigidly on the hips instead of following the clip.

What to change

File: src/glb-canonicalize.js, the EXTRA_ALIASES block. The centre and torso table there is where this belongs.

The canonical chain is Hips to Spine to Spine1 to Spine2 to Neck to Head. Decide which canonical link each CC spine joint should drive and write down your reasoning in the code comment, the way the neighbouring entries do.

Read the note above the Unreal alias table first. Its spine_01/02/03 chain is deliberately omitted because the separator-stripped form collides with a Mixamo de-duplication suffix, and the header comment explains what that collision does. Make sure your change does not walk into the same problem. That is the interesting part of this issue.

How to prove it worked

Add cases to tests/glb-canonicalize.test.js beside the other per-convention blocks, then:

npx vitest run tests/glb-canonicalize.test.js   # about 1 second
npm test                                        # before you open the PR

Include a case asserting the existing Unreal spine_02 behaviour still resolves the way it does today. That is the regression this change could plausibly cause, and the reason to write the test before the fix.

Reference

The MikuMikuDance support added on 2026-08-21 is the same shape of change end to end. The full walkthrough is in Your first contribution.

Comment here to claim it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: rigSkeletons, bone mapping, retargetingenhancementNew feature or requestgood first issueGood for newcomers

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions