Custom engine integration

We have a custom rendering pipeline with an ECS used for simulations and we are currently thinking about supporting USD with authoring, syncing etc (not only importing usd files). I read about Hydra and custom render delegates and I think this is what I want. My question is that the render delegates is syncing RPrims, BPrims and SPrims and the whole scene graph is flattened. But is there a way to also sync simple nodes ? From what I’ve seen( but I could be wrong as I’m only working on it for a few days), if a transform is changed for a parent node (not a RPrim), you’ll have a DirtyTransform flag on all RPrim children and then you can update the transform for the meshes. But what if I want to keep the hierarchy in my ECS ( a node = an entity) and not the flattened representation ? Should I use a scene delegate ? Inheriting from UsdImagingDelegate ?

Thanks for the help and I’ll be available if I was not clear.

Hi Baptiste,

Hydra is in a transition period at the moment. Our HdSceneDelegate API doesn’t support access to unflattened data. We’re replacing HdSceneDelegate with a new API called HdSceneIndex (colloquially called Hydra 2.0 sometimes), and also replacing UsdImagingDelegate with UsdImagingStageSceneIndex, and in this new architecture we flatten by default but it’s possible to configure the software to give your renderer unflattened data. UsdImagingStageSceneIndex is still under development, but it’s closing in on full feature coverage and folks are already building software based on it, so that may be worth a try.

In Storm we prefer to have flattened data, but the potential for a root level transform to invalidate a lot of individual matrices is definitely an issue and one we’re hoping to revisit this year.

Hope this helps,

Thank you for your answer.
Is there any examples / tutorials / code samples on how to use HdSceneIndex / UsdImagingStageSceneIndex maybe ?

Hi Baptiste,

Not exactly a tutorial but you can have a look at maya hydra where we use extensively HdSceneIndex and USDImagingStageSceneIndex

Our open source repo :

Scene indices related code can be found in maya-hydra/lib/flowViewport/sceneIndex at dev · Autodesk/maya-hydra · GitHub
and in maya-hydra/lib/mayaHydra/hydraExtensions/sceneIndex at dev · Autodesk/maya-hydra · GitHub

There is a PR using UsdImagingStageSceneIndex which is still under code review in

You can also find an example using UsdImagingStageSceneIndex with different usd versions in

This is the “old” code we are converting into the PR
Hope this helps.

David Lanier

From my understanding, UsdImagingStageSceneIndex is the way to populate the Hydra scene. Is this new architecture linked to a new renderdelegate ? How could this new architecture give my renderer unflattened data if I still use the HdRenderDelegate (I won’t have API calls that tell me a XForm has changed right ?). Is a new render delegate under development ?