139
16 days ago
Katana 8.0 now comes with complete roundtripping — to and from USD — within the application. Combined with Katana’s production-proven framework, this roundtrip provides a fully supported fallback mechanism that enables you to migrate your teams to USD — in your own time and without risk!
New Features
USD Native Exporting
Exporting from USD is now possible in Katana. The core of exporting from the native USD stage is built around two new native USD nodes: UsdLayerDefine and UsdLayerExport.
The UsdLayerDefine node acts as a start point for the exported layer. Stage changes between this node and the connected UsdLayerExport node are exported as a whole.
If a layer is specified in the asset parameter, it serves as the base from which the exported USD information is composed into with the goal of replacing that layer in a subsequent composition.
It is a requirement to be the only node connected to the first (left) input of the UsdLayerExport node as it also acts as a break point for where to start recording the USD changes.
If this node has no layer set on its asset parameter, the base layer is an empty layer.
The UsdLayerExport node is used to export a USD layer. It comes with a variety of different parameters including: a toggle to read in your previously exported layer, the ability to choose a desired file type, time related settings, export options, and several options for setting up layer metadata.
To load in the exported USD layer, enable the useExported checkbox. This is particularly helpful for performance improvements or comparing against an exported layer.
Multiple export methods are supported, such as 'Keep Composition Arcs', 'Flatten Sublayers' and 'Flatten All'.
Setting up the export process can be done by placing down a UsdLayerDefine node, a UsdLayerExport node and connecting the UsdLayerDefine's output port to both inputs on the UsdLayerExport node. Any additional stage manipulation that happens on the right branch forms the export layer and the left branch should remain empty.
Additionally, to collapse a selection of nodes into a new UsdLayerExportGroup node through the Node Graph tab's menu option Edit > Collapse Selected Nodes to UsdLayerExportGroup. This automatically connects the selection between UsdLayerDefine and UsdLayerExport nodes while their respective parameters are promoted to a newly created UsdLayerExportGroup node. This allows for node graph organization and access to export settings without having to dive into the node network. The UsdLayerExportGroup node can also be created by more traditional means.
Two new shelf scripts have also been added to quickly enable or disable the useExported toggle on all UsdLayerExport nodes in the project.
Finally, A new UsdLayerExporter Plug-in system has been added to provide access to the USD layer prior to exporting. This can be used for modification, validation, or performing any action on the layer in memory before exporting. More information is available in the Developer Guide under Usd Processing Engine > UsdLayerExport, with examples in: <KATANA_ROOT>/plugins and available through a new KATANA_RESOURCES subfolder, /UsdLayerExporterPlugins.
KatanaToUSD
Katana completes its USD roundtrip toolset with the addition of the KatanaToUsd node. Together with the UsdToKatana node, Katana workflows can be fully leveraged alongside USD. The KatanaToUsd node converts Geolib data to USD data without the need to bake out layers.
This node supports all types of material conversion, including those created and/or edited within the Material, NetworkMaterialCreate and NetworkMaterialEdit nodes. Additionally, lights are converted to its USD counterpart, as long as a matching shader identifier is found in the USD shader registry.
The KatanaToUsd node converts all mesh types to USD data, including subdivided meshes. FaceSets are converted to its USD equivalent; UsdGeomSubsets. Additionally, conversion of sampled information is also supported, such as multi-sampled and time-sampled attributes.
The KatanaToUsd node allows for generic conversion of Katana to USD attributes, to allow the transfer of custom attributes. Further information on this, as well as the attribute convention can be found in the developer guide, under <KATANA_ROOT>/docs/dev_guide/UsdProcessingEngine/KatanaToUsd/index.html.
The KatanaToUsd node provides several options including:
ignore: This is used to skip over the paths defined on this parameter, to be ignored during the conversion process over to USD data.
options > PrimitiveTypes > grousAsXforms: When enabled, group location types are defined as Xform Prims. When disabled, the locations are defined as Scope Prims, which do not contain transform attributes.
options > Camera: Both perspective and orthographic cameras can be converted. However, attributes not present in Geolib's convention for cameras, such as focal length are set to a default value when saved to info.usd. The default value for focal length is 50mm. Additionally, this page contains two options:
focalLengthUnitScate: Scale for the focal length. Only applies when a perspective camera is being converted. Set to 1 by default.
apertureUnitScale: Scale for aperture. Only applied when an orthographic camera is being converted. The USD standard unit for aperture is millimeters. Set to 1 by default.
options > Materials > onlyConvertIfMaterialExists: When enabled, the material assignments are not carried over to USD prims if the target material doesn't exist.
options > Lights > lightListLocation: This option defines the location path in which the light list attributes are set. If none is specified, no light list information is written.
Pattern Based Collections
Bringing the power of CEL to Katana's Native USD space with Pattern-Based Collections.
Pattern-Based Collections was introduced in USD 23.11 and is now fully integrated into Katana, with the addition of a new Pattern-Based Collection (PBC) widget and the UsdCollection node.
A new PBC widget has been added to the relevant USD nodes in Katana, such as the UsdActiveSet, the UsdVariantSet, the UsdRelationshipSet nodes and many more.
Similar to Katana’s pre-existing Collection Expression Language (CEL), USD’s Pattern-Based Collections (PBC) includes the following functionality:
Paths, Collections and Custom statements are used as inputs
When multiple statements are set, additional options are provided to determine the relationship between them, such as Union, Difference, Intersect, and Complements.
The new UsdCollection node has two modes, that are found in the action parameter’s dropdown:
action > create: This mode defines a USD collection. A primitive path and collection name is required. The expansionRule dropdown determines the expansion rule which is set to 'expandPrims' by default. Prim paths are added to the collection by using the membershipExpression, include and exclude widgets.
action > edit: This mode allows modifying incoming collections, by specifying its primPath parameter and selecting the collection within the collectionName parameter. After defining an incoming collection, inputs are automatically pre-populated with the paths set within the collection, and can then be further edited.
Finally, a new PBC Scratch Pad tab can be used in a similar way as the CEL Scratch Pad tab. When searchCollapsedLocations is enabled, the pattern is matched against collapsed primitives in the Scene Explorer. When disabled, the result only shows expanded prim paths.
Collections are now supported in the Scene Explorer tab for both Geolib and USD using a new Collections panel above the main scene tree which is controlled through a new Collections Working Set.
By default, the visibility of the Collections panel is hidden. The expansion of this panel can be toggled by clicking the Collections icon at the top of the Scene Explorer tab, located in between the Katana and Bookmark options; this Collections panel will remain empty until a Collection is added from the Collections working set.
A Collections working set was also added against Katana locations and USD prim paths to indicate where one or more collections are present. To view which collections are available, click the collection icon in the collections working set. Once selected, the collection is displayed in the Collections panel above. Any selected collection in the working set can also be saved as a bookmark.
Any right-click action made on either a Geolib or USD Collection within the Collections panel will display the same menu items previously seen on a Collection in the Scene Graph tab. Once a selection is made on any Collection in the Collections panel, will either highlight any location or prim contributing to a Collection in the scene tree, otherwise it will display them in a secondary window.
UI Improvements
In the Scene Explorer tab, the styling for the tree lines have been modified to indicate:
Class (abstract) prims will be shown as purple
Instance proxy prims will be shown via dotted lines
Additionally, font styling is used to indicate the following:
Over prims that are undefined will be indicated dimmed/darker. This is to indicate their presence in the USD document but not on the stage, until it is brought or referenced to a defined prim. Additionally, prims that have their visibility disabled, will also be dimmed.
Inactive prims are displayed as dimmed and strike-through, which is consistent with how pruned locations in Geolib are displayed.
USD Debugging
A new USD Text View tab
When selecting a node, the USD Text View tab displays the USD of either: that node's contribution layer (default) or the composed stage up to that node.
New Error schemas
An FnErrorAPI schema and an FnWarningAPI schema have been added to the list of available USD schemas.
Additional USD Nodes
Several new native-USD nodes are now available as part of Katana's USD offering.
UsdCamera
This node creates a prim of type Camera, with transformation parameters that are interactive by default.
UsdKindSet
Allows you to assign a kind to a primitive.
UsdLight
Consisting of a create and edit mode, this node dynamically queries lightTypes, allowing the user to set up a USD light directly from the SdrRegistry.
Switching to edit mode automatically populates incoming property values in the parameters and registers any changes made as an over. When in create mode, this option is turned off, with an option to specify a prim spec.
UsdMaterialAssign
A node that assigns materials to a primitive, either using Paths or PBC expressions. Its assignmentStrength and materialPurpose can also be set.
UsdScope
Allows the creation of a Scope primitive, with options for its primSpec as well as its primTypeHierarchy.
UsdStageDefine
Provides the ability to set AssetResolverContexts and population masks per stage.
This has to be set at the top of the Node Graph tab, hence this node has no input.
UsdTransformEdit
This node allows you to overwrite a prim's transform, similar to Katana's TransformEdit node set to replace global transform.
UsdXform
This node creates a transformable Xform primitive. Similar to the UsdScope node, its primSpec and primTypeHierarchy can be specified.
USD Metadata
The Attributes tab now supports USD prim and property metadata. This includes:
Prim metadata is displayed when the prim path is selected, and is displayed under the Metadata group within the Attributes tab. Additionally, the kind, assetInfo, active, and instanceable metadata fields are brought to the top of the list for easy access.
Property metadata is shown in the Attributes tab via a metadata "M" button next to each property.
USD Camera and Lights in the Viewer
A first version of USD native camera and light locators can now be seen in the Viewer tab. This provides a visual representation in the Viewer tab for the following prim types:
Camera
CylinderLight
DiskLight
DistantLight
DomeLight
PortalLight
RectLight
SphereLight
Additionally, prims which have the applied API schema LightAPI, MeshLightAPI and VolumeLightAPI will use a generic locator.
An example plug-in that demonstrates how custom USD viewer locators can be created is available in the installation directory at <katana_installation_path>/plugins/Src/ViewerPlugins/ExampleUsdSpatialAudioLocator.
Within the Look-Through Lights and Cameras menu dropdown in the Viewer tab, USD cameras can now be selected as the looked-through camera. By default, the dropdown shows cameras that are part of the model hierarchy. This is for performance reasons to save traversing the entire stage. To ensure cameras are part of the model hierarchy, they (as well as their ancestor prims) require their kind to be set to group, component, or assembly. Alternatively, an option is available to enable traversal of the entire stage, removing the need for the prims to be specified in the model hierarchy, this option is under the Look-Through Lights and Cameras menu under the Full USD Traversal checkbox option.
USD Interactive Transformation
We can now use Viewer transform manipulators against USD native prims, the nodes that support this feature are as follows:
UsdTransformSet
UsdTransformEdit
UsdXform
UsdLight
UsdCamera
A makeInteractive parameter was added to allow interactive manipulation in the Viewer tab, which is set to Yes by default. When active, viewer manipulators can be obtained through the UI in the Viewer tab, or the use of shortcuts to Translate 'W', Scale 'E' and Rotate 'R'.
Interactive transformations against USD prims are available exclusively when the mode parameter is set to Single Path. When set to multiple prim paths, interactive transformations through the Viewer are currently unavailable.
With these additions, the following changes were made to the UsdTransformSet node:
Transformations are now displayed in the Attributes tab in components, rather than Matrices (as it was in Katana 6.5 and Katana 7.0), to view them as individual translate, scale and rotate components.
When makeInteractive is set to No, the asMatrix parameter is available as an option, to set these attributes as a matrix.
When appendTransform is enabled, the transformations set on the UsdTransformSet node are added to pre-existing transformations set on the prim.
Performance
Katana's Node Graph traversal process has largely been ported over from Python to C++ for efficiency. Artists will notice improvements in interactivity when larger Node Graphs are being evaluated, most notably when changing a parameter within a node.
This update may introduce breaking changes, however, this only applies to custom actions created after Katana 6.5. These changes impact the following areas:
There are a number of changes to the CommonNodesAPI (Python) module, including the deprecation of Python implementations of nodes using onTraversalVisit()method
Customers who've written custom 3D nodes inheriting from Nodes3DAPI.Node3D without making use of NodeTypeBuilder will see a number of changes to Nodes3DAPI (Python)
The FnGeolibRuntime::Transaction (C++) , GeolibRuntimeTransaction (Python), class is now an interface, with the standard implementation named StandardTransaction (C++), GeolibRuntimeStandardTransaction (Python). It's important to note that any custom implementations of the GeolibRuntimeTransaction interface cannot be implemented in Python
Performance Tab
The Performance tab now has a Python Profiling section that provides a simple interface for collecting and displaying Python profiling data of the application. This can be accessed using the dropdown menu at the top of the Performance tab.
To begin a profile, click the Profile button to begin and then click the Profile button again to see the results. By default the profile results are sorted by the function with the most expensive cumulative time. This can be adjusted by selecting any of the available column headers to sort the results in ascending or descending order. These layout changes will not be saved and the sort order reverts back to the default state once the Performance tab is closed.
For more details on each function listed in their results, a right-click menu is available to review either Callers and Callees contributing to the selected function call. These will be shown in a popup window, with the option to swap results between Callers or Callees using the buttons on the right-hand side of the popup window.
VFX Reference Platform CY2024
As part of this release we have updated to VFX Reference Platform 2024. Some highlights of the specific versions are included below but for a complete list, please refer to the Developer Guide.
Outside of the VFX Reference Platform, we have also updated to USD 24.05, in addition to moving to PySide.
Feature Enhancements
Attributes Tab
USD prim properties in the Attributes tab are now grouped by namespace when present.
A help button is now available next to USD Relationships in the Attributes tab when the relationship features documentation metadata.
Type name of USD Attributes are now shown in the attribute tool tip in the Attributes tab.
Example Projects
New USD-based projects and extended workflows are now available in the Help > Example Projects tab. This includes:
A new-starter example, built with 3Delight, Arnold, Redshift and Renderman
A look development template using downloadable assets
A lighting template using downloadable multi-shot assets
A Native USD category has been added. These projects showcase USD-native workflows in Katana, from ways of composing USD into projects, manipulating data, through to exporting. Additionally, templates paired with downloadable assets are also available to provide examples of how USD-native workflows can be utilized in a look development and a multi-shot lighting template.
Node Graph
In the Node Graph tab, shake selected nodes with the mouse to extract them from any connected nodes.
Rendering
The version of 3Delight that is bundled with Katana has been upgraded from version 2.9.53 to version 2.9.122. For more information, refer to the 3Delight for Katana Changelog.
UI Improvements
Trailing ellipses have been removed from labels of some actions that do not require further user input, such as 'Collect and Select...'.
USD Native
A new method for utilizing a custom USD with Katana has been implemented called the FnUsdShim. The FnUsdShim performs the same actions as FnUsdAbstraction used to. This aligns with Nuke's system of adding external USD's.
A new ReadMe.md for building FnUsdShim against your custom USD has been included in <KATANA_ROOT>/plugins/Src/FnUsdShim/ . This also details how to enable it within Katana.
USD Nodes and Engines
In an interactive session, USD Native engines will write to the default time sample in order to boost performance when viewing static attributes over frame changes. An additional dynamic graph state variable usdnative:forceTimeSamples can force time samples.
Viewer
ID 526705 - In the Viewer, the Look-through menu UI would truncate the shown path on the right hand side, obscuring the name of the location if the path is a certain length. This is now truncated at the start of the path, allowing the location name to be seen at all times.
Bug Fixes
API/SDK Documentation
ID 511129 - In the Katana Developer Guide, a number of mishandled markup artifacts were present. These have now been removed.
Hydra Viewer
ID 578544 - Changing Display/Render delegate to AVP in the of the Viewer tab would cause logging information to be spammed in the terminal.
Katana To USD
ID 572476 - Alembic assets that had commas or semi colons in their location when loaded in Katana caused an issue on conversion to USD with the KatanaToUsd node. During conversion these characters are now converted to underscore.
ID 585187 - KatanaToUsd camera conversion options have been replaced with more options to specify the unit (either mm or cm) of the aperture and focal length of the camera. The default values of these options are now aligned with most Alembic camera units.
ID 587143 - When converting a scene with the KatanaToUsd node, children below the ignorePaths parameter were converted.
ID 587149 - The KatanaToUsd node caused large slowdowns due to incorrectly updating on every traversal.
ID 588253 - Screen window parameters on the CameraCreate node were not converted correctly into horizontal/vertical aperture under the info.abcCamera attributes.
ID 588761 - The KatanaToUsd node did not respect TimeOffset nodes which were the direct first input to the node when resolving the incoming Katana scene to convert.
Pattern-based Collections
ID 578154 - When adding paths to a PBC wizard and selecting/appending in SceneExplorer or displaying results, those actions were not happening.
ID 587138 - Errors were being logged to the terminal when pressing a keyboard modifier while a collections panel widget in the Parameter tab for a USD node with a PBC parameter.
Performance
ID 587045 - Clicking the 'Show Help' button (question mark icon) next to a parameter in the Parameters tab brings up a dialog window with some relevant help text. When a Scene Explorer tab was open and showing, this help text would take a long time to load (~5 seconds).
ID 589394 - When serializing large Op trees to bytes, performed by the KatanaToUsd node, the SerializeToBytes function was not performant. This caused considerable delay when interacting with the node graph.
Python
ID 576088 - When interacting with the UsdScenegraph in the Python tab, via NodesUsdAPI.UsdScenegraphManager.getActiveScenegraph(), UsdScenegraph.ensureLocationVisible() would expand all upstream locations except the USD pseudo-root location '/'.
ID 588676 - When interacting with the UsdScenegraph in the Python tab, via NodesUsdAPI.UsdScenegraphManager.getActiveScenegraph(), UsdScenegraph.openLocationsRecursive() would have no effect.
Qt6
ID 587782 - Katana would become unresponsive when setting Layouts > View Fullscreen option to active (Windows only).
USD Export
ID 564151 - The Stage retained by the Viewer could go out of sync when parameters were rapidly updated causing spurious expired Prim messages.
USD Lights
ID 585981 - When the user launched Katana with PrmanRender delegates to Create PxrLight, the input parameters of the PxrLight were not in alphabetical order.
USD Native
ID 556419 - When moving between nodes using the Viewer flag, USD Native nodes that had the same parameters were not re-evaluated correctly in the Viewer.
ID 585636 - USD native nodes and traversal were not affected by changing time in the TimeOffset node.
ID 588106 - An unused USD session layer has been removed from the global USD stage; no behavior change is expected. Performance of the global stage composition should have marginally improved.
USD Nodes and Engines
ID 587278 - Katana crashed when viewing the scene from a node where a UsdSkel primitive is also present.
ID 587349 - The Stage parameter policy did not support having multiple parameters with that policy on the same node well. We have re-designed the data source of this policy to minimise the calls to get the USD stage.
ID 588711 - UsdTransformEdit could undesirably remove xformOp
s from the XformOpOrder
if it did not edit them.
Viewer
ID 583978 - When the Validate Locations checkbox in the camera picker popup in the Viewer tab was checked and then unchecked, while the viewed node graph did not have any node contributing to the 3D scene, an exception was raised.
ID 585904 - When the viewed node graph did not include any contributing Geolib-based node, the camera picker in the Viewer tab could present a permanent spinning wheel wrongly indicating that the scene was still being cooked.
ID 587317 - When prim states in the Payload Working Set were updated, the viewer and other components could miss the change as a change event was not emitted.
Known Issues
Attributes Tab
ID 589027 - The Attributes tab doesn't currently update animated attributes or properties values from an incoming USD scene. Flushing caches resolves the issue.
Qt6
ID 585063 - When an unrecognised combination of mouse and keyboard shortcuts are used, an error is raised. This occurs within the Alpha 3 of Katana 8.0.
Rendering
ID 587519 - When opening a new scene while the Parameters tab's Included Outputs floating menu is still active for a render node, errors are printed to the terminal.
ID 587397 - When using the Monitor layer in the Viewer tab, the look-through camera is incorrectly shown as "Unknown Camera".
USD
ID 589499 - When connecting a UsdToKatana node either directly or indirectly to a UsdPythonWrite node, and with the pseudo root prim path "/" included in the primPath parameter, will crash Katana when viewed.
ID 588881 - The pivotTranslate parameter on the UsdTransformEdit node currently have no effect.
ID 587515 - The Centre of Interest manipulator is currently not supported in conjunction with USD prims.
ID 586965 - USD's stitch method for stitching layers doesn't retain blocked attributes.
ID 579376 -
Currently, Pattern-Based Collections does not support the use of the include and exclude widgets in conjunction with the membershipExpression widget on the UsdCollection node. This is due to a known issue with USD 24.05. NOTE: More info can be found on the USD thread: https://forum.aousd.org/t/problems-with-pattern-based-collections/1197/7. Katana's Pattern-Based Collection widget computes collection membership using membership expressions, therefore it does not currently handle relationship-mode collections correctly (statement true for USD 24.05).
Viewer
ID 580249 - Manipulating transformations for both Geolib and USD locations/prims at the same time (driven by their respective transformation nodes set to interactive) is currently not supported.
System Requirements
Officially Supported Operating Systems
Windows 10 64-bit
Windows 11
Linux 64-bit operating system (Rocky Linux 9)
Tested Workstation Hardware
The configurations listed below are those that Foundry have tested with Katana. Due to the constantly changing nature and wide variety of computer hardware available in the market, Foundry is unable to officially certify hardware. The list below can be used as a recommendation and does not guarantee that it meets your particular needs.
NVIDIA Quadro RTX 4000
NVIDIA Quadro RTX A4000
NVIDIA Quadro RTX A3000
NVIDIA Quadro P4000
Please download and install the latest graphics driver from the NVIDIA website.