Spaces:
Running on Zero
Running on Zero
File size: 1,375 Bytes
c1e2af3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | # SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
"""Factory helpers for building predefined skeleton variants."""
from pathlib import Path
from ardy.assets import SKELETONS_ROOT
from .definitions import (
CoreSkeleton27,
G1Skeleton34,
SOMASkeleton30,
SOMASkeleton77,
)
def build_skeleton(nbjoints: int, assets_folder: str | Path = SKELETONS_ROOT):
"""Instantiate a known skeleton class from its joint count.
Supported joint counts: 30 (SOMA compact), 34 (G1), 77 (SOMA full).
Args:
nbjoints: Number of joints expected in the skeleton representation.
assets_folder: Base skeleton-assets directory containing per-skeleton subfolders.
Returns:
A configured `SkeletonBase` subclass instance.
Raises:
ValueError: If `nbjoints` does not match a registered skeleton.
"""
assets_folder = Path(assets_folder)
if nbjoints == 34:
return G1Skeleton34(assets_folder / "g1skel34")
elif nbjoints == 30:
return SOMASkeleton30(assets_folder / "somaskel30")
elif nbjoints == 77:
return SOMASkeleton77(assets_folder / "somaskel77")
elif nbjoints == 27:
return CoreSkeleton27(assets_folder / "cskel27")
else:
raise ValueError("This skeleton is not recognized.")
|