FIG.01

I spent some free time building a scene-wide node editor for Maya - something closer to Houdini’s node graph than Maya’s existing one. It didn’t pan out. This post is mostly about why.

(Character model by François Boquet, rig by Santiago Calle.)

Background

FIG.02

Houdini’s node editor has one job: show your scene as a graph and let you walk it. Maya has a node editor too, but it works differently.

FIG.03

In Maya you select a node, click “show connections,” and it surfaces that node’s dependencies. Some nodes (helpers, auxiliaries) are hidden by default. The flow is left-to-right, which works well for nodes with long socket names - sockets stack vertically and connections extend rightward without running out of room.

Houdini mostly flows top-to-bottom, except in VOPs and shader graphs which go left-to-right. Coming from an FX and comp background, top-to-bottom feels more natural to me. So I tried to build that for Maya.

What I built

FIG.04

The editor shows top-level nodes as entry points. Press I to step into the selected node, O to step back out. A breadcrumb bar at the top shows where you are in the hierarchy.

FIG.05

Styled with custom CSS to look closer to Houdini’s editor. Connections can be dragged from socket to socket the same way.

Why I stopped

Two problems, related.

Top-to-bottom doesn’t fit Maya’s nodes. Maya nodes routinely have 10+ connections with long, descriptive socket names. Left-to-right handles this fine - sockets stack vertically and there’s no horizontal limit. Top-to-bottom requires every socket and its label to fit within the node’s width. With many connections it doesn’t lay out cleanly.

FIG.06

Maya isn’t a scene-graph DCC. This is the bigger one, and the reason I shelved it. Maya’s nodes aren’t designed to be viewed as one continuous graph - each one tends to have many connections, often into hidden helper nodes that store side data. Recursively expanding all dependencies produces something unreadable. I suspect this is also why Autodesk’s editor only ever shows the currently selected node’s connections; anything more becomes a mess.

The project’s on hold and the underlying idea is probably wrong-headed for Maya. That said, I picked up a fair amount about Qt, QGraphicsItem, and graphical views building it, so the time wasn’t wasted. Source is available if anyone wants to poke at it - unfinished, uncommented.