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