# UsdGeom attribute to Hydra SceneIndexPrim

**URL:** <https://forum.aousd.org/t/usdgeom-attribute-to-hydra-sceneindexprim/2894>\
**Category:** Hydra\
**Created:** [April 8, 2026, 5:19am UTC](https://forum.aousd.org/t/usdgeom-attribute-to-hydra-sceneindexprim/2894 "2026-04-08T05:19:58Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![donboie](https://avatars.discourse-cdn.com/v4/letter/d/ecb155/32.png) [@donboie](https://forum.aousd.org/u/donboie)\
**Post date:** [April 8, 2026, 5:19am UTC](https://forum.aousd.org/t/usdgeom-attribute-to-hydra-sceneindexprim/2894/1 "2026-04-08T05:19:58Z")

</div>

Hi All,

I’ve been working on Generative procedurals which consume meshes and generate woven or knitted cloth using the generative procedural API. The procedural references meshes & curves within the sceneIndex and generates _lovely_ knitted sweaters or _cool_ denim jackets. Often the geometry I’m processing requires a few custom attributes to be able to execute the procedural.

What is the preferred way of passing this kind of Mesh & Curve attribute data into SceneIndexPrims.

1. primvars (as standard adaptors copy this data into SceneIndexPrims)
2. APISchema + Associated adaptor
3. A FilteringSceneIndex (not sure of the correct base class) which is initialized using a stage and performs the UsdPrim attribute reads and merges this into SceneIndex (or the merge happens in another MergingSceneIndex)

Currently I’m using (1) but I’m increasing coming up to limitations of this approach, but it does seem like excessive boilerplate is required in approaches (2) & (3) just to pass a few attributes into hydra. So much boilerplate, in fact that I think I might have gotten the wrong end of the stick.

(2) seems quite clean but I have to apply schemas to meshes & curves I want a few attributes to the available in the generative procedural

(3) This wouldn’t require any USDStage data changes but I’m unsure of how query which stage should be referenced & how to initialize the filter in a DCC host applications.

Thanks  
Don

---

<div class="post-metadata">

**Author:** ![robp\_sidefx](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.aousd.org/robp_sidefx/32/327_2.png) [@robp\_sidefx](https://forum.aousd.org/u/robp_sidefx)\
**Post date:** [April 8, 2026, 6:08am UTC](https://forum.aousd.org/t/usdgeom-attribute-to-hydra-sceneindexprim/2894/2 "2026-04-08T06:08:50Z")

</div>

FWIW, we use a combination of both #1 and #2 for the transport of custom data through Hydra. We’ve been favouring #2 (API Schema+SchemaAdapter) in general, but as we explore and dabble with HdGp we see the implied/suggested transport mechanism there is primvar-based.

---

<div class="post-metadata">

**Author:** ![donboie](https://avatars.discourse-cdn.com/v4/letter/d/ecb155/32.png) [@donboie](https://forum.aousd.org/u/donboie)\
**Post date:** [April 8, 2026, 11:45pm UTC](https://forum.aousd.org/t/usdgeom-attribute-to-hydra-sceneindexprim/2894/3 "2026-04-08T23:45:35Z")

</div>

Thanks for the info Rob.

> [@robp\_sidefx](#):
>
> dabble with HdGp we see the implied/suggested transport mechanism there is primvar-based.

Are you able to give me a few specifics of what you mean here?

---

<div class="post-metadata">

**Author:** ![AbsolutViktor](https://avatars.discourse-cdn.com/v4/letter/a/e9bcb4/32.png) [@AbsolutViktor](https://forum.aousd.org/u/AbsolutViktor)\
**Post date:** [April 9, 2026, 9:25am UTC](https://forum.aousd.org/t/usdgeom-attribute-to-hydra-sceneindexprim/2894/4 "2026-04-09T09:25:58Z")

</div>

I’d favor #2 as well, as it provides a nice interface for the attributes. The HdGenSchema script can be helpful to manage the boilerplate. The [HdSchemaDefs.py](https://github.com/PixarAnimationStudios/OpenUSD/blob/dev/pxr/usdImaging/usdImaging/hdSchemaDefs.py) files show how it can be used.

IMO, primvars are fine as well if the plugin doesn’t need the interface a schema provides

---

<div class="post-metadata">

**Author:** ![robp\_sidefx](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.aousd.org/robp_sidefx/32/327_2.png) [@robp\_sidefx](https://forum.aousd.org/u/robp_sidefx)\
**Post date:** [April 10, 2026, 8:14pm UTC](https://forum.aousd.org/t/usdgeom-attribute-to-hydra-sceneindexprim/2894/5 "2026-04-10T20:14:50Z")

</div>

> [@donboie](#):
>
> Are you able to give me a few specifics of what you mean here?

> <https://github.com/PixarAnimationStudios/OpenUSD/blob/dev/pxr%2FusdImaging%2FusdImagingGL%2Ftestenv%2FTestUsdImagingGLHdGpProcedurals.cpp#L678>

All the proc inputs (including relationships) are pulled from `primvars:`
