Attribute Changes

To ensure that the UsdIn node type supports writing out all the attributes required by all the renderers loaded in your Katana session, we have adjusted the USD primitive-reading logic to write attributes based on all renderers that are available in the Katana session. Previously, only RenderMan-specific attributes were written, which would require other renderer vendors to understand the RenderMan attributes, and then convert them to their own. We aim to improve this by writing the USD primitive attributes based on the attribute name in the USD file, to keep it consistent with the USD API, and also write out attributes to renderers’ expected hierarchies, if the UsdIn code knows about that renderer. Currently this is only in place for RenderMan. In the future we aim to move this logic out of the UsdIn code and into a plug-in-style system. For now, we suggest writing Lua OpScript nodes or C++ Ops which read our generic attributes, and convert the values to renderer-specific attribute hierarchies.

The following table shows the attributes we have moved to more generic locations.

Attribute Changes Table

Type

Original Name

Katana Name

Extra Info

Curves

prmanStatements.basis.u

geometry.basis

Changed from string attr to populate the correct int index based on the Katana curve attribute conventions

Curves

prmanStatements.basis.v

geometry.basis

Changed from string attr to populate the correct int index based on the Katana curve attribute conventions

Generic

prmanStatements.attributes.<attr name>

attributes.<attr name>

Any other generic attribute.

GeomGprim

prmanStatements.orientation

usd.orientation

left-handed or right-handed winding order.

GeomGprim

prmanStatements.sides

usd.doublesided

double-sided or not.

Light

material.prmanLightShader

material.usdLightShader

Currently set to Pxr<LightType> changed to UsdLux<LightType> e.g PxrDistantLight is now UsdLuxDistantLight.

Light

material.prmanLightParams.<attrs>

material.usdLightParams.<attrs>

Only for USD lights, not Ri lights, these are still only for RenderMan as default renderer.

Material

target

CONFIG(“DEFAULT_RENDERER”)

Materials’ target was always set to prman. We now set it to the DEFAULT_RENDERER unless they are an ‘Ri’-based material

GeomMesh

prmanStatements.subdivisionMesh.scheme

usd.subdivisionScheme

writes the exact usd attr value for the GetSubdivisionSchemeAttr method.