logical-geometry-grouping#

Code

HI.008

Validator

Manual

Compatibility

openusd

Tags

Summary#

Geometry should be grouped in a way that is logical for the object’s structure.

Description#

Assets should organize their geometry hierarchically under Xform prims that reflect the logical structure of the object. Parts that should move together shall be grouped under a common parent Xform. The hierarchy should facilitate navigation, selection, and manipulation while avoiding overly deep or unnecessarily complex structures.

Why is it required?#

  • Enables logical selection and manipulation of asset components

  • Facilitates navigation and understanding of asset structure

  • Supports animation and simulation workflows

  • Improves usability in content creation tools

  • Enables efficient batch operations on related components

Examples#

#usda 1.0

# Valid: Logical grouping of chair components
def Xform "Chair"
{
    def Xform "Seat"
    {
        def Mesh "SeatSurface" {
            # Seat geometry
        }
        def Mesh "SeatCushion" {
            # Cushion geometry
        }
    
        def Xform "Backrest"
        {
            def Mesh "BackrestFrame" {
                # Backrest frame geometry
            }
            def Mesh "BackrestCushion" {
                # Backrest cushion geometry
            }
        }
    
    }
    
    def Xform "Legs"
    {
        def Mesh "FrontLeftLeg" {
            # Leg geometry
        }
        def Mesh "FrontRightLeg" {
            # Leg geometry
        }
        def Mesh "BackLeftLeg" {
            # Leg geometry
        }
        def Mesh "BackRightLeg" {
            # Leg geometry
        }
    }
}

# Invalid: Poor grouping with unnecessary complexity
def Xform "Chair"
{
    def Xform "Parts"
    {
        def Xform "Group1"
        {
            def Xform "SubGroup"
            {
                def Mesh "SeatSurface" {
                    # Overly nested structure
                }
            }
        }
    }
    def Mesh "BackrestFrame" {
        # Inconsistent grouping - some parts grouped, others not
    }
}

How to comply#

  • Group geometry that moves together under common parent Xforms

  • Use meaningful names for grouping Xforms that reflect their purpose

  • Avoid overly deep hierarchies that complicate navigation

  • Maintain consistent grouping patterns within the asset

  • Consider the asset’s intended use case when designing the hierarchy

  • Group components that would be selected or manipulated together

For more information#