Giter VIP home page Giter VIP logo

maya-capture's Introduction

Playblasting in Maya done right

Playblast with independent viewport, camera and display options.

Usage

With a regular Maya playblast, playblasting is dependent on the size of your panel and provides no options for specifying what to include or exclude, such as meshes or curves. Maya Capture isolates a capture into an independent window in which settings may be applied without affecting your current scene or workspace. It also playblasts the given camera, without regard to which panel is currently in focus.

To install, download capture.py and place it in a directory where Maya can find it.

Examples

Overview

from capture import capture
capture()

# Capture multiple cameras
capture('Camera1')
capture('Camera2')
capture('Camera3')

# Capture with custom resolution
capture(width=400, height=200)

# Launch capture with custom viewport settings
capture('persp', 800, 600,
        viewport_options={
            "displayAppearance": "wireframe",
            "grid": False,
            "polymeshes": True,
        },
        camera_options={
            "displayResolution": True
        }
)

Playblast selected cameras

import maya.cmds as cmds
from capture import capture

# Any camera shapes under selection
cameras = cmds.ls(selection=True, dag=True, leaf=True, type="camera")
for cam in cameras:
    capture(cam)

Playblast selected time range

import maya.cmds as cmds
import maya.mel as mel
from capture import capture

# Get global mel variable
time_slider = mel.eval("$gPlayBackSlider=$gPlayBackSlider")
start, end = cmds.timeControl(time_slider, query=True, rangeArray=True)
capture(start_frame=start, end_frame=end)

Playblast with current settings of a camera and panel

from capture import parse_view, capture

options = parse_view("modelPanel1")
capture(**options)

Playblast with current settings of active view

from capture import parse_active_view, capture

options = parse_active_view()
capture(**options)

Playblast to file using scene name

from capture import capture
import maya.cmds as cmds
import os

filename = cmds.file(q=1, sceneName=True, shortName=True)
name = os.path.splitext(filename)[0]
capture(filename=name)

Taking a snapshot (single frame)

from capture import snap

snap()

Taking a snapshot and store in clipboard. This allows you to paste it in other applications like Photoshop.

from capture import snap

snap(clipboard=True)

Advanced Examples

Building your own library of capture presets

import json
import capture

# Utility functions to save and load options

def save_preset(path, preset):
    """Save options to path"""
    with open(path, "w") as f:
        json.dump(preset, f)


def load_preset(path):
    """Load options json from path"""
    with open(path, "r") as f:    
        return json.load(f)


# With this we can start saving presets
preset = capture.parse_active_view()
save_preset("myPreset.json", preset)

# And capturing with the presets
preset = load_preset("myPreset.json")
capture.capture(**preset)

Store and retrieve view options

The following will read the state of the current modelPanel, let you alter it in some way - such as changing the background color - and then revert it back.

import capture
from maya import cmds

# Read active panel
panel = cmds.getPanel(withFocus=True)
assert "modelPanel" in panel, "Must select a modelPanel"

# Capture current view
view = capture.parse_view(panel)

# Change your view..

# Apply previous view
capture.apply_view(panel, **view)

Store and retrieve scene options

The following will read relevant settings from your scene and playblast settings, let you alter it in some way - such as altering the frame range - and then revert it back.

import capture

# Capture state of scene
scene = capture.parse_scene()

# Change your scene..

# Apply previous state
capture.apply_scene(**scene)

Parse and apply active isolate view settings

The following will read the isolated view's nodes for currently active panel and apply it for the capture.

import capture
from maya import cmds

# Get active panel
panel = capture.parse_active_panel()

# Get isolate view members of the panel
filter_set = cmds.modelEditor(panel, query=True, viewObjects=True)
isolate = cmds.sets(filter_set, q=1) if filter_set else None

# Apply isolate view nodes
capture.capture(isolate=isolate)

maya-capture's People

Contributors

aardschok avatar bigroy avatar mkolar avatar mottosso avatar tokejepsen avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.