Conversation
|
Great work! We actually explored very similar ideas a few years back, which we recently open-sourced here: OpenDCC. While we never turned it into a formal proposal due to concerns around maturity, our goals closely aligned with yours — particularly in trying to support args-style presentation metadata for complex authoring UIs. We similarly followed the .args format for hint names and structure, and tried to leverage existing standard metadata wherever possible, extending it with fields like displayWidget and displayWidgetHints in our custom property editor framework. One main difference is that, at the time, we viewed Sdr as shader-specific (before UsdLux adopted that pattern in usd-core), and we wanted UI hints to be applicable to all USD prims. Because of that, we chose separate metadata keys and avoided coupling with Sdr. Instead, we introduced a dedicated mechanism called UsdPrimFallbackProxy: This proxy was designed specifically for UI tooling and does extend the schema, but its scope goes beyond just metadata aggregation. It supports a variety of UI-driven behaviors, such as exposing fallback/default attributes, handling conditional visibility via logic or render-specific APIs, and pulling from multiple metadata sources including Sdr where applicable. Looking forward to seeing how this proposal evolves — it’s great to see this area getting formal attention! |
|
Thanks @agb63 ! Here's summary of the feedback from NV folks.
|
Should this not be driven instead by the attribute's variability (i.e. Uniform vs Varying)? Also unsure why this would be applicable only to "number" widget types? If there are asset-specific reasons for wanting to restrict a Varying attribute to only authoring defaults (is that the desired behavior?) then I'd think the default for |
yes I think I agree-- I'll pass that on-- thanks @spiffmon ! |
JamesPedFoundry
left a comment
There was a problem hiding this comment.
Thank you very much for this proposal, we are very interested in this proposal.
I've attached a few comments as comments on lines (should allow for replies and ability to resolve them and close them up.
|
Responding to asluk above. My guess is most or all of this feedback came out of the more limited early proposal we circulated prior to posting the full proposal, so some of my responses below will reference stuff that wasn't available til this past week.
In the full proposal we have exactly this -- hints are grouped within a
We've discussed this internally as well -- there's an existing plugin metadata field
The various slider options I just carried forward from the Katana args format. I will try and confirm how they are expected to work there.
We hadn't planned on doing any validation on the USD side, except possibly adding a validator that checks the
Yeah this name could be clearer (it was also inherited from the args format). It's intended to be a dropdown list / combo box, not a small popup dialog. Maybe we should call it
The intention with
The full proposal added a widget option for this called
I'm not totally following this so I may be missing the mark here. The We have the
The full proposal has a notion of conditional visibility that gets at this.
We hadn't considered anything this complex for allowed attribute values, but it's an interesting idea. |
|
Thanks @agb63 ! I've passed your responses to the devs here. I suspect "combo" is a clearer name than "popup" . Cheers! |
@agb63 I discussed this internally-- a developer was thinking of using a series of checkboxes for e.g., allowing multiple RenderVars to be selected for a given RenderProduct, or for exposing individual X, Y, Z-axis options that can be multiply enabled for setting up xformOps. I suggested to keep things simpler for now, as those kinds of use cases don't exactly map directly to the allowed values for a given property, and they agreed. (I also pointed out that check boxes wouldn't be able to author the required ordering of the RenderVars for a RenderProduct) |
* Removed reference to the locked hint, which will be addressed separately * Added more detail to the limits discussion section * Added arraySizeConstraint discussion section * Noted deferral of widgetType and widgetOptions implementation
|
I just updated the proposal with our latest thinking, for anyone who's following along: The big takeaway is the deferral on implementing The The updated rendered view is here. |
* Clarified that validation will be provided for limits and arraySizeConstraint * Removed the "Array Widgets" section as it is superceded by arraySizeConstraint * Moved the deferred widgetType/widgetOptions section to the bottom of the doc
|
It's been a while since I've caught up on this but I had a question as a follow up to the GitHub issue I logged a while ago which isn't quite covered by this, but feels related. I'll start with the latter, in the fact currently, and this is a problem scoped to SdrRegistry more so than schemas. There isn't yet a consistent catagorisation metadata for the whole shader itself. Such that it is currently difficult for DCC's to be able to create interfaces that only show, for example, one renderers set of shaders. This can even go a step further, with shading lists like MaterialX having a gigantic amount of shader identifiers, categorisation would be important to help users scope down to the shader they want to add. Ideally this comes from the plug-ins defining the shader. My proposal for this was detailed out in PixarAnimationStudios/OpenUSD#3575, where we describe the category argument for this purpose with an update to the documentation to specify this, and to specify the ability to separate with Although not attribute UI hint related, I still believe this falls into the nature of tidying up the hints for user interfaces to utilise. From my investigations this field tends to not be specified. Again, may well be a case for not holding up the other metadata, but would be nice to have utilization for display grouping shaders themselves, not just their properties. More than happy to spin off a separate proposal for some of those other thoughts from the GitHub issue linked if we feel it does expand the scope too far. Cheers, |
|
Hi @JamesPedFoundry - apologies we haven't provided any updates on the Sdr categorization work. We have been working at it and have a proposal we hope to share soon - a "final" round of internal review produced some suggestions we are doing some deeper diving into. Thanks for your patience - it is definitely a priority; I'm not sure if you were sugesting this, but we have not, thus far, considered applying the same set of categorizations we're talking about for Sdr nodes to prim schemas more generally. Given that schema domains are often so different from each other, we hadn't considered trying to categorize them all in a consistent way (beyond |
Thank you for the update! Just mentioned it here as the updates above and some internal work prompted it in my mind. In terms of schema grouping, it was something that crossed my mind whilst typing up the questions above. I am not certain of it's necessity and doesn't sit as high as shaders in priority for us. Schemas have the nicety of having inheritance and auto-applying behaviours we can query, which is something we do utilise to good effect already. However, it could still be nice to have such that we could separate out Physics based schemas from material or light related schemas, even ways for studios to categorise their own schemas from the defaults to make it clearer what is custom. Very likely a different idea for a different day, although alignment between schemas and the SdrRegistry is always a nicety! |
Ah, yeah ; I think I filed an internal sug awhile back that the UsdSchemaRegistry needs to retain and return to you the domain of each schema. Other things you mentioned are interesting also, though the domain seems like an uncontrovsial first step. |
Description of Proposal
Proposal for expanding presentation metadata (aka UI hints) by adding e.g., widget type, numeric limits, and conditional visibility/hiddenness.
Rendered view available here.See updated version here.
Contributing