Views (Inspecting / Authoring)

The grill.views package provides Qt widgets to author and inspect USD scene graphs.

Convenience launchers and menus for USDView, Houdini and Maya are provided (appearing under the 👨‍🍳 Grill menu), but any DCC or environment with USD and PySide2 should be able to use the widgets.

Spreadsheet Editor

Tabular representation of a USD stage. Ability to quickly inspect and edit prims in bulk is the main motivation for this view to exist. Copy pasting functionality like in other spreadsheet applications should be possible (via csv clipboards).

https://user-images.githubusercontent.com/8294116/99148142-3e9af200-26da-11eb-9a9d-3c63a3c32ccb.gif
https://user-images.githubusercontent.com/8294116/99145748-57e57380-26c5-11eb-847f-ea01f023caf0.gif
https://user-images.githubusercontent.com/8294116/115137690-e0987f00-a06a-11eb-9ba3-1e7df3c0163c.gif

Prim Composition

Uses existing USD Prim utilities to present extended composition arc details than the ones visible by default on USD view. To visualize the composition graph, the graphviz library needs to be available on the environment.

https://user-images.githubusercontent.com/8294116/98809052-1f4d5c00-2471-11eb-965d-43cea0c57322.gif
https://user-images.githubusercontent.com/8294116/98945804-1dee6300-2547-11eb-8e9b-3f0211af6f3c.gif
https://user-images.githubusercontent.com/8294116/115137817-9fed3580-a06b-11eb-81d6-07d7c0fd854d.gif

Setting an Edit Target

The Prim Composition tree exposes a context menu with a Set as Edit Target item. This redirect edits under the selected arc by setting the current stage’s Edit Target.

In the examples below, prims under ChairB_2 and CheerioA_164 have their displayColor, doc and active properties modified in USDView, Houdini and Maya respectively, and changes are inspected via the Layer Content Browser view.

  1. The reference arc targeting the Chair.geom.usd layer is set as Edit Target.

    When displayColor is modified, the changes are visible on both ChairB_1 and ChairB_2, since they share the composition arc and the layer being modified.

  2. The root arc targeting the Kitchen_set.usd layer is set as Edit Target.

    Once the displayColor is modified, the changes are visible on ChairB_2 only, since nothing else shares that arc.

https://user-images.githubusercontent.com/8294116/156912114-a24b81f4-63b1-4b62-9d84-9e2c07aaef5c.gif
  1. The payload arc targeting the Cheerio_payload.usd layer is set as Edit Target.

    When doc of the CheerioA_164 prim is modified, the changes are visible on all CheerioA_* prims, since they share the composition arc and the layer being modified.

  2. The root arc targeting the anonymous houdini LOP layer is set as Edit Target.

    Once the doc is modified, the changes are visible on CheerioA_164 only, since nothing else shares that arc.

https://user-images.githubusercontent.com/8294116/158165374-fe42d80e-8d32-48a4-a628-f6255b5a9e55.gif
  1. The payload arc targeting the Chair_payload.usd layer is set as Edit Target.

    When active property is modified, the changes are visible on both ChairB_1 and ChairB_2, since they share the composition arc and the layer being modified.

  2. The root arc targeting the Kitchen_set.usd layer is set as Edit Target.

    Once the active property is modified, the changes are visible on ChairB_2 only, since nothing else shares that arc.

https://user-images.githubusercontent.com/8294116/158165402-c1dd5119-fe78-4332-8ded-1495703345f9.gif

Layer Stack Composition

Similar to Prim Composition, but available for the whole stage by creating a graph of layer stacks. This helps answer questions like:

  • What prims are being affected by layers X and Y?

https://user-images.githubusercontent.com/8294116/131240483-9b428c4a-92fc-4d79-b464-8b1d07f982e0.gif
https://user-images.githubusercontent.com/8294116/131242061-a42c2637-b550-4e1f-89e5-2328f8491333.gif
https://user-images.githubusercontent.com/8294116/131242058-68f20283-0894-463b-9af0-914941356f8c.gif

In the above example, we’re inspecting Animal Logic’s USD ALab.

  1. On the upper left, all used layers in the current stage are listed.

  2. On the upper right, all prims that are affected by the selected layers are listed.

  3. On the bottom, a composition arcs graph is displayed for the selected layers plus the neighbors (predecessors and successors) for each of them.

    • Nodes in the network represent layer stacks.

    • Edges are the composition arcs between them (it follows the same color scheme as the ones provided by Pcp.PrimIndex.DumpToDotGraph).

    • Options to filter composition arcs are provided on the up left corner of the network view.

      https://user-images.githubusercontent.com/8294116/131248473-8855cca9-f011-4c2e-af3c-1f1eb50d4acb.png
    • The additional option Precise Source Layer (off by default) exists to draw the edge source from the layer from the stack that introduces it. This allows to go from this:

      https://user-images.githubusercontent.com/8294116/131248571-3d4a7e31-eb1c-434c-953d-eef51bc5808c.png

      To (note the outputs of books_magazines01_surfacing and books_magazines01_modelling):

      https://user-images.githubusercontent.com/8294116/131248575-e50a6d64-c298-48fa-a9d2-290696c6d5eb.png

Hint

It is also possible to compute the graph from currently selected prims:

https://user-images.githubusercontent.com/8294116/131242428-7b06729d-f96e-4b92-b02f-1608e99859bd.gif

Layer Content Browser

Uses sdffilter to display content from USD layers (regardless of format or if they have been saved on disk).

Array attributes and time samples have their contents reduced to a maximum of 6 entries.

The following example browses the contents of the layers that modify the displayColor property of the ChairB_2 (as presented on Setting an Edit Target).

https://user-images.githubusercontent.com/8294116/156912106-4526e7be-f846-4daa-8095-ae67440bd9ad.gif

The Layer Content Browser widget can be opened from the USDView Composition tab (as shown above), as well as from the layer tree of the Layer Stack Composition widget:

https://user-images.githubusercontent.com/8294116/156912110-a573d9a6-6aed-4b8a-b492-dbaad2613283.gif