> [!abstract] Summary > **Pref AOV setup for Solaris** (any render engine) by **Loris Eck**. *Pref* = **Reference position** — the position of an asset at rest (T-pose, no animation/transform). Useful in compositing to add masks or project textures that follow object animation. This note covers the three places you set Pref (asset ingest, anim ingest, shotBuild), how to create the Pref render var, and a manual fallback. --- # What is Pref? **Pref** = **Reference position**. Pref stores the position data of an asset **at rest** (e.g. a character in T-pose) — no animation, no transformation. It is used in compositing to: - Add masks that follow object animation. - Project textures that follow object animation. --- # How to Set Up Pref ## 1. In your asset ingest The easiest way to have a correct and uniform Pref across your shots is to add it to your **asset ingest**. - Add a **Rest** node and set the rest attribute to `rest`. You can change the name if needed — but **be consistent across all your assets**. > [!tip] Where to add it > Only on the **rendering output** — the **proxy** is not rendered, so no need to add `rest` there. ![[../../../DoNOTDelete/Attachments/Pasted image 20251205095056.png]] > [!warning] For FX > Add a Rest node **before any simulation**, and ensure the attribute persists through the entire hierarchy. ## 2. Before ingesting your animation Just **before your anim ingest**, add the **`pref_aov`** node. - Set **primitive(s)** you want Pref on (add `/**` for all children). - **Primvar rest name** = the attribute name (default `rest`) — keep it consistent with the asset ingest. > [!info] Rest pose frame > The rest-pose frame doesn't matter here because there's no animation yet. ![[../../../DoNOTDelete/Attachments/Pasted image 20251205095304.png]] ## 3. During your shotBuild - Set **primitives** (add `/**` for all children). - **Rest Frame** — this frame will set the Pref value. - **Primvar rest name** — same as elsewhere. ![[../../../DoNOTDelete/Attachments/Pasted image 20251205095418.png]] --- # Create the Pref AOV (any render engine) The **primitive** and **Rest Pose Frame** params may be empty if you don't need Pref at the end of your shot build. The interesting part is checking **Create pref render var** and setting the **Primvar rest name** to the same value you set on your assets (default `rest`). - You can modify the **AOV name** and **precision** if needed. > [!tip] Automatic with RenderMan / Karma > If you place a **RenderMan render settings** or **Karma render settings** downstream, the AOV is added automatically. ![[../../../DoNOTDelete/Attachments/Pasted image 20251205100637.png]] --- # BONUS — Create your custom Pref AOV by hand - Add a **Render Var** node OR a custom AOV on your render settings. - Rename the node to the AOV name you want. - **Data type:** `float3` (32-bit) or `half3` (16-bit). - **Source name:** your rest attribute. - **Source type:** `primvar`. - **Format:** `float3`. ![[../../../DoNOTDelete/Attachments/Pasted image 20251205100150.png]] --- # 🔗 Related - [[../TOOLS MOC|TOOLS MOC]]. - [[LPE For Emissive light - FABIO SGUERA - Houdini 20.0 HDA|LPE for Emissive Light HDA]]. - [[../../PIPELINE/Notes/DETAILS/PIPELINE CFX and ANIM|PIPELINE CFX and ANIM]] — anim/ingest context. - [[../../PIPELINE/Notes/PIPELINE SHOT PART 02|PIPELINE SHOT — Part 02]] — shotBuild context. - [[../../PROTOCOL/USD/USD MOC|USD MOC]] — Primvars and Render Vars in USD.