Files

88 lines
4.9 KiB
Markdown
Raw Permalink Normal View History

# Handoff: UAL animation library → iClone (2026-07-28 morning)
## Goal
Get all ~134 Universal Animation Library (Kevin Iglesias) clips into iClone as reusable
motions on a character, so they can be layered/blended into new animations.
## ▶ FIRST THING TO DO (5 min, everything is staged)
Import this file into iClone via the **motion import** flow (select Lena or any avatar first):
```
C:\Users\Jeremy\tinqs\animation\UAL-Lib\Universal Animation Library 2[Source]\Unity\UAL2_takes_fixed.fbx
```
Dialog settings:
- **Character profile:** browse to
`A:\Program Files (x86)\iClone 8\Program\Assets\Share\CharaterizeProfiles\UE4_Skeleton.3dxProfile`
(folder name really is "CharaterizeProfiles" — Reallusion typo)
- **Motion T-Pose:** leave EMPTY. If iClone refuses without one, use
`...\Universal Animation Library 2[Source]\Female Mannequin\Unity\Mannequin_F.fbx`
(verified: identical 66-bone skeleton to UAL2)
- **Auto gen to perform list:** checked
- Keep root motion: default (RL_BoneRoot n/a here — source root is `root`)
- Select ONLY this one file (multi-selecting mixed-skeleton files causes the
"same bone structure" error)
Then check: character upright? → **right-click avatar → Perform** (or Animation Player →
Motion dropdown → Perform → Perform List Editor). Expect up to **134 takes** listed.
## Why this should work now (last night's chain of fixes)
1. **Original vendor FBX imports upright** (user-verified as prop; measured upright via
bridge). All Blender re-exports lie down — never route UAL through Blender for iClone.
2. **"No applicable character profile"** → fixed: iClone ships `UE4_Skeleton.3dxProfile`,
exact match for UAL bone names (pelvis/spine_0103/neck_01/clavicle_l/ball_l...).
3. **"Not compatible with profile T-pose"** → cause: `CC_Base_TPose.fbx` (a CC-skeleton
leftover from dead experiments) was in the Motion T-Pose field. Wrong skeleton. Leave
field empty / use Mannequin_F.fbx.
4. **"Failed to save motion file" ×134** → ROOT CAUSE FOUND: every take is named
`Armature|Bow_Shoot` — the `|` is illegal in iClone motion names & Windows filenames.
The error dialog listing UAL2.fbx 134 times proves iClone DOES enumerate all takes.
→ Fixed by byte-safe patch (`|``_`, same length, structure untouched):
**UAL2_takes_fixed.fbx** (134 takes verified, names now `Armature_Bow_Shoot` etc.)
## If the import succeeds
- Do the same for library 1: patch takes the same way
(`UAL-Lib\Universal Animation Library[Pro]\Unity\UAL1.fbx``UAL1_takes_fixed.fbx`).
One-liner pattern lives in this chat; simplest: ask Claude to "patch UAL1 take names
like UAL2".
- Save the converted motions into a custom motion library folder so they persist
(drag from Perform list / save as .rlMotion into
`A:\Reallusion Content\Reallusion Custom\Animation\Motion\`).
- Optional: `_RM` variants of both files carry root-motion versions of the same clips.
## If it fails again
Note the EXACT error text + which file was in each dialog slot, then resume with Claude.
Fallback order: (a) Motion T-Pose = Mannequin_F.fbx; (b) import a handful of takes at a
time; (c) split the patched FBX into single-take files WITHOUT Blender rig changes.
## Dead ends — do NOT retry (all disproven with measurements, see memory)
- Blender-retargeted CC_Base FBX into iClone (characterizer always lays it down;
rotations/axis flags/T-pose/root-motion settings all disproven).
- `RFileIO.ConvertFbxFileToRLMotion` on any Blender-built FBX (needs native fbxKey).
- `RFileIO.LoadFbxFile` via bridge for characters (pops a modal that freezes iClone
AND the bridge until manually dismissed).
- Direct bone-keying via bridge (48/55 bones OK, but legs+hip are HIK/IK-locked, no
API toggle → full-body clips come out leg-broken).
## Useful assets/tools produced
- `UAL2_takes_fixed.fbx` — the deliverable input file (134 legal take names).
- Bridge: `python tools/iclone_bridge.py --ping|--exec|--file` (iClone must be running).
- Bone-orientation measurement snippet (paste-ready): read `CC_Base_Head` minus
`CC_Base_Hip` world positions via bridge; up should be +Z.
- Scratchpad (this session) has: `ual_to_cc.py` (Blender UE→CC retargeter — works for
Blender/GLB targets, NOT for iClone import), calibration data for iClone's per-bone
Euler FK API (order XYZ right-to-left), `dummy_cc_base.fbx` (CC_Base skeleton export).
- Old CC experiments quarantined in
`A:\Reallusion Content\Reallusion Custom\Animation\Motion\Tests\old_cc_experiments\`
— safe to delete once the new route works.
## Context worth remembering
- UAL clips are on the UE4-mannequin skeleton; the whole library lives as 134 takes
inside ONE FBX (Unity folders). GLB equivalents (Unreal-Godot folders) already have
all 134 clips separated — the GAME pipeline can consume those directly without iClone.
- iClone is only needed for AUTHORING new motions from these clips; for pure playback
in ariki-game, the GLBs are already usable.