Maya USD Camera Exporter // Documentation

SOLARIS CAM EXPORT.SYS  //  SolarisCamExport.py

A streamlined tool for exporting Maya cameras to USD with proper Houdini Solaris motion blur support.

01  —  Annotated UI Overview Hover a callout number to highlight it. Image size: 498x816
SolarisCamExport UI 1 2 3 4 5 6 7 8 9 10
  • 1
    CAMERA SELECTION & REFRESH

    A dropdown menu containing all valid cameras in your scene. Use the ↻ Refresh button to update the list if cameras were added or removed while the UI was open.

  • 2
    INCLUDE DEFAULT CAMERAS

    By default, standard Maya cameras (persp, top, front, side) are hidden from the list to keep it clean. Check this box to make them visible and selectable for export.

  • 3
    OUTPUT PATH

    Define the directory where the .usdc file will be saved. Click BROWSE to open a directory picker. A live text preview directly below will show you exactly what the final file path will be.

  • 4
    SHUTTER PRESET

    Quick selection for common motion blur shutter angles. Choices include 180° (the cinematic standard), 90° (sharp, staccato action), 270° (dreamy, extended blur), or Custom.

  • 5
    SHUTTER OPEN / CLOSE

    When the Custom preset is selected, these spinboxes unlock. You can manually define the shutter open and close times as fractions of a frame (e.g., -0.25 to 0.25 represents a 180-degree shutter centered perfectly on the frame).

  • 6
    FRAME STEP

    Determines how often a frame is written to the USD file. Use 1.0 for standard whole frames, or drop it down to 0.25 (Subframes) if your camera has extremely fast, curved motion and you need subframe accuracy for rendering motion blur.

  • 7
    TIMELINE RANGE

    A read-only display of Maya's current timeline playback range. The exporter automatically adds a ±1 frame pad (e.g., if your timeline is 100-200, it exports 99-201) to ensure Solaris can calculate velocity/slope correctly at the very start and end of the shot.

  • 8
    PLATE EXR & BROWSE

    Points the metadata scanner at an EXR plate. This is auto-filled from the selected camera's image plane when one exists, or click BROWSE to choose a file by hand. Leaving it blank simply skips the metadata step.

  • 9
    SCAN METADATA → APPLY SHUTTER & CHECK FPS

    Reads the EXR header with a built-in parser (no OpenEXR/OIIO plugins required). If it finds shutter data it sets the Shutter to Custom and fills Open/Close to match the real camera — the math is angle = expTime × fps × 360, so a 1/48s exposure at 24fps becomes a 180° shutter (±0.25). It also compares the plate's framesPerSecond to the Maya scene fps and warns on a mismatch. If the EXR carries no usable metadata (e.g. a CG render with expTime 0), it changes nothing and says so in the log. The fps check also runs automatically every export.

  • 10
    EXPORT & PROGRESS LOG

    Click the large export button to execute the USD write. The log area directly below will display real-time progress, print the exact output path on success, and highlight any errors encountered.

02  —  USD Shutter Logic How Maya talks to Solaris

Motion Blur Compatibility

By default, standard Maya USD exports do not provide Houdini Solaris with the correct camera shutter properties needed for accurate motion blur.


This script intercepts the export process by injecting temporary usdShutterOpen and usdShutterClose attributes directly onto the Maya camera shape node just before export. These values are baked into the final .usdc file, allowing Solaris (Karma/Mantra) to read these native USD tags seamlessly for perfect motion blur rendering. Once exported, the script cleans up after itself, leaving your Maya scene completely unaltered.

03  —  Plate Metadata (Auto Shutter & FPS Check) Read real camera data from an EXR

Shutter From the Plate

If the camera has an EXR plate on its image plane (or you point the Plate EXR field at one), SCAN METADATA reads the file's header with a built-in, zero-dependency parser — no OpenEXR or OpenImageIO plugins required. When the header carries exposure data, it derives the shutter angle and fills the Custom Open/Close values automatically:


angle = expTime × fps × 360
open / close = ∓ angle / 720


So a 1/48s exposure at 24fps resolves to a 180° shutter (±0.25) — matching the cinematic preset exactly.

Cheap FPS Sanity Check

The scanner also compares the plate's framesPerSecond tag against Maya's current scene fps and flags a mismatch — a common cause of retimed or stuttering exports. This same check runs automatically on every export, so you get a warning in the log even if you never press Scan.


Best-effort by design: not every EXR carries this data. CG renders often have expTime 0, and PNGs carry none at all. When there's nothing usable, the tool simply reports it and leaves your settings untouched — it never guesses or overwrites your framing.