Skip to content

Issue: Unskinned Bones Missing from USD Skeleton Export #21

@SttevanCJoga

Description

@SttevanCJoga

Unskinned Bones Missing from USD Skeleton Export

Summary

During the USD export process from 3ds Max, bones that are not skinned to any visual mesh are currently excluded from the exported UsdSkel skeleton. This leads to incomplete skeleton definitions, which can cause issues in downstream workflows that rely on the full bone hierarchy.

Problem

In many pipelines, bones may exist for rigging, constraints, or animation purposes—even if they are not directly skinned to geometry. The current export behavior omits these bones entirely, resulting in:

  • Broken or partial skeleton hierarchies
  • Loss data tied to unskinned bones (not attached to the skeleton but for reference to be use in another group - equivalent at sockets in Unreal)
  • Incompatibility with external tools expecting full rig definitions

Proposed Solution

Ensure that all bones, regardless of skinning status, are included in the Skeleton export. This would preserve the full rig structure and maintain fidelity with the original 3ds Max setup.

#usda 1.0
(
    defaultPrim = "Root"
)

def Xform "Root" {
    def SkelRoot "SkeletonRoot" {
        def Skeleton "Skeleton" {
            uniform token[] joints = ["Bone1"]
            uniform matrix4d[] bindTransforms = [((1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1)) ]
            uniform matrix4d[] restTransforms = [((1, 0, 0, 0),(0, 1, 0, 0),(0, 0, 1, 0), (0, 0, 0, 1)) ]
        }

        def Mesh "CubeMesh" {
            uniform token subdivisionScheme = "none"
            float3[] points = [(-1,-1,-1), (1,-1,-1), (1,1,-1), (-1,1,-1),
                               (-1,-1,1), (1,-1,1), (1,1,1), (-1,1,1)]
            int[] faceVertexCounts = [4, 4, 4, 4, 4, 4]
            int[] faceVertexIndices = [0,1,2,3, 4,5,6,7, 0,1,5,4,
                                       2,3,7,6, 0,3,7,4, 1,2,6,5]
            rel skel:skeleton = </Root/SkeletonRoot/Skeleton>
            # No jointIndices or jointWeights — bone is present but not skinned
        }
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions