Maya Scene Import
The packet that gets your scene metadata into ComfyUI
- maya_packet_json
- camera_json
- material_manifest_json
- summary_json
The front door of the Maya roundtrip
If you're using ComfyUI as part of a Maya lookdev pipeline, the first thing you need is a way to get scene information - camera, material list, workspace - from the DCC into the graph. That's MKRMayaSceneImport. It's one of the "host addon" nodes in MKRShift_Nodes: the pack ships matching add-on scripts for each DCC (the Maya one lives in addons/maya/), and these import nodes turn what the add-on produces into clean, structured JSON inside ComfyUI.
So the important thing to know up front: this node does not load a Maya scene. There's no geometry, no viewport, no connection to a live Maya session. It parses a JSON payload - which your Maya add-on, or your own script, hands it - and normalizes it into a packet ComfyUI can reason about.
How it works
You feed it one input: maya_payload_json, a multiline string. The node parses it (tolerantly - bad JSON gets a warning, not a crash), pulls out the fields it cares about, and rebuilds them into a mkrshift_maya_bridge_v1 packet containing:
scene_name- the.ma/ scene name (defaults tountitled.ma).workspace- the Maya project workspace path.camera- camera data, if the payload included any.materials- the list of material/shader entries.
Out come four outputs: maya_packet_json (the normalized packet - feed this to downstream plan nodes), camera_json, material_manifest_json, and summary_json (scene name + material count + warnings). The summary output is the one to wire to a text note if you just want to see "ok, 14 materials came through".
Why the packet-first design
This is the pack's whole philosophy in miniature, and it's worth internalizing: the import nodes normalize, the plan nodes describe, and the runtime nodes execute. Nothing talks to Maya directly from the ComfyUI side - everything is a JSON contract the add-on and the graph both understand. That's slower to set up than a socket hack, but it means the graph stays inspectable and the same payload shape works whether you're on a live roundtrip or just passing files around. It's plumbing, and it's the good kind.
Install and gotchas
cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes
Restart, or install "MKRShift Nodes" via ComfyUI Manager. No pip dependencies, no models, no ffmpeg needed for this one. The add-on scaffold ships in the repo under addons/maya/ if you want the reference implementation of what the payload should look like.
Where people trip: feeding this node the wrong payload shape. It's lenient about malformed JSON but it only looks for scene_name, workspace, camera, and materials - if your payload uses different keys, you get defaults and an empty material list, and it's easy to miss. Check summary_json's material_count before you assume the scene came through intact.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| maya_payload_json | STRING | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| maya_packet_json | STRING | — |
| camera_json | STRING | — |
| material_manifest_json | STRING | — |
| summary_json | STRING | — |