> [!abstract] Summary
> **Beginner-friendly modeling-cleanup tutorial by Leo Hanrion**. Walks through Leo's full workflow: per-shot modeling, UV unfold, basic cleaning (non-manifold, n-gons, normals), renaming/organisation (per-material workflow), UV layout (texel density), final cleaning and Prism export — so the next departments (texturing, lookdev) don't have to clean up after you.
> [!info] Author & contact
> **Leo Hanrion** — open to questions, suggestions and additions. Reach out on Discord: `leohanrion`.
---
# My Workflow
1. **Modeling**
2. **UV Unfold** (Leo does it while modeling to be faster)
3. **Check for basic cleaning** (non-manifold, n-gons…)
4. **Rename and organise** everything
5. **UV layout**
6. **Final cleaning and export**
Each step is detailed below.
---
# 1. Optimise Your Modeling
Keep in mind: the main goal is the **best result at the camera**, with a **polycount as low as possible**.
If you want to add an asset to your **personal asset gallery** for reuse, you can model it as detailed as you want — but plan for an **additional optimisation step** when you use it in a shot.
### Example
- For this building, there was only this shot with this framing:
- 
- Leo modelled it and did the UVs taking the framing into account, so the modelling looks like this:
- 
- As you can see, it is **really shot-focused** — a lot of detail without blowing up the polycount.
This particular asset is still heavy (**1.9M polys**) but it's a clear example of the "shot-focused" mindset.
> [!tip] Subdivision vs unsmoothed
> Usually, model assets considering they will be **subdivided at render time** (beveled edges) — but for this one, **unsmoothed** was better to keep maximum detail without ending up with a 10M-poly asset.
---
# 2. UV Unfold
Just a few things about **UV unfolding** (layout comes later — that should really be at the very end) that can save time for the next departments.
If you don't unfold your UVs correctly — for example, a **Camera-Based mapping** on a complex object because it seems easier, and you leave it because it *looks* alright in Maya:

…then expect **baking artefacts** like these on mesh maps. Here, ambient occlusion was baked — fine if the object is small on screen, but not otherwise.

Artefacts appear for **every overlapping UV**. Camera-Based mapping creates UV shells that contain overlapping faces, so even with a good layout you'll see this. Textures follow the same artefacts.
---
# 3. Clean Basics
Leo always does **3 basic cleaning passes**:
1. **Freeze Transform** every geometry (select everything in the viewport).
2. **Delete All by Type → History.**
- Tip: add a **double-click command** on the Delete History icon (call it `DeleteAllHistory`) so you can clear history with one double-click.
- 
3. **Center every pivot to World Origin.**
- Use a custom command — `xform -ws -piv 0 0 0` — bound as a double-click on the Center Pivot icon.
- 
- Works like a Match Pivots, but **locked to World Origin** — Leo likes a Match Pivot custom icon with this as a double-click command.
### Non-Manifold and N-gons
- When you finish modelling, it is **mandatory** to check for **non-manifold geometry** and **n-gons** (faces with more than 4 sides). Triangles are fine if the object doesn't deform, but avoid them: they add polys and are hard to unfold.
- Use **Mesh → Cleanup □ → Select matching polygons**, then pick "Faces with more than 4 sides" or "Non-manifold geometry" to isolate them.
- To clean non-manifold geometry: adjust manually, or use the technique below.
- **Final goal:** mesh cleanup in "select" mode with **faces > 4 sides + non-manifold geometry** checked → **nothing selected** (use the Poly Count in HUD).
> [!info] Non-manifold UVs
> Same idea but for UVs. Aim for clean UVs to avoid bake artefacts — not mandatory but strongly recommended.
#### What is non-manifold geometry?
> Non-manifold geometry is *"a 3D shape that cannot be unfolded into a 2D surface with all its normals pointing the same direction."*
Commonly created by **an edge shared by 2+ faces** — extruding a corner, merging vertices on a complex shape, etc.
Example — geometry is non-manifold because there is **an edge connected to 3 faces**:

Maya's Mesh Cleanup selects the 2 vertices of the problematic edge.
> [!warning] Cleanup randomness
> The cleanup option can be a little random in what it selects — faces around, vertices, etc.
You can either fix manually, or use **Cleanup → matching polygons → Apply**. This separates the geometry into several meshes so the shared edges are no longer connected (visually unchanged).
Then **Shift + Right-Click → Separate** to see what's going on and delete the unwanted parts.

Very useful for accidental **0-length extrudes**:

> [!tip] Further reading
> Plenty of good videos on **non-manifold geometry cleaning** are available online if you struggle with it.
### Normals Orientation
Face normals can be flipped without showing in the Maya viewport.
**But** when you export to Alembic, all faces get set to their normal orientation — so flipped normals become **black faces**.
To check in Maya:
- `Mesh Display → Unlock Normals`
- `Mesh Display → Set to Face`
Faces are now displayed with their actual normal orientation (like an Alembic export), so issues become visible:


To fix: select the inverted faces and `Mesh Display → Reverse`.
---
# 4. Rename & Organise
For this part, do whatever you want — as long as it is **clean and understandable for everyone**.
Below are Leo's tips for the **Per-Material workflow**.
### Per-Material Workflow
Top outliner: `assetName` (mandatory) + version number (optional).
Group objects **per material** — in this case 3 materials: `walls`, `roofTiles`, `wood`:

At this stage, what matters:
- Geometry under each group is **not combined**.
- Each group has the **material name** in it.
- Additional sub-groups are fine but not mandatory.
> [!info] Why no combine?
> In **USD / Solaris**, material groups let us apply materials easily, while still selecting individual geometry independently (since meshes aren't combined).
In the example, sub-groups separate each building:

Leo also creates **Display Layers per material group** with assigned colours — enabling wireframe gives a clear view of which geometry will end up in which material. Optional but neat:

### Renaming
Top outliner: at least `assetName` (mandatory).
For mesh names, use Maya's **rename tool** — top-right of Maya, click the square → Rename. (If you don't see the square, show it via "Show/Hide the select field" — the vertical line next to it.)



Select all meshes to rename, then type the new name.
Leo's naming pattern: **parent name + `_XXX`** — three digits is a good balance (if you exceed 999, you probably need another group or some mesh combining).
In the example, parent name is `bridge_wood`.
> [!tip] Numbering trick
> To start the numbering at `001`: type `000`, press Enter, delete the text back to `000`, press Enter again — done. Same trick works with `01` or `0001`.



---
# 5. UV Layout
For Leo, UV layout is the **final step** of an asset — if you missed something earlier, you'll have to redo this part, and it's not the funniest.
### Check Your UVs
It is **critical** that every mesh has UVs, that they are not broken, and that they are **correctly oriented** (texel density and layout come next).
Workflow:
1. First, layout with Maya's **default Layout option** (uniform texel density, non-overlapping).
2. Then check **every single mesh** with a **UV checker texture** to confirm everything is fine.
- UV checker reference: [UV Checker Map by Valle](https://upload.wikimedia.org/wikipedia/commons/f/fd/UV_checker_Map_byValle.jpg)

In the example: two meshes have no UVs and one UV shell is oriented the wrong way (arrows facing downward) → these will cause problems during texturing.
If any of these are wrong and you move on to layout, you'll likely have to **redo your layout** because something will change.
### Which Texel Density?
Watch this very good tutorial to choose the right texel density for your shot:
- [YouTube — Texel density explained](https://www.youtube.com/watch?v=iL2iXizf9xM)
Or read Thomas's note: [[../../../OUT OF PUBLISH/3D DICTIONNARY/Words/Texel Density|Texel Density (dictionary entry)]].
> [!warning] One asset = one shot
> If you have several shots, choose the **closest one**. If you have an establishing wide + a tight close-up, **do two separate assets** — don't make one asset with 100+ UDIMs (it has happened on a current short film).
### Layout Part (finally!)
With per-material workflow, Leo splits UDIMs **horizontally per material** — so you can work on only `walls`, only `wood`, etc.
Final layout for the example:

Once you know your texel density, apply it to every UV patch (if not already done).
Layout strategy:
- **Biggest pieces by hand.**
- **Smallest pieces with Maya's Layout option.**
In the example, red pieces were placed manually, the rest via Maya's Layout tool:

The Layout tool is useful because you can **target specific UDIMs**:

> [!tip] Camera-aware texel density
> Texel density on small pieces can be lower if they're barely visible on camera. **Don't waste time** trying to keep everything at exactly the same density — keep the highest texel density for the **visible** objects, save UDIMs on the rest.
>
> Example values: **2.0** texel density for big pieces (4K map), down to **1.3** for small ones.
Check with the UV checker again — if it looks alright and you saved UDIMs, perfect.
---
# 6. Final Cleaning & Export
Run through every step above one more time.
Leo always does a small **re-cleaning + re-checking pass** (freeze transform, delete all history, center pivot, normals, naming) to make sure nothing was modified along the way.
> [!note] Back-and-forth is normal
> You'll often switch between the texturing software and Maya because something needs fixing. **It will happen and it's OK.** The goal is to minimise these round-trips, but exporting a big asset with everything perfect on the first try is rare — it depends on many things.
### Export
Once your asset is perfect, select the **top outliner group** (typically `assetName_whateveryouwant`) and export it via the **Prism tab**.



If the Prism project is set up correctly you'll get the basic export tab. Choose:
- **Local** — uploading directly to global is slow + local is prioritised this year.
- **.abc** — the pipeline format.
Make sure your object is in the **Objects** list and selected (otherwise pick it in the Outliner and click **Add selected**).
> [!info] Prism + UVs
> **Prism Export automatically exports UVs** — unlike a classic Alembic export, where you need to check the option manually.
Then hit **Export** and you're good!
---
# 🔗 Related
- [[../OPTIMISATION MOC|OPTIMISATION MOC]]
- [[../../../KNOWLEDGE/MAYA/MAYA MOC|MAYA MOC]] — modeling DCC reference.
- [[../../../KNOWLEDGE/MARI/Notes/MARI Optimization|MARI Optimization]] — downstream texturing performance.
- [[../../PRISM/PRISM MOC Protocol|PRISM MOC]] — publish workflow used at the end.
- [[../../FOUNDATION/PROTOCOL Naming Convention|PROTOCOL Naming Convention]] — naming rules referenced in this guide.
- [[../../../OUT OF PUBLISH/3D DICTIONNARY/Words/Texel Density|Texel Density (dictionary)]] — Thomas's reference note.