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