maya-sniffer

Ever wondered which nodes are responsible for that 600 mb+ Maya scene file?

Features

  • Fast, resizable UI
  • Parsing at 50 mb/sec
  • Dependency-free, single-file install
  • Script Editor support
  • Terminal support
  • Percentage of total size per node
  • Color-coded node types
  • Click to copy node name to clipboard
  • Click to select node in Maya
  • Tooltip with full node name

Roadmap

  • [ ] Group by hierarchy SpaceSniffer has the ability to "zoom out" by grouping hierarchies under one large box. That would help snuff out those huge groups with thousands of offset groups and metadata stored as strings.
  • [ ] More metadata Hovering takes a while since it's a tooltip. Would be good having not only a faster and more visible popup, but also the full path (rather than just the name) along with parent, number of children, number of attributes, number of connections etc. To help make the decision to kill easier
  • [ ] Click to kill Modify the file directly, by removing any offending nodes you know aren't used or necessary.
  • [ ] Visualise plug-ins Spot and kill viruses like Turtle on-sight, with one click
  • [ ] Live Refresh Just a button to refresh current scene without re-launching the UI
  • [ ] Density Graph Just a graph, one point per node, sorted by size. It'll show whether size comes from a few dense nodes, or lots of smaller ones.
  • [ ] Heatmap Click button to put a surface shader on all renderable geometry, color all curves, with red being large, black being small. To demonstrate interactively in 3d where size comes from.
  • [ ] Visualise Connections These are currently ignored, but sometimes occupy >30% of the file. Include these, somehow..
  • [ ] Visualise Maya Preferences These are sometimes stored with the scene file, can get large, but aren't part of any node (?)
  • [ ] Responsive UI during parse Parse in a thread, and let the user know about progress. It's plain-old line-by-line reading, so we can get a pretty accurate percentage out of it.

Pull-requests are welcome.

104090255-8159f000-526d-11eb-87ee-f46fbe261326

Install

It's a single file, no dependencies.

  1. Download maya_sniffer.py
  2. Store in ~/maya/scripts, e.g. c:\Users\marcus\Documents\maya\scripts
  3. See Usage below

Usage

From the Script Editor.

import maya_sniffer
maya_sniffer.show()

From a terminal.

python maya_sniffer.py c:\path\to\scene.ma

Here's the currently coloured node types.

Color Node Type
transform
nurbsCurve
mesh
joint
camera
skinCluster
dagPose
animCurve

Why?

Whenever I run out of diskspace, I use a free Windows utility called SpaceSniffer. 2 minutes later, I've got the space I was looking for along with a greater understanding of where space typically ends up.

I wanted something like this for Maya.


How it works

Maya Sniffer counts the number of ASCII characters used when saving each node to disk.

That's it.

It's real silly and doesn't tell you how complex or heavy your scene is at run-time. Instead, it'll give you an approximation of where size is and how to recover it.


Showcase

Resizable UI

104033410-659c0e80-51c7-11eb-8ac7-695e3c77e7ac
Script Editor

104031988-6469e200-51c5-11eb-904c-a2593a757f70

Standalone

Requires Python 2/3 and PySide2

104016452-4775e480-51ae-11eb-997f-1e9bb9fdd5e5

GitHub