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.