Known Issues and Limitations#
The Fabric Scene Delegate is under active development. This page documents known issues and limitations that affect most releases up to Kit 109. Many of these issues are being actively worked on and will be resolved in future releases.
Fabric Transform Hierarchy Update#
These issues relate to the Fabric hierarchy system that computes world-space transforms and bounding boxes.
Time-Sampled Transform Chains#
Issue: When time-sampled animations are present, changing multiple transforms along a chain of ancestor prims may lead to incorrect world-space transforms.
Workaround: Enable the /app/usdrt/population/utils/evaluateXformsTimeSamples setting to resolve this issue. Note that this comes at the expense of decreased performance, as all time-sampled transforms will be pre-evaluated and stored in Fabric.
Example scenario: If you have a hierarchy like /World/Arm/Elbow/Hand where Hand has time-sampled transforms, simultaneously modifying the transform of Elbow from code may result in having an incorrect world transform in Elbow until the next frame.
Root Prim Extent Updates#
Issue: The extent (bounding box) of the root prim may not be updated correctly in Fabric when the scene changes.
Impact: This primarily affects applications that rely on the root prim’s extent read from Fabric for scene-wide bounding box queries or camera framing operations.
Scene Delegate Features#
These issues relate to the Scene Delegate’s interaction with Hydra and the rendering system.
Instance Transform Issues#
Issue: Instance transforms may be incorrect in certain scenarios, particularly when using scene graph instancing with non-standard transform decomposition.
Workaround: Try enabling the /app/usdrt/scene_delegate/useMatrixForInstanceProxyTransforms setting. This setting uses matrix representation for instance proxy transforms instead of decomposed (translation, rotation, scale) representation, which can handle arbitrary affine transforms including shearing.
Note: Starting with Kit 109.0, this setting is enabled by default. If you’re experiencing instance transform issues on earlier Kit versions, you should enable this setting manually.
MDL Workflow Compatibility#
Issue: MDL distill and bake workflows may not work properly with the Fabric Scene Delegate.
Impact: Users relying on these workflows may need to disable Fabric Scene Delegate for specific operations.
NeurayLib Material Merging Incompatibility#
Issue: NeurayLib materials are incompatible with the material merging feature of the Fabric Scene Delegate.
Workaround: If you’re using NeurayLib materials and experiencing rendering issues, disable material merging by setting /app/usdrt/population/utils/mergeMaterials to false.
Note: From Kit 108, material merging is disabled by default, so this issue only affects users who have explicitly enabled material merging for optimization purposes.
Point Instancer Prototype Location#
Issue: Point instancers may not work properly when prototypes are not descendants of the point instancer prim.
Example: If you have a point instancer at /World/Particles that references prototypes at /Library/Prototypes/Sphere, the instances may not render correctly or may be missing.
Workaround: Structure your USD stage so that point instancer prototypes are children of the point instancer prim, or located within the same hierarchy branch — as recommended by USD.
Fabric-Only Change Tracking Limitations#
Issue: Fabric does not have full change tracking support for authoring changes (prim creation/deletion, attribute creation/deletion, etc.). As a result, some changes made directly to Fabric—without going through USD—may not be detected by the Fabric Scene Delegate.
Impact: If extension code or other systems create or delete prims or attributes directly in Fabric, these changes may not trigger the appropriate updates in the renderer. The rendered scene may become out of sync with the Fabric data.
Workaround: When possible, make authoring changes through USD rather than directly in Fabric. USD changes are properly tracked and synchronized via the USDRT Population plugin. For runtime/simulation data that needs to be created directly in Fabric, ensure proper Fabric change notifications are triggered, or work with existing prims and attributes rather than creating new ones.
Note: This limitation primarily affects authoring workflows. Runtime changes to existing attribute values are properly tracked and synchronized.
Performance Considerations#
Fast Diffing Limitations#
The fast diffing feature (enabled by default) significantly improves performance when synchronizing USD changes to Fabric, but may cause certain USD changes to be missed, such as changes to array data like mesh points, normals, or UVs.
Workaround: If you notice missing updates, try disabling fast diffing with /app/usdrt/population/utils/enableFastDiffing=false. Note that this will significantly impact performance during USD resync events such as toggling payloads, switching variants, or adding new layers.
Progressive Extent Updates#
Progressive extent updates are enabled by default to maintain interactive performance. However, this means extent (bounding box) updates are spread across multiple frames.
Workaround: If you need immediate extent updates (e.g., for precise camera framing), set /app/usdrt/hierarchy/progressiveExtentsUpdate to 0. Be aware this may significantly reduce performance in large scenes.