- Fix stale 21→18 segment count in architecture doc, script docstrings, and disk budget table (critical — both reviewers) - Add average_m/README.md noting role as clothing reference body - Add __main__ guards to diagnostic scripts - Preflight-check all source paths in blender_process_bodies.py - Document solid-white hair masks as v0.2 placeholder for multi-region - Add fallback size comment for head mask generation - Add bald_mask.png (1×1 black) for sidecar convention consistency - Document child non-uniform scale rationale (Y=0.72 vs XZ=0.75) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
26 lines
938 B
Python
26 lines
938 B
Python
"""
|
|
blender_inspect_vgroups.py
|
|
Usage: tooling/blender --background --python tooling/blender_inspect_vgroups.py -- <input.gltf>
|
|
|
|
Lists vertex groups in a GLTF full-body mesh. Used to verify bone name coverage
|
|
for the segmentation script.
|
|
"""
|
|
import sys
|
|
import bpy
|
|
|
|
if __name__ == "__main__":
|
|
argv = sys.argv
|
|
args = argv[argv.index("--") + 1:]
|
|
bpy.ops.wm.read_factory_settings(use_empty=True)
|
|
bpy.ops.import_scene.gltf(filepath=args[0])
|
|
for obj in bpy.context.scene.objects:
|
|
if obj.type == 'MESH' and obj.vertex_groups:
|
|
print(f"MESH: {obj.name} — {len(obj.vertex_groups)} vertex groups, {len(obj.data.vertices)} vertices")
|
|
for vg in sorted(obj.vertex_groups, key=lambda x: x.name):
|
|
print(f" VG: {vg.name}")
|
|
break
|
|
else:
|
|
print("No skinned mesh found.")
|
|
for obj in bpy.context.scene.objects:
|
|
print(f" {obj.name} ({obj.type})")
|