Material Resolution & Bindings
In OpenUSD, “Why does this mesh look like this?” is a complicated question. Materials are not just “assigned”; they are resolved through a hierarchy of bindings, inheritance, and strength rules.
The Material Editor module is designed to de-mystify this process.
The Resolution Logic
Section titled “The Resolution Logic”When you select a mesh, Preflight traces the material resolution path and displays it in the Binding section:
- Selected Prim: the path of the mesh you are currently inspecting.
- Binding Source: This is the most critical field. It shows the path of the prim where the material was actually authored. In USD, you can bind a material to a parent “Scope” or “Xform”, and all children will inherit it. Preflight identifies exactly where that inheritance starts.
- Effective Material: The actual Material Prim (
/Materials/MyGlass) that is currently winning the resolution battle.
Binding Strength
Section titled “Binding Strength”USD introduced the concept of Binding Strength to resolve conflicts between different layers of the hierarchy:
- Weak Binding (default): Allows the material to be overridden by bindings closer to the mesh in the hierarchy.
- Strong Binding: A “forced” binding. If a parent has a strong binding to a material, child mesh assignments are ignored.
Preflight allows you to toggle this strength via the Binding Strength Picker in the Selected Prim section. This is often the solution for “stubborn” materials that won’t change despite manual edits.
Material Types & Origins
Section titled “Material Types & Origins”Preflight identifies the “technology” behind your materials using Origin Badges:
- [core] UsdPreviewSurface: The standard, portable USD shading model. Works everywhere.
- [materialX] MaterialX: Node-based shading. Preflight detects MaterialX graphs and surfaces the exposed “inputs” for quick editing.
- [realitykit] RealityKit: Proprietary shading data specific to Reality Composer Pro.
Interactive Texture Slots
Section titled “Interactive Texture Slots”The property grid provides a “live” view of your shader inputs.
- Non-Destructive Swapping: You can click any texture slot (Base Color, Normal, etc.) and select a new image. Preflight creates a
fix:setTexturesession layer, allowing you to see the result instantly without modifying the original asset. - Resolution Tracking: Preflight doesn’t just show the path; it resolves the image dimensions and previews the texture, even if it’s packed inside a
.usdzor a remote reference.