UsdPreviewSurface#

Note

In order to be compliant with Pixar’s UsdPreviewSurface Specification, we have refactored the native Omniverse representation. Workflows can now include a multi-node approach to define a surface. We now support the relevant nodes from the specification.

Overview#

The UsdPreviewSurface shading model aims to provide a simple and intuitive set of parameters for defining a surface appearance. It is part of the larger USD ecosystem and provides a standard way to describe surface appearances in USD files. It facilitates interoperability and asset exchange between different software tools and rendering engines, making it easier to share and collaborate on 3D scenes and assets, and as such does not require MDL.

The USD Preview Surface shading model supports various features listed below. These parameters can be defined and adjusted within a USD file, allowing for consistent material representation across different applications and renderers that support USD.

Parameters

Parameters

Description

diffuseColor

The color of the material

emissiveColor

The emissive color of the material

useSpecularWorkflow

Uses Specular workflow instead of Physical workflow

specularColor

Tint color for specular reflections

metallic

A range from 0-1 describing whether the surface is Dielectric or Conductive

0 is Dielectric (non metal)


1 is Conductive (metallic)

roughness

The amount of reflectivity a surface has. Range is 0-1

0 = perfectly reflective surface


1 = no reflectivity

clearcoat

Adjusts how “thick” the clearcoat is.

clearcoatRoughness

The amount of reflectivity a surface has. Range is 0-1

0 = perfectly reflective surface


1 = no reflectivity

opacity

The opacity of the surface in a range from 0-1

0 = No Opacity or “See Through”


1 = Fully Opaque

opacityThreshold

The opacity threshold is a clamp that cuts opacity to 0 if opacity is below the threshold amount

ior

Incidence of Refraction controls how much the light is “bent” when passing through a surface

normal

Sets the normal of the surface

displacement

Shifts the rendered surface by the displacement amount

occlusion

Artificially adds shading to the surface

UsdPreviewSurface Nodes#

The material graph now allows you to author a shading graph composed of multiple nodes to represent a UsdPreviewSurface. You will need supply a simple graph for compliance with USD standards that must include a UsdPrimvarReader_float2(1) set to “st” to look up UV coordinates, that plugs into the “st” port on a UsdUVTexture(2) node which then plugs into the corresponding texture port on the UsdPreviewSurface(3) node per the following example.

Note

Older scenes containing UsdPreviewSurfaces may not display correctly. If this is the case then you will need to add a UsdPrimvar_float2(1) and UsdUVTexture(2).


UsdPreviewSurface Graph

Nodes

Node

Description

UsdPreviewSurface

Base Definition of UsdPreviewSurface

UsdUVTexture

Node that can be used to read UV textures, including tiled textures such as Mari UDIM’s

UsdTransform2d

Node that takes a 2d input and applies an affine transformation to it

UsdPrimvarReader_float

Node that provides the ability for shading networks to consume surface-varying data defined on geometry of type float

UsdPrimvarReader_float2

Node that provides the ability for shading networks to consume surface-varying data defined on geometry of type float 2

UsdPrimvarReader_float3

Node that provides the ability for shading networks to consume surface-varying data defined on geometry of type float 3

UsdPrimvarReader_float4

Node that provides the ability for shading networks to consume surface-varying data defined on geometry of type float 4

UsdPrimvarReader_int

Node that provides the ability for shading networks to consume surface-varying data defined on geometry of type integer

UsdPrimvarReader_normal

Node that provides the ability for shading networks to consume surface-varying data defined on geometry of vector type normal

UsdPrimvarReader_point

Node that provides the ability for shading networks to consume surface-varying data defined on geometry of type point

UsdPrimvarReader_vector

Node that provides the ability for shading networks to consume surface-varying data defined on geometry of type vector

Note

Unsupported Nodes The following nodes are provided as null objects until they are fully supported.

  • UsdPrimvarReader_string

  • UsdPrimvarReader_matrix