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.
|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.|