3ba86b2ea8
Bulk import of the working lanes that were living untracked on the PC. Content: - characters/ Lena/male body lanes, bakes, texture work, run logs - clothing/ garment pipeline, configs, gates, contract docs - garments/ MD-authored garment sources (.zprj/.zpac) - UAL-Lib/ Universal Animation Library 2 source (.blend/.fbx/.glb) - tools/ blender_bridge, iclone_bridge, md_bridge, tailor, glm_agent - docs/, plans/, dev/, .agents/plans/ Repo hygiene: - .gitattributes: LFS now covers .blend, .zprj, .zpac, .obj, .npy and the Reallusion .iAvatar/.ccAvatar/.ccRestore containers. Without this the ~3.8 GB in this commit would land as raw blobs. .png/.jpg are left out on purpose — ~250 are already tracked raw and converting them would rewrite every one without shrinking history. - .gitignore: exclude /accurig/ (~1 GB AccuRig program files, redistributable from Reallusion, nothing authored here) and /dev/null/ (git-lfs hook copies dropped by a `>/dev/null` redirect on Windows). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
88 lines
4.9 KiB
Markdown
88 lines
4.9 KiB
Markdown
# 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.
|