Skip to content

Conversation

@roggiezhang-nv
Copy link
Contributor

Description of Change(s)

There's no way to identify a concretely define subgraph using traversal predicates because "IsAbstract" will match all ancestors.
This PR adds a HasAbstractSpecifier similar to HasDefiningSpecifier as a prim flag.

Example

class "abstract_root" {
    def "concrete_subgraph" {
         def "concrete_child" {
             def "concrete_grandchild" {
             }
         }
    }
}

/abstract_root/conrete_subgraph is defined but abstract because of its abstract ancestor. A HasAbstractSpecifier prim flag would allow the specification to enabling traversal of the decendants of concrete_subgraph using the predicate HasDefiningSpecifier && !HasAbstractSpecifier.

See discussion in https://forum.aousd.org/t/pointinstancer-prototype-scope-best-practices/2662.

Link to proposal (if applicable)

Fixes Issue(s)

Checklist

@roggiezhang-nv
Copy link
Contributor Author

@nvmkuruc for vis.

@jesschimein
Copy link
Collaborator

Filed as internal issue #USD-11482

(This is an automated message. See here for more information.)

/// or UsdPrimRange traversals. Usd prims each have a
/// \ref Usd_PrimSpecifiers "specifier" of "def", "over", or "class". The
/// default traversals skip over prims that are "pure overs" or classes. So
/// default traversals skip over prims that are "pure overs". So
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it was correct to leave or classes here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants