# 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_01–03/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.