Using codelss schemas - examples?

Codeless schemas are cool. I made a custom prim which inherits from Xformable and adds some new fields which is very cool and opens up a lot of interesting avenues.

Does anyone have an interesting example where you’ve leveraged codeless schemas to do interesting things in your pipeline?

They seem more like formal ways of storing data that other process might use?

Would you use a codeless schema to add attributes to an existing prim type so a hydra scene index can use them? Or would that be done a different way?

Just trying to get my head around how they fit and what people use them for!

Thanks

We publish codeless schemas for just about every concept in RenderMan, making use of autoApply schemas heavily to (e.g.) extend UsdLux light types and UsdRender types when you’re in a RenderMan/hdPrman environment.

I think you could use them to trigger a (new) Hydra scene index behavior, but if you’re writing a Hydra plugin already, there’s not much extra burden to make a “full”/compiled schema with the API affordances, also?

The way I think about it is, codeless schemas provide scene structure (typenames) and fallback values for properties in a lightweight way that are useful to users and GUI’s. They’re especially appropriate if the code consumers are able to consume the data in a generic way, i.e. don’t need to know much about particular property names because either a) they are something like shader properties or primvars that just get passed on; b) correspond to native names known by the importing/exporting applications… though I bet there are other great uses also!

@spiff thanks for the explaination - that makes a lot of sense!

We use codeless schemas for defining new prim types for things like procedurals and simulations. We have a node in Nuke that will generate a UI from a schema so this gives an easy way to extend the system for us - just define a codeless schema and use the node to create or edit objects that conform to the schema. The same node can be used for existing schemas, so although we don’t have a custom node for creating, say, UsdPhysicsPrismaticJoint, the general-purpose node can create one using the schema for it.