> [!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]].