> [!abstract] Summary
> **OSMIUM animation & CFX detail.** Animation export workflow from Maya → Alembic → USD, the three cases of **hierarchy/topology matching** between animation export and published USD lookdev model, with the corresponding tools (Lucas Legrand, Loris, Thomas's `characters_ingest` / `ALT_animingest`) to bridge them.
---
# Animation
- From the rig, animate as usual.
- Export with the same workflow as asset work — see [[../PIPELINE ASSET|PIPELINE ASSET]]. **Export to Prism in `.abc`.**
> [!important] Preroll convention
> - Animate from **T-pose**.
> - Put a **key at frame 900** for the T-pose.
> - Start animation at **frame 1001**.
>
> This gives a clean preroll for **Point Deform** and **CFX**.
> [!warning] Hierarchy must match the lookdev model
> Select **exactly the same mesh / group** as the one in your USD lookdev model. The USD lookdev model is the final render model — same hierarchy as the modeling model. Otherwise you'll need to use one of the tools below.
Three cases:
## 1. Mesh export matches the published model — clean work
Make a USD out of your Alembic file and sublayer it.
1. Import the USD lookdev (in some templates, e.g. *Journey*, the USD lookdev is already sublayered on top of the USD modeling).
2. Import the animation USD.
3. **Sublayer the animation on top of the lookdev.** Same hierarchy → it just works.
![[image-21.png]]
- *1 — Lookdev import (here from a sublayering with modeling, but you can also import it directly).*
- *2 — USD animation import.*
- *3 — Animation sublayered on top of the USD lookdev.*
## 2. Mesh export — same topology, different hierarchy
You need to **transfer the naming/hierarchy** from the USD lookdev onto the animation. Tools available (Lucas Legrand, Loris, Thomas's) all work on the same principle and are pre-placed in the shot template:
![[image-46.png|726x490]]
**Principle:** transfer the **name attribute** from the USD lookdev to the animation. Example with **`characters_ingest`**:
1. Select your **animation Alembic** + the **USD lookdev**.
- ![[image-47.png|738x570]]
2. Dive into **`characters_ingest`** → **`animTransfer`** → **Transfer SOP Create**.
- ![[image-48.png|280x364]]
- ![[image-50.png|279x373]]
3. The transfer is done with an **`attribcopy`** node. There are two: left = USD lookdev render version, right = proxy version (so you can preview the proxy moving with the animation).
- ![[image-51.png|480x225]]
- Output: an animation with **the same naming as the USD lookdev**.
4. The rest of the tool sublayers the renamed animation on top of the USD lookdev.
- ![[image-52.png|591x304]]
5. **Optional:** write a USD out of this so you can preview the animation without recomputing the renaming every frame.
## 3. Mesh export — different topology — bad work
Last-resort option: **Point Deform** to match the animation on top of the USD lookdev. Only works if animation always starts from T-pose.
To help, Thomas made **`ALT_animingest`** — already in the shot template. It has 3 options, the one of interest here is **Matching Topology**:
1. Import your USD on top of the node.
2. Select the T-pose frame (for Thomas: 900 = T-pose, 1001 = first animation frame).
- ![[image-53.png|654x513]]
3. Dive inside the node → **Point Deform SOP Create**.
- ![[image-54.png]]
- *1 — Import animation here.*
- *2 — Tune Point Deform parameters to better match deformation.*
Output: a deformed USD lookdev driven by the animation.
> [!note] Last resort
> This is messy, even when it works. Push for clean exports with matching topology and/or matching names.
---
# CFX
**ON HOLD** — full CFX pipeline to be written later.
- From `usdStaticFur`…
---
# 🔗 Related
- [[../../PIPELINE MOC|PIPELINE MOC]].
- [[../PIPELINE ASSET|PIPELINE ASSET]] — model export workflow.
- [[../PIPELINE SHOT PART 02|PIPELINE SHOT — Part 02]] — where this fits.
- [[../../../PROTOCOL/USD/USD MOC|USD MOC]] — USD layers/sublayers.
- [[../../../PROTOCOL/FOUNDATION/PROTOCOL Naming Convention|PROTOCOL Naming Convention]].