The Multiverse for Maya Shelf

Brand Multiverse | Studio — Maya Quick Tool Reference

For a more complete and organic documentation please refer to the User Documentation.



Write & Read


...

Asset Write

Py: mvAssetWrite

The Asset Write is a windowed panel to write the current Maya selection as an Alembic or USD Asset file. The user can choose which back-end to output for each format respectively.

The UI offers options to choose which type of primitives to write as well as several types of properties.

The user can choose to write the number of single sample (for a static asset) or a number of samples (for an animated/deforming asset). Options for curved motion blur are provided along with shutter controls.

Note that Multiverse for Maya & Katana readers use built-in sample interpolation, therefore linear motion blur is fully automatic and completely free even with 1 single motion sample. A value of 2 motion samples should be used only when reading assets that require linear motion blur in other apps' readers. A meaningful value for curved motion blur is 3 or more: odd numbers are recommended when so.

When multiple items are selected, a single file is written out, the underlying Python command is:


mvAssetWrite -task "--AssetPath /path/to/asset.abc --Backend Ogawa --NumFramesPerSecond 24 --StartFrame 1 --EndFrame 35 --WriteMeshes 1 --WriteUVSets 1 --WriteNormals 1 --WriteTangents 1 --NumSamplesPerFrame 3 --ShutterType 1 --ShutterAngle 144 --DagRoot |group1 --DagRoot |group2"

Additionally, from MEL/Python scripting, the user can also write multiple Asset files at once (Multi-Task Writing), with one single evaluation of the Maya DAG:


mvAssetWrite -task "--AssetPath /path/to/Asset_1.abc --Backend Ogawa --NumFramesPerSecond 24 --NumSamplesPerFrame 1 --StartFrame 1 --EndFrame 24 --WriteMeshes 1 --DagRoot |group1" -task "--AssetPath /path/to/Asset_2.abc --Backend Ogawa --NumFramesPerSecond 24 --NumSamplesPerFrame 3 --StartFrame 36 --EndFrame 48 --WriteMeshes 1 --DagRoot |group2"

Back to top ↑

...

Elastic Composition Write

PY: mvAssetComposite

The Elastic Composition Write is a command to write an "Elastic Composition": a hierarchical tree of USD and/or Alembic Assets parented together that can be later read, unpacked/packed (hence why "Elastic"). Simply select a transform root node representing the root of your hierarchy to write out as a .usda file (USD ASCII). This can be later read back in Maya using the Asset Read shelf button, or it can be read in any other application able to read USD files. Note that the composition file, being in plan text ASCII, is available for inspection and editing (see an example here aside).

When affine transformations (translate, rotate, scale) are performed on transform nodes of Assets (whether they were originally animated or static within the Asset itself) which were read before writing an Elastic Composition, make sure to select a valid time range to write correct transformations in the composition. The order of transformation in USD is built-in to XYZ (default), also make sure to have the "inherit transform" flag active in the transform nodes (default).

Note that although it is possible to write a Composition made of both USD and ABC files, currently USD-only Compositions are recommended: this is due to the USD design which consumes Alembic files through a Sdf layer which is notoriously under-performing for Alembic files.

Note that Multiverse for Maya ships with a fully functional USD distribution including Python binding, so workflows can be scripted and customized by TDs: try executing USD commands in the Python script editor.

Back to top ↑

...

Example (USDA)


#usda 1.0
(
    framesPerSecond = 24
)

def Xform "nagateSkinsuit" (
    add references = @/tmp/nagateSkinsuit.abc@
)
{
    double3 xformOp:translate = (101.74670947038979, 0, 0)
    uniform token[] xformOpOrder = ["xformOp:translate"]

    def Xform "grass_ogawa" (
        add references = @/tmp/grass_ogawa.usd@
    )
    {
        double3 xformOp:translate = (-101.74670947038979, 0, 0)
        uniform token[] xformOpOrder = ["xformOp:translate"]
    }
}

...

Asset Read

PY: mvAssetRead

The Asset Read is a windowed panel to read Alembic or USD Assets previously written by the Asset Write, or USD Compositions written by Composition Write or coming from another application. When selecting/hovering an Asset, useful metadata information is quickly displayed in the UI without actually reading the full data of the Asset.

Data is always read using Multiverse highly efficient Elastic Compounds, meaning that:

  • Ultra-fast reading, always performed per-frame.
  • Viewport rendering is optimized for speed in Maya VP2, with support of GPU instancing.
  • Memory (RAM) usage is kept to the lowest possible amount.
  • Compounds are "Elastic": they can be unpacked/packed in a on-demand fashion.
  • Compounds can be displayed in the VP2 as Shaded Geometry, Bounding Box to maximize reading performance, or user can also decide to Bypass Viewport display to further reduce memory use. All viewing modes are hot-swappable at runtime via Maya Shelf buttons, or Maya Marking Menu, or via the mvCompoundShape nodes Attribute Editor. Bounding Box requires assets with Full Bounding Box Tree information written in, by default Multiverse Asswet Write does so, for Houdini see Houdini guidelines.
  • Ability to read & tweak velocity motion blur information, typically from Houdini Assets written by the Houdini Alembic ROP containing velocity data. See the Houdini guidelines.
  • Support of Alembic instancing, typically from Houdini Assets written by the Houdini ROP Alembic Output from a network where, respectively, "Pack geometry before copy" is enabled in the Copy SOP (Houdini 15.5), or "Pack and instance" is enabled in the Copy to Points SOP (Houdini 16). See the Houdini guidelines.

Back to top ↑

...

Elastic Compound

Shape Node: mvCompoundShape


When reading an Asset, a Multiverse "Elastic Compound" shape node of type mvCompoundShape is created in Maya, this node is packed by default and represents the whole asset hierarchy. Reading of Elastic Composunds is per-frame and designed to be as memory efficient as possible. "Elastic Compounds" can be further unpacked for selective material and attribute assignments. When unpacking all attributes set on the parent node will be propagated accordingly. "Re-Packing" again an "unpacked" compound is also possible.

Elastic Compounds can be copied, instanced, transformed, animated. GPU instancing in the VP2 is supported for copies/intances.

The Attribute Editor of the node offers fine-grain timing controls such as user time, frame offset, hold/invisible/loop/bounce behavior before/after user time, and interactive ability to re-time animated Assets via the speed multiplier.

Standard Maya "render stats" attributes are also available.

Finally, renderers translator "Extension Attributes" (3Delight, Arnold) or "Dynamic Attributes" (PRMan, VRay) are automatically handled by the respective rendering translators. In the UI aside you can see an example of 3Delight Extension Attributes and PRMan dynamic attributes.

Back to top ↑


...

Write MaterialX

PY: mvMaterialXWrite

The MaterialX Write is a command that writes valid material assignments, including displacement and full shading networks, to an output XML file. This can be read at a later stage in another DCC Application, such as KATANA.

This is possible thanks to J CUBE's MaterialXS an "eXtra Small" Python implementation of MaterialX, an open standard to interchange rich material and lookdev data between DCC Apps and renderers.

MaterialXS is distributed as Open Source under Apache License 2.0 on GitHub .

Multiverse material writing abilities are specifically designed to provide a seamless transition of shading network from Maya to KATANA using the 3Delight/OSL renderer. Currently all native Maya and 3Delight for Maya material shading networks are supported.

Back to top ↑

...

Example (XML)


Unpack/Pack Assets


...

Unpack Asset

PY: mvCompoundSystem.UnPack()

The Unpack Asset shelf button is equivalent to the "Unpack" Maya Marking Menu: they are both used to unpack one-level of of the hierarchy of a Elastic Compound. The command works on the current selected item(s), and will unpack below its/their hierarchy point(s). Unpacked compounds can too be selectively visualized in bounding box / shaded geometry and bypass viewport modes.

Back to top ↑

...

Pack Asset

PY: mvCompoundSystem.Pack()

The Pack Asset shelf button is equivalent to the "Pack" Maya Marking Menu: they are both used to pack one-level of of the hierarchy of a Elastic Compound. The command works on the current selected item(s), and will pack upstream to its/their hierarchy point(s). When selecting the root node of an hierarchy the asset will be packed back to one single node. Packed compounds can be selectively visualized in bounding box / shaded geometry and bypass viewport modes.

Back to top ↑

Visibility


...

Bypass Viewport

MEL: mvCompoundShapeSwitchDrawMode(3)

The Bypass Viewport shelf button bypasses the viewport for any selected Elastic Compound node to maximize memory performance in Maya. Note that any "bypassed" nodes, unlike unlike Mata "hidden" nodes, are still rendered as expected. Bypassed nodes are colored in yellow in the Maya Outliner (Maya 2016+) where they can be still selected. Skipping the viewport draw() provides an extra memory performance gain for very complex scenes. This command is also available in Maya Marking Menus so to hot-swap between modes.

Back to top ↑


...

Viewport Display as Shaded Geometry

MEL: mvCompoundShapeSwitchDrawMode(1)

The Shaded Geometry shelf button displays any selected Elastic Compound nodes as Shaded Geometry in the Viewport. Note that to maximize performance Shaded Geometry topology is not triangulated, its not shaded independently, nor vertex normals are considered, such behaviors can be overridden via environment variables if the users needs to do so. This command is also available as in Maya's Marking Menus so to hot-swap between modes.

Back to top ↑


...

Viewport Display as Bounding Box

MEL: mvCompoundShapeSwitchDrawMode(2)

The Bonding Box shelf button displays any selected Elastic Compound nodes as Bounding Box in the Viewport to maximize reading performance in Maya. Bounding Box is the most efficient Asset Reading method, it can read in Maya hierarchies which are made of hundreds of thousands of nodes, in a fraction of a second. Note that any node displayed as Bounding Box will still rendered as real geometry. Displaying nodes as Bounding Box in the viewport provides an extra performance gain for very complex scenes both from interactive use. As per memory memory consumption, Bounding Box is only inferior only to the Bypass Viewport mode. This command is also available as in Maya's Marking Menus so to hot-swap between modes .

Back to top ↑

Subdivision Tagging


...

Tag as Subdiv

PY: mvAssetWrite.mvSdsSetSubd(1)

The Tag as Subdiv shelf button allows you to tag a poly mesh geometry as a subdivision surface by adding an extra attribute to the shape node. Aside this method, Multiverse for Maya is also able to recognize and write to a polygon meshes to be rendered as subdivision meshes in a wide number of ways: when displayed as "smooth proxy" (hit 3 in the viewport), when supported renderer's extension attributes are set in shape nodes, and via 3Delight geo attributes. Note that Maya creases are automatically exported.

Back to top ↑

...

Tag as Poly

PY: mvAssetWrite.mvSdsSetSubd(0)

The Tag as Poly shelf button uses tags a shape which was previously tagged as subdivisions surface back to a polygon mesh. Aside this method, Multiverse for Maya is also able to write polygon meshes to be rendered as such in a wide number of ways: when "smooth proxy" if off (hit 1 in the viewport), when supported renderer's extension attributes are not set in shape nodes, and via delightGeoAttributes.

Back to top ↑




Made by

J CUBE

Japan Reseller

Crescent

Trusted and used in production by


Renders with

3Delight
v-ray
renderman
arnold

Integrations for

I/O technologies



Copyright © 2017 J CUBE Inc. Tokyo, Japan. All Rights Reserved.
Other registered trademarks are property of their respective owners.
The Multiverse logo Brand is designed by @pberto.