Print view · Settings · 8 pagesChoose "Save as PDF" as the destination in the print dialog.
Back to the docs

Mesh Morpher documentation

Settings

8 pages · exported 2026-09-11 · https://meshmorpher.com/docs/studio-and-graph/settings

Studio and Graph

Settings

Everything under Edit then Settings: interface, shortcuts, theme, AI, scripting and installed node presets.

Open Settings from Edit > Settings... or the toolbar's Settings button - both share the tooltip "Open the settings panel". The Agentic panel's own gear icon opens the same window, preselected to the AI category.

The Mesh Morpher Settings window is modeless, so you can keep it open and switch back to the graph or viewport without closing it first. There is no OK, Apply or Cancel button anywhere in it - every row writes its value and saves to disk the moment you change it.

A Categories column on the left switches between six pages:

  • General - interface scale, undo limits, landmarks, update checks, camera defaults, masking, the per-pane viewport rows, and the HDRI environment.
  • Shortcuts - the camera scheme, every rebindable command, held modifiers, and the brush palette.
  • Theme - every colour in the app, grouped by what they paint.
  • AI - the Agentic assistant's backend, conversation limits, and API keys.
  • Scripting - Wrangle's step budget and its Python stage.
  • Installed Nodes - node presets (.mmnode files) installed on this machine.

For where all of this actually lives on disk, see Where Settings Are Stored.

Studio and Graph › Settings

General

Interface scale, undo limits, landmarks, updates, camera, masking, the two viewport panes and the environment image.

Interface

Setting What it does Default Range
UI scale Scales the whole interface - text, buttons, panels and icons - on top of your display's own DPI scaling. Applies immediately. 1.0 0.75 - 2.0

Undo / History

Setting What it does Default Range
Brush undo entries How many sculpt-stroke undo steps are kept. Higher uses more memory. 128 1 - 4096
Graph undo depth How many graph-editing operations (add, move, connect nodes) can be undone. 64 1 - 1024
Graph undo memory (GB) Memory budget for the graph undo history; the oldest steps are dropped once this is exceeded. 6 GB 0.25 - 64 GB

Landmarks

Setting What it does Default Range
Control point size On-screen radius, in pixels, of landmark control points in the viewport. 5.0 0 - 50
Label font size Font size, in pixels, of the number labels next to each landmark. 12.0 1 - 64
Show landmarks through the mesh Draws landmark points, splines and labels even where the mesh covers them, as if the surface were transparent. Applies immediately. on -

Turning Show landmarks through the mesh off hides landmarks on the far side of the model entirely - it is a plain on/off switch, with deliberately no fade for points that are only partly occluded.

Updates

Setting What it does Default Range
Automatically check for updates Periodically checks for new Mesh Morpher versions in the background and shows a notification when one is available. on -
Check interval (minutes) How often to check while the app is running. 10 1 - 10080 (7 days)

Mesh Morpher also checks once right after startup regardless of this interval.

Camera (both viewports)

These are the same values the viewport's own Camera Speed panel edits (see Camera and Display), but the spin boxes here use narrower ranges - for example Camera speed only goes down to 50 and up to 5000 here, against 1 to 100000 in the viewport panel.

Setting What it does Default Range
Orbit sensitivity Degrees of yaw/pitch per pixel of Alt+LMB orbit drag. 0.4 0.05 - 2
Look sensitivity Degrees per pixel of RMB free-look. 0.25 0.05 - 2
Camera speed WASD fly / wheel-dolly speed, in world units per second. 600 50 - 5000
Invert pan Off: the camera follows the mouse while panning. On: dragging grabs the canvas - content follows the mouse instead. Applies to both perspective and ortho views. off -
Focus padding (persp) Focus (F) framing padding in perspective - higher frames the mesh looser. 1.2 1 - 5
Focus width (ortho) Focus (F) ortho frame-width multiplier (x mesh radius). 2.4 1 - 10

Masking

Setting What it does Default Range
Painted threshold "Below this value a vertex counts as UNPAINTED everywhere - the overlay, the sculpt and deform tools, and the graph nodes. Mask values at or under it are snapped to zero as the mask is written, so faint leftovers cannot linger invisibly while still freezing the mesh. Raise it to discard more faint paint; lower it to keep softer mask edges alive." 0.01 0.001 - 0.25

This is the one "counts as painted" threshold shared by the mask overlay, the sculpt and deform tools, and the graph's own mask-reading nodes - changing it here changes all of them at once.

Source viewport / Target viewport

The Settings window has two copies of this section, one per pane, each with the same six rows and the same defaults and ranges - only which pane they write to differs.

Setting What it does Default Range
Field of view Camera vertical field of view, in degrees (perspective mode). 70 5 - 170
Exposure Overall pane brightness; 11 is the mid-grey baseline. 11.0 0 - 20
Render scale Render-resolution multiplier (supersampling); 1.0 is native. 1.5 0.5 - 2
Show grid World-grid overlay in perspective mode. on -
Show floor Studio floor mesh in perspective mode; ortho views never render it. on -
Disable shadows Skips all dynamic shadow passes in this pane. off -

These match the per-pane rows on the Camera and Display and Projection, Grid and Floor pages - this is just a second way to reach the same values.

Viewport environment (both viewports)

Unlike the section above, environment settings are shared between both panes - there is only one HDRI.

Setting What it does Default Range
Environment image (HDRI) A status row showing the loaded file's name, or "Built-in studio" when none is set (hover it for the full path, or for the built-in image's own tooltip, "The built-in studio HDRI (Epic Quad panorama)."). The panoramic image lights the viewport and appears as its backdrop. Equirectangular (2:1) panoramas work best: .exr and .hdr keep their full dynamic range, while .png, .jpg, .bmp, .tga and .tif also load. The light globe's sky rotation keeps working on your image too. Built-in studio HDRI -
Browse... "Choose an image file to use as the viewport environment. Applies immediately and persists across sessions." Opens a dialog titled "Choose an environment image (HDRI)", then a progress dialog reading "Loading environment image...". The new environment applies live and is only saved once loading succeeds; on failure it shows the load error, or "Could not load the selected file as an environment image." - -
Reset "Return to the built-in studio HDRI." Disabled when no custom image is set. - -
HDRI rotation (degrees) "Rotate the environment (HDRI) around the vertical axis. Turns the backdrop AND its lighting together; the light globe's sky ring drives the same value." 0 0 - 360
Ground projection "Project the environment onto a room-size dome instead of infinity: the panorama's floor lands on the scene floor, so the room reads at believable scale and shifts naturally as the camera moves. Only affects a loaded environment image; lighting keeps using the unprojected panorama. Looks best with 'Show floor' off." Disabled unless a custom HDRI is loaded. Turning it on triggers a re-bake behind a "Rebuilding environment projection..." progress dialog. off -
Room radius (cm) "Dome radius of the projected room - roughly the distance from where the panorama was shot to its walls. Smaller reads more intimate and parallaxes more; larger pushes the environment away." Disabled unless a custom HDRI is loaded and Ground projection is on. 500 200 - 20000
Capture height (cm) "How high above the floor the panorama was captured (tripod / eye height, typically ~160 cm). Sets where the horizon sits; raise it if the projected floor looks stretched, lower it if walls lean inward." Same enable condition as Room radius. 160 10 - 500

In short: Browse... and Reset always work, but Ground projection only turns on once you have loaded a custom HDRI, and Room radius and Capture height only turn on once Ground projection itself is also on.

Studio and Graph › Settings

Shortcuts

Pick a camera scheme, rebind any command, choose the held modifiers and fill the ten brush palette slots.

Camera scheme

A combo box at the top picks which of the three navigation presets the viewport uses; a paragraph underneath always shows that preset's own gesture list verbatim.

  • Mesh Morpher (default) - "Alt+LMB orbit, Alt+RMB zoom, MMB or LMB+RMB pan, wheel zoom. Hold RMB to look around and fly with WASDQE; a plain LMB drag walks the camera."
  • Maya - "Alt+LMB tumble, Alt+MMB pan, Alt+RMB zoom, wheel zoom. Plain LMB is left to the active tool. Hold RMB to look around and fly with WASDQE."
  • Blender - "MMB orbit, Shift+MMB pan, Ctrl+MMB zoom, wheel zoom. LMB (including Alt+LMB) always goes to the active tool. Hold RMB to look around and fly with WASDQE."

See Navigating for what these gestures actually do in the viewport.

Rebinding

Every command below is one row: its display name, a button that captures your next key press as its new chord, and a Reset button that is disabled once the command is already at its shipped default.

Rebinding onto a chord that is already in use somewhere else pops this prompt instead of overwriting silently:

"{0}" is already assigned to "{1}".

Reassign it to "{2}"? The existing binding will be cleared.

{0} is the chord you just pressed, {1} is the command that currently owns it, and {2} is the command you were trying to rebind. Confirming clears the old assignment so the chord only ever fires one command at a time.

A Reset All to Defaults button at the bottom of the page puts every shortcut back to its shipped default in one click.

Default bindings by category

General

Command Default chord Notes
Undo Ctrl+Z
Redo Ctrl+Y
Open Content Browser (editor) Ctrl+Space Editor host only - the standalone Studio app ignores it.

Graph Editor

Command Default chord
Select All Ctrl+A
Copy Ctrl+C
Cut Ctrl+X
Paste Ctrl+V
Duplicate Ctrl+D
Frame Graph F
Find Node Ctrl+F
Delete Selected Delete
Create Comment C

Viewport

Command Default chord Notes
Frame Selection F See Focus (F) for exactly what it frames.

Sculpt Brush

Command Default chord Notes
Radial Brush Menu (hold) Space Opens the radial brush picker while held.
Adjust Brush Size (hold) B Drives the cursor-anchored size readout while held.
Adjust Brush Falloff (hold) N Drives the cursor-anchored falloff readout while held.
Adjust Brush Strength (hold) T Drives the cursor-anchored strength readout while held.
Decrease Brush Size [
Increase Brush Size ]
Decrease Brush Strength Shift+[
Increase Brush Strength Shift+]
Brush Slot 1 - 9 1 - 9 Fires whichever brush is assigned to that slot in the Brush Palette below.
Brush Slot 10 0
Toggle Symmetry X
Cycle Symmetry Axis Shift+X
Toggle Mask-Paint Mode M
Invert Mask Ctrl+I
Clear Mask Alt+M
Toggle Lazy Mouse L
Mask: Marquee Mode Shift+M
Mask: Blur Ctrl+B
Mask: Sharpen Ctrl+Shift+B
Mask: Grow Ctrl+G
Mask: Shrink Ctrl+Shift+G
Mask: Cavity Ctrl+K

Viewport View Mode

Command Default chord
Cycle View Mode (Lit / Unlit / Wireframe) unbound
View Mode: Lit unbound
View Mode: Unlit unbound
View Mode: Wireframe unbound

All four are unbound out of the box - assign a chord here if you want a key for them. See View Modes for the full mode list.

Viewport Camera

Command Default chord Notes
Camera: Perspective Numpad 0
Camera: Front Numpad 1
Camera: Back Numpad 2
Camera: Left Numpad 3
Camera: Right Numpad 4
Camera: Top Numpad 5
Camera: Bottom Numpad 6
Camera FOV + unbound Steps Field of View by 5 degrees, clamped 1 - 170.
Camera FOV - unbound Same step, the other direction.
Camera Speed + unbound Multiplies Camera Speed by 1.25, clamped 1 - 100000.
Camera Speed - unbound Divides Camera Speed by 1.25, same clamp.

Landmarks

Command Default chord
Toggle Spline Mode T
Cancel Spline Escape

Sewing

Hidden from this page entirely unless the simulation nodes are visible to you.

Command Default chord
Toggle Free Mode F
Reverse Selected Seam Ctrl+B

Camera (hold RMB)

Command Default chord
Move Forward W
Move Backward S
Strafe Left A
Strafe Right D
Move Up E
Move Down Q

These six only fire while the right mouse button is held - see WASDQE fly.

Held Modifiers

Six rows, each a combo choosing Shift, Ctrl or Alt:

Role Default
Smooth / Secondary (brush) Shift
Invert (brush) Ctrl
Orbit Camera Alt
Add to Selection Ctrl
Subtract from Selection Shift
Mirror Landmark Shift

Brush Palette

Ten combos, one per numbered slot (keys 1 through 9, then 0 for slot 10, plus the radial menu on Space), each labelled Slot {n} with its key shown alongside. Each combo picks which brush that slot fires: None, Sculpt, Smooth, Grab, Move, Inflate, Pinch, Flatten, Clay, Scrape, Fill, Plane, Restore, Project, Displace, Blend, Scale or Twist.

Slot Key Default brush
1 1 Sculpt
2 2 Smooth
3 3 Grab
4 4 Inflate
5 5 Pinch
6 6 Flatten
7 7 Clay
8 8 Scrape
9 9 Fill
10 0 Move

Dragging a tool from the tool tower onto a wedge of the radial brush menu reassigns that slot the same way.

Studio and Graph › Settings

Theme

Every colour the application uses, and which changes apply live rather than on the next launch.

An intro line on the page itself sets the rule for everything below it:

"Viewport, graph, and document-tab colours apply live; the rest of the app chrome (surfaces / text / overlays) applies on the next launch."

In other words: recolour the viewport, the graph canvas or a document tab and you see it immediately. Recolour general app chrome - panel surfaces, text, buttons, most overlays - and it takes a restart to show everywhere. Where the app states a row's own timing explicitly, this page says so under that row; otherwise, go by the rule above.

A Reset to defaults button restores the built-in theme in one click. Its tooltip:

"Restore the built-in 'Graphite + Azure' theme. Live colours update immediately; restart for the full app chrome."

It resets every colour on this page, plus the viewport colours documented on Camera and Display (Background Color, Wireframe Color).

Accent

Label What it colours Default
Accent colour The one highlight colour, used everywhere focus matters: selected-tab underline, input focus rings, checkboxes, selection rectangles and "active" toggles. #3D82F7

Surfaces

All of these apply on next launch.

Label What it colours Default
Window background The darkest surface - the window backdrop seen behind the panels and in the gaps between them. #0D0E10
Header & menu bar Background of the top menu bar and the document-tab strip. #131417
Panel background The main panel fill behind the viewport, graph and details panels. #181A1E
Elevated (cards) Raised card surfaces, and the fallback for any control without its own colour. #23262B

Interaction overlays

Label What it colours Default
Hover (alpha) Translucent overlay drawn on a control while the mouse is over it. white at 5%
Pressed (alpha) Translucent overlay drawn while a control is being clicked. white at 9%
Active / selected (alpha) Translucent overlay marking the active or selected item, e.g. the current tab. white at 7%
Divider lines (alpha) The thin separator lines under the toolbar and between detail categories. white at 6%
Control borders (alpha) The hairline outline around buttons, text fields, dropdowns and checkboxes. Applies on next launch. 0.147, 0.168, 0.216 at 25%

Controls (each independent)

All of these apply on next launch.

Label What it colours Default
Toolbar background The main toolbar strip. #131417
Button background Fill of flat / secondary buttons. #23262B
Text box background Fill of editable text fields. #23262B
Number field background Fill of numeric spin boxes. #23262B
Checkbox background Fill of an unchecked checkbox. #23262B
Dropdown button background Fill of a closed combo box. #23262B
Dropdown menu background Background of an open dropdown list. #1F2228
Dropdown selection Highlight behind the hovered / selected item in a dropdown list (kept opaque). 0.016, 0.147, 0.084
Right-click menu background Background of the graph's right-click Add Node menu. #1F2228

Text

Label What it colours Default
Primary text Main, most-readable text colour for labels and values. Applies on next launch. #ECEEF2
Secondary text Less-important text - section sub-labels and inactive items. #9AA3B0
Muted / disabled text Dimmed text - disabled controls, hints and placeholder notes. #61666F

Feedback (status colours)

Label What it colours Default
Success - green Good / "on" state: high FPS, the Mirror action, the timeline start handle. #4FB86A
Warning - amber Attention / medium state: mid-range FPS and the light-direction marker. #E0A24E
Error - red Bad / destructive: low FPS, the Delete action, the timeline end handle. #E0616A
Info - azure Neutral-positive: the Invert action and new graph comments. #5B9BFF
Dropdown popup background (alpha) Background fill of the popup that opens under combo boxes and dropdowns. #15171B at 96%

Panel tabs

All of these take effect after restarting the app.

Label What it colours Default
Active tab background Background of the active tab chip in the panel tab bars (Viewport, Target Viewport, Graph, Details, Agentic, Scene). #1C1F24
Inactive tab background Background of the inactive tab chips. #1D2023
Inactive tab label Label colour of the inactive tab chips. #6B7079
Active tab underline The accent line on the active tab chip. A tab that is already open when you change this may need reopening to pick it up. #3D82F7

3D viewport

Applies live, except the two pane-badge rows below, which apply on next launch.

Label What it colours Default
Show symmetry plane Checkbox. Draws the mirror-plane indicator (border, grid and translucent fill) while sculpt symmetry is on; symmetry itself keeps working when this is off. on
Symmetry plane (alpha) The mirror-plane grid shown over the mesh while symmetry is enabled. #45C6E6 at 50%
Orientation gizmo - X X-axis colour of the orientation gizmo in the viewport corner. #ED5A5A
Orientation gizmo - Y Y-axis colour of the orientation gizmo. #54C56C
Orientation gizmo - Z Z-axis colour of the orientation gizmo. #4F8CF6
SOURCE pane badge (alpha) Background of the SOURCE label in the left preview pane. Applies on next launch. #1C4C82 at 92%
TARGET pane badge (alpha) Background of the TARGET label in the right preview pane. Applies on next launch. #7E2D32 at 92%
Stylus pressure bar (alpha) Fill, glow and outline of the pen-pressure capsule at the left edge of the Source pane while a pen is on the tablet. #FBBF24
Stylus bar track (alpha) The dark capsule behind the pressure fill. #0D0E10 at 62%

Graph editor

Label What it colours Default
Canvas background The graph editor backdrop behind the node grid. Applies live. #0A0B0D
Grid - fine lines The closely-spaced minor grid lines on the graph canvas. #141619
Grid - bold lines The bolder major grid lines every few cells. #1C1F24
Node background The flat fill colour behind every node card. Only affects nodes drawn after you make the change - nodes already on screen keep their old fill until redrawn. 0.008, 0.0097, 0.0116
Node title tint Tints every node's title bar. White keeps the per-category colours (green inputs, red outputs, teal mesh...); pick a colour to shift or desaturate all of them at once. Same drawn-after-this-change timing as Node background. white
Node outline (alpha) The 1px border that lifts each node off the canvas. Selected nodes use the Accent colour instead. 0.047, 0.058, 0.072 at 90%
Marquee fill (alpha) Interior of the drag-select rectangle in the graph. #3D82F7 at 15%
Marquee border (alpha) Outline of the drag-select rectangle. #3D82F7 at 90%
Node message - error Background of a node's message strip when it reports an error. #C2454E
Node message - warning Background of a node's message strip when it reports a warning. #B07F33
Node message - info Background of a node's message strip for informational notes. #3A6FB5

Floating tool panel

Label What it colours Default
Panel background (alpha) Body fill of the inspector panel that floats over the viewport for the active tool. Applies on next launch. #15171B at 95%
Panel outline (alpha) Thin border around the floating tool panel. white at 10%
Header background (alpha) Fill of the tool panel's title strip. #1E2127 at 97%
Header outline (alpha) Border under the tool panel's title strip. white at 7%
Title text Colour of the tool panel's title and chevron. #ECEEF2

Details panel

Label What it colours Default
Property row tint (alpha) Subtle background tint of even property rows - the row striping. Applies on next launch. white at 2%
Property row tint (alt) (alpha) Background tint of alternate property rows. white at 5%
Vector field - X (red) The red X label/bar on vector and colour property fields, e.g. Location X. #E0616A
Vector field - Y (green) The green Y label/bar on vector and colour property fields. #57BE6E
Vector field - Z (blue) The blue Z label/bar on vector and colour property fields. #3D82F7
Vector field - W (yellow) The yellow W/alpha label/bar on 4-component property fields. #D6A848

Timeline (frame range)

Label What it colours Default
Input row background Background behind the Start/End frame spin boxes. Applies live. #141619
Backdrop The timeline's outer backdrop. #0A0B0D
Scrub track The horizontal track bar the frame range sits on. #15171B
Frame ticks The tick marks along the timeline. #363B43
Frame numbers The frame-number labels under the ticks. #797F89
Selected range fill (alpha) Interior of the selected Start to End range. #3D82F7 at 30%
Selected range border Outline of the selected range. #3D82F7
Start-frame handle The draggable Start-frame handle. #4FB86A
End-frame handle The draggable End-frame handle. #DB5C66

Landmarks

Label What it colours Default
Unpaired landmark Colour of a landmark that has no matching point on the other mesh yet. 1.0, 0.3, 0.0
Correspondence highlight Highlight colour linking a landmark to its matched correspondence. 0.0, 0.7, 1.0

Code editor (syntax highlighting)

All of these apply live.

Label What it colours Default
Code text Default text colour in the Wrangle node's expression editor. 0.70, 0.73, 0.78
Code keyword Language keywords in the expression editor, e.g. float, vector. 0.25, 0.42, 1.00
Code function Built-in function names in the expression editor. 0.95, 0.75, 0.22
Code attribute Attribute and channel names, e.g. @P, swizzle components. 1.00, 0.38, 0.12
Code number Numeric literals in the expression editor. 0.35, 0.85, 0.35
Code comment Comments in the expression editor. 0.28, 0.38, 0.28
Code operator Operators and punctuation in the expression editor. 0.55, 0.60, 0.68

One more syntax colour, for string literals, exists in the underlying settings but has no row on this page, so it is not user-editable from Theme.

Studio and Graph › Settings

AI

The assistant backend, its conversation limits, the API keys stored encrypted on this machine, and the local MCP server.

This page configures the Agentic panel's assistant. Most of it is a details panel, so the rows below are grouped by the same categories the app itself uses.

Backend

Setting What it does Default Choices
Backend Which AI provider and connection method the Agentic panel uses. Anthropic API (key) Anthropic API (key), Claude Code (installed), OpenAI API (key), Codex (installed), Grok API (key), Grok Build (installed)

The model and effort fields for each backend are not exposed on this page - use the model combo in the Agentic panel's own header instead.

Conversation

Setting What it does Default Range
Image Quality Quality setting for images the assistant sends to the model. 70 0 - 100
Max Tokens Maximum tokens in a single reply from the assistant. 8192 1024 - 64000
Max Tool Turns Maximum number of tool-call turns allowed per conversation. 100 1 - 400
Max Images In Context Maximum number of images kept in the conversation context at once. 6 1 - 20
Enable Subagents Whether the assistant can delegate work to subagents. on -
Max Subagent Depth How many levels deep a subagent can itself delegate to further subagents. 1 1 - 3

Chat

Setting What it does Default
Show Tool Call Rows Shows each tool call as its own row in the chat transcript. off

Integration

Setting What it does Default Range / condition
Enable MCP Server Runs a local MCP server so external tools can connect to Mesh Morpher. on -
MCP Port Port the local MCP server listens on. 47800 1024 - 65535
Require MCP Auth Requires the bearer token below to connect to the local MCP server. on -
Claude CLI Path Path to the Claude Code CLI executable. empty Shown only when Backend is Claude Code
Codex CLI Path Path to the Codex CLI executable. empty Shown only when Backend is Codex
Grok CLI Path Path to the Grok Build CLI executable. empty Shown only when Backend is Grok Build
Sidecar Tool Access What the assistant's sidecar process is allowed to touch. Mesh tools only (safe) Mesh tools only (safe), Full access (files, shell, web)
Sidecar Working Dir Working directory for the sidecar process. empty (uses the project directory) -
Codex 1M context Enables Codex's 1 million token context window. off Shown only when Backend is Codex

API keys and the MCP token

Below the details panel, hand-built rows hold the actual secrets:

Row Behaviour
API key / API key (set) Password box, shown only when Backend is Anthropic API. Hint text: sk-ant-... (stored encrypted on this machine). A Save button commits it.
OpenAI key / OpenAI key (set) Password box, shown only when Backend is OpenAI API. Hint text: sk-... (stored encrypted on this machine). Save commits it.
Grok key / Grok key (set) Password box, shown only when Backend is Grok API. Hint text: xai-... (stored encrypted on this machine). Save commits it.
MCP Bearer Token Read-only, shown elided to 21 characters plus ..., or "(unavailable - see log)" if none exists yet. Tooltip: "Bearer token required by the local MCP server. Use Copy to get the full value for an external client's config."
Copy Copies the full token to the clipboard. Tooltip: "Copy the MCP bearer token to the clipboard"
Regenerate Mints a new token. Tooltip: "Generate a new MCP bearer token. Any client using the old token, including a running sidecar, must reconnect with the new one."

All three provider keys are encrypted with Windows' own per-user encryption (DPAPI) before they touch disk, and are stored only on this machine - never as plain text.

Studio and Graph › Settings

Scripting

The limits that stop an expression or a Python stage from freezing the application, and which interpreter runs it.

"Wrangle expressions are bounded by the step budget (or, with unlimited step budget on, the run-time timer) so a loop cannot freeze the app. Python packages install from a '#@requires' line in the script, not from this page."

That is the page's own summary, and it is the reason every setting below exists: Wrangle runs arbitrary expressions and, optionally, arbitrary Python, so this page is entirely about how it gets stopped if that code misbehaves.

Runtime

Setting What it does Default Range
Step budget per element How many instructions one vertex or triangle may run before its expression is abandoned - what stops a loop that never ends from freezing the app. Raise it if a legitimate loop reports that the expression did not finish; a high value only makes a node slow, never hangs it. Ignored while Unlimited step budget is on. derived automatically, not a fixed shipped number 4096 - 2000000000
Unlimited step budget Turns the step budget above off and uses the run-time limit below instead. off -
Unlimited run time limit (seconds) "How many seconds one evaluation may run once 'Unlimited step budget' above is on - the actual hang guard once the step budget is off. 0 means no time limit at all; see the warning below before leaving this at 0." Disabled unless Unlimited step budget is on. 300 0 - 86400 (0 = no limit)

"With no step limit and no time limit, an expression containing a loop that never ends will run for ever and the app will have to be closed from Task Manager. Set 'Unlimited run time limit (seconds)' to a non-zero value to keep a way out."

Python stage

Setting What it does
Enable embedded Python "A Wrangle node's Python stage runs with this application's full privileges and is not sandboxed - see the in-app node docs for the Python stage before turning this on. The same switch as the -mmpython/-mmpythonenable command-line flags. Also gates code completion in the Python editor: while this is on, 'mm.' and stdlib/package names complete with real signatures using the bundled jedi engine, on top of the always-on built-in name list."

It ships on. A fresh install with no scripting settings file behind it has the Python stage enabled, because nothing in Mesh Morpher ever runs a script by itself: opening a graph, pasting a node and importing a preset all deserialize without executing anything. The gate that matters is the explicit Run press on the Wrangle node, not this switch. Turn it off if you want the stage refused outright on this machine.

Interpreter

Setting What it does Default Range
(interpreter path) "Absolute path to a python.exe. Empty (default) runs this app's own bundled Python 3.11 in-process. A custom path runs THAT interpreter out-of-process instead - any version, your own environment and packages - and gets the hard-kill benefit below for free." empty -
Browse... "Choose a python.exe to run the Wrangle Python stage out-of-process (isolated)." Opens a dialog titled "Choose a Python interpreter". - -
Clear "Return to the built-in interpreter (in-process)." Disabled when the path is already empty. - -
Isolate built-in interpreter "Runs the built-in interpreter as a separate process - slower per Run, but a crashing package cannot take the app down. For a script that imports a native wheel you do not fully trust. Ignored while Python Interpreter Path above is set - a custom interpreter already runs isolated." off -
Python timeout (seconds) "How long a Wrangle node's Python stage may run before it is stopped and reported as timed out. In-process, this is a cooperative cancel serviced between Python bytecode instructions - a script blocked inside a C extension (a long numpy/scipy call, a socket read) is not interrupted until control returns to Python. For a guaranteed hard stop, turn on 'Isolate built-in interpreter' above: it runs out-of-process and is hard-killed on timeout. 0 means no timeout at all - see the warning below before leaving this at 0." 300 0 - 86400 (0 = no timeout)
Additional Python paths "Extra directories appended to sys.path before a Wrangle node's Python stage runs, after the managed packages folder that '#@requires' installs into. One path per line." Multi-line text box. empty -

A status line below the path box reads one of three ways, depending on what is set above:

  • Interpreter: <path> (isolated) - a custom interpreter path is set.
  • Interpreter: built-in 3.11 (isolated) - no custom path, but Isolate built-in interpreter is on.
  • Interpreter: built-in 3.11 (in-process) - no custom path, and not isolated.

"With no timeout, an in-process Python script that hangs (an infinite loop, a network call that never returns) will freeze the app until it is closed from Task Manager. Turn on 'Isolate built-in interpreter' (or set a custom interpreter path) above and a hang can still be cancelled from the progress dialog instead, since that run is a separate, hard-killable process. Set 'Python timeout (seconds)' to a non-zero value for a guaranteed way out either way."

A Reset to defaults button at the bottom-right puts every setting on this page back to the value the app ships with.

Studio and Graph › Settings

Installed Nodes

Node presets installed on this machine from .mmnode files, and how to import or remove one.

"Presets you or someone else exported to a .mmnode file and installed on this machine. They show up under 'Installed Nodes' in the Add Node menu. Uninstalling never changes a graph you already placed one into. You can organize them into subfolders here or in the plugin's own folder, and a folder can carry Python scripts alongside its .mmnode - both are picked up automatically."

Controls

Control Behaviour
Import... Opens a dialog titled "Import Node Preset" and installs the .mmnode file you choose. Tooltip: "Open a .mmnode file and install it."
Refresh Re-scans your installed presets from disk.

The table

Column Contents
Title The preset's name.
Author Who exported it.
Category Where it files itself in the Add Node menu.
Nodes What node(s) the preset contains.
Script A [py] glyph if the preset carries a Python script alongside it. Tooltip: "Contains a Python script. Never runs on install or placement - see Settings > Scripting."
Installed When it was installed.
(actions, unlabeled) Open Folder and Uninstall - see below.

Row actions

  • Open Folder reveals the preset's folder on disk.
  • Uninstall removes the preset from My Presets. Its tooltip: "Remove this preset from My Presets. Graphs you already placed it into are not affected." Presets that shipped with the app cannot be uninstalled at all - the button is disabled, with the tooltip "This preset shipped with the app and cannot be uninstalled."

Toasts you may see: "Uninstalled" on success, "Uninstall failed" on failure, and "Could not read the file" if a preset file itself is unreadable.

Studio and Graph › Settings

Where Settings Are Stored

Which file on disk holds which settings, and where saved captures go.

Every settings file lives in a MeshMorpher folder under your Windows user settings directory - %LOCALAPPDATA%\MeshMorpher\ in practice. Everything is plain JSON, not an .ini file.

File Contents
MMPreviewSettings.json Viewport, camera, lighting, capture / turntable settings and viewport colours.
MMAppLayout.json Window geometry, UI scale, undo limits, dock layout, recent files, and the whole Theme palette.
MMInputSettings.json Shortcut overrides, held modifiers, the navigation preset and the brush palette - see Shortcuts. Only the commands you have actually rebound are stored; anything still at its shipped default is not written here at all.
MMLandmarkViewOptions.json Landmark appearance settings.
MMAgentSettings.json The AI page, including the encrypted API keys and the MCP bearer token.
MMWrangleSettings.json The Scripting page, plus every other Wrangle ceiling that has no row on that page.
MMScriptingSettings.json Only the Enable embedded Python flag.
UpdateSettings.json The two General update-check settings.
MMWelcome.json Welcome-dialog state.
MMStandaloneLicense.json (Studio) / MMLicense.json (Graph) Licence activation state.

Legacy fallback

If none of the files above exist yet, Mesh Morpher reads (but never writes) the same file names from a Config folder next to the executable instead - a fallback kept for installs from before this settings folder existed. Once you save any setting, the current location above is used from then on.

Captures

Saved viewport images and turntable sequences default to a folder under your Documents directory, with the base file name MeshMorpher_YYYYMMDD_HHMMSS. See Capture: Images and Turntables.