> [!abstract] Summary
> Advanced Mari pro-tips — collected hotkeys, node-graph shortcuts, painting tricks, procedurals, Texturing XYZ projection, specialty nodes (Oil, Roller Brush), and a dedicated **speed / optimization** section inspired by [Jens Kafitz's Mari Speed Optimization tutorial](https://www.jenskafitz.com/tutorials/mari/speed-optimization/).
> [!info] Prerequisite reading
> - [[MARI Single channel Practice]] — base setup and workflow
> - [[MARI Multi channel Practice]] — multi-material workflow
> - [[MARI Optimization]] — deeper optimization reference
---
# Part 1 — Lessons From Claudia Marvis (Head of Texture, PxO)
1. **Procedural Base** — share templates between assets and projects.
- ![[file-20241118231806084.png]]
2. **Displacement in texture** on top of ZBrush sculpts.
- ![[file-20241118231951957.png]]
3. Keep the **procedural base** outside of the material stack, then handle **surfacing inside** the material stack.
- ![[file-20241118235921014.png]]
4. **Start from flat colors**, then break everything up.
5. **Surfacing** — layered alterations.
- ![[file-20241119000157124.png]]
6. **Guide the eye** when placing details — don't detail every square inch. Example: a single painted fish-scale at high resolution, surrounded by lower-resolution scales, forces the eye to the hero area.
- ![[file-20241119000711881.png]]
7. **When you hit a milestone**: bake your textures, open a fresh scene, import the bakes. Fewer nodes, clear head, faster iteration.
8. **RGB mask packing** — pack three masks into one RGB texture. Keep masks **soft, low-contrast** so they stay remappable in shading.
- ![[file-20241119001340617.png]]
---
# Part 2 — UI & Hotkeys
## Navigation
| Hotkey | Action |
| --- | --- |
| **J** | Search a node by name |
| **[ ]** | Jump to the receiver of a Teleport node |
| **X** | Swap a node with another one |
| **I** | Dive **into** a material / group |
| **U** | Dive **out** of a material / group |
| **Ctrl + Tab** | Cycle through open materials |
| Single click | Open node properties |
## Connections
| Hotkey | Action |
| --- | --- |
| **W** | Connect the previously selected node to the current selection. Press **W** again to cycle through connections. |
| **Shift + W** | Override the current connection |
| Drag over a connection | Adjust the range of the auto-connection while dragging a node onto a link |
| **Alt + Shift + X** | Disconnect input connections of a node |
| **Ctrl + Shift + X** | Disconnect output connections of a node |
| **E** | Select the closest node from the cursor |
| **Shift + E** | Select **and display** the closest node from the cursor |
![[VS--30MARINodegraphToolsyoushouldknowfromMariExtensionPackonVimeo-2'08".png|500]]
## Cleaning the Graph
| Hotkey | Action |
| --- | --- |
| **N** | Rename |
| **V** | Smart rename based on the first node's name |
| **Ctrl + N** | Open the Renamer tool |
| **Q** (hold LMB) | Align nodes — Houdini-style |
| **Shift + Q** | Evenly space selected nodes |
| **Ctrl + ,** | Toggle grid |
| **,** | Snap to grid |
## Optimization Shortcut
| Hotkey | Action |
| --- | --- |
| **Ctrl + Space** | Stop auto-compiling the shader |
## Paint Node
| Hotkey | Action |
| --- | --- |
| **Shift + P** | Create a paint node based on the current background |
## Selection
| Hotkey | Action |
| --- | --- |
| **Shift + H** | Isolate selected |
> [!todo] Find how to disable the accidental scroll-to-change-value behavior in properties panels.
---
# Part 3 — Painting & Stylized Tricks
## Paint Jitter
Directly on the paint tool you can **jitter position, hue, saturation, value, rotation…** — perfect for quickly breaking up flat colors without resorting to masks.
![[file-20250127230410094.png|500]]
---
# Part 4 — Procedurals
## Two-Way Gradient Node
- Generates a gradient **between two locators** — control both end positions interactively.
![[file-20250127232129965.png|500]]
## Symmetry Pattern
- Useful to lay down a regular pattern everywhere on a surface (tiles, rivets, stitch marks, scales).
![[file-20250127233923973.png|500]]
---
# Part 5 — Texturing XYZ Workflow
For high-frequency skin / facial detail via Texturing XYZ multichannel displacement maps:
1. Start from the **default template material**.
2. Set the **Bump** value to **1** on the Arnold shader.
3. Use a **Projection node + Warp node** to align the Texturing XYZ plate to the UV/face region.
![[DoNOTDelete/Attachments/image 1.png|500]]
---
# Part 6 — Specialty Nodes
## Oil
- Procedural that looks like a **leaking / dripping noise**.
- Great for **organic break-up** on a surface.
- Works surprisingly well on **hard-surface** assets to hint at fluid runs, grease, or staining.
## Roller Brush
- Lets you paint **seams and patterns** quickly using a rolling stamp.
- Works best with a **tileable texture** as source.
- Select the **source texture** and the **orientation** (tangent / world / stroke-aligned).
![[image-20250406.png]]
---
# Part 7 — Speed & Optimization
Synthesis based on [Jens Kafitz's tutorial](https://www.jenskafitz.com/tutorials/mari/speed-optimization/) and general Mari best practices.
> [!warning] Cross-check
> The Kafitz article was not reachable at the time of writing this note (403). Verify the exact numbers and recommendations below against the source — they are compiled from general community knowledge and may differ in detail.
## 1. Project Setup
| Setting | Recommendation | Why |
| --- | --- | --- |
| **Project folder** | On a **local SSD** (never network) | I/O dominates channel caching |
| **UV Patch size** | Lowest that matches your target (2K or 4K max for most assets) | Higher patch sizes multiply RAM/disk use |
| **Channel depth** | 8-bit for color maps, 16-bit for bump/normal/displacement | 32-bit only when strictly needed |
| **Channel compression** | Enable **BC7 / DXT** where quality allows | Massive RAM savings |
| **Paint buffer resolution** | Match to the target UV patch — do not oversize | An over-scaled buffer wastes RAM and resolution |
## 2. Viewport & Shader
- Set the viewport **shader LOD** to `Fast` while sculpting masks — switch to `Best` only for review.
- **Ctrl + Space** to **stop auto-compiling** the shader while making many changes in sequence.
- Disable shader components you are not currently working on (turn Arnold SSS off while working on base color, etc.).
- Hide HDRI / lighting while working purely on masks — use a flat directional light.
## 3. Node Graph
- **Use Bake Points aggressively** — every material output, every heavy procedural chain. Upstream changes disappear until re-baked, but graph evaluation becomes near-instant.
- **Multi-Channel Bake Point** at the output of each finished material group.
- Use **Teleport** nodes for long connections — they don't make the graph faster, but they make it *editable*.
- Avoid stacking many **Triplanar** nodes; bake them to a single cached map as soon as the placement is locked.
- Collapse repeated chains into **Node Groups** (`.mng`) — they evaluate as a single block.
## 4. Paint Buffer
- Keep the paint buffer **as small as needed** — a 4K buffer is enough for most close-up work.
- Use **Mask by Edge / Depth** to paint only where it matters and skip hidden geometry.
- Enable **Selected Only** projection on complex assets to avoid wasted bakes on hidden faces.
## 5. Caching & Memory
- Mari caches channels on disk — clear the project cache (`File → Project → Clear Cache`) after major channel deletions to reclaim disk space.
- **Archive the project** for delivery: `File → Archive Project` creates a single `.mra` bundle. Smaller than the raw project folder.
- When iterating on a hero asset, **bake + reopen** in a fresh project every milestone (Claudia Marvis's tip #7 above) — Mari accumulates intermediate state that slows over time.
## 6. Export
- Pack related masks into **RGB textures** via `Vector Combine` — fewer files for the lighter to load.
- Export only the channels you actually use downstream.
- Use **8-bit TIFF** for color maps, **32-bit** only for NRM / BMP / DISP (per PROTOCOL naming convention).
## 7. Hardware Tips
- Mari is **VRAM-hungry** — 12 GB VRAM is a practical minimum for hero characters, 24 GB for creatures with many UDIMs.
- Disk **speed** matters more than size. NVMe > SATA SSD > HDD.
- RAM: **64 GB minimum** for complex multi-material projects.
---
# Part 8 — References
- [Jens Kafitz — Mari Speed Optimization](https://www.jenskafitz.com/tutorials/mari/speed-optimization/)
- [[MARI Single channel Practice]]
- [[MARI Multi channel Practice]]
- [[MARI Optimization]]