fix(client): address PR #95 review — 8 items

SLOT_TO_BONE expanded to 12 slots (earring_l/r, necklace, wrist_l/r).
_clear() outline teardown ordering fixed. toon_masked.gdshader: removed
cull_disabled, added ALPHA output. _attach_to_bone() returns node instead
of bool. skin_tone clamped in from_dict(). D-160 segment count 15→17.
Blender scripts: docstrings + __main__ guards. Reload test tightened.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-20 07:59:23 +01:00
co-authored by Claude Opus 4.6
parent f34e6362c4
commit bcd5887b82
7 changed files with 82 additions and 33 deletions
+4
View File
@@ -16,6 +16,10 @@ if __name__ == "__main__":
sys.exit(1)
args = argv[argv.index("--") + 1:]
if len(args) < 1:
print("ERROR: Provide a GLB/GLTF path.")
sys.exit(1)
input_path = args[0]
bpy.ops.wm.read_factory_settings(use_empty=True)
+34 -7
View File
@@ -1,10 +1,37 @@
"""
blender_list_bones.py
Usage: tooling/blender --background --python tooling/blender_list_bones.py -- <input.glb>
Lists all bone names in a GLB/GLTF armature, sorted alphabetically.
Used to verify bone naming after the January 2026 Quaternius naming update.
"""
import sys
import bpy
bpy.ops.wm.read_factory_settings(use_empty=True)
bpy.ops.import_scene.gltf(filepath=sys.argv[sys.argv.index("--") + 1])
for obj in bpy.context.scene.objects:
if obj.type == 'ARMATURE':
for b in sorted(obj.data.bones, key=lambda x: x.name):
print("BONE: " + b.name)
break
if __name__ == "__main__":
argv = sys.argv
if "--" not in argv:
print("Usage: tooling/blender --background --python tooling/blender_list_bones.py -- <input.glb>")
sys.exit(1)
args = argv[argv.index("--") + 1:]
if len(args) < 1:
print("ERROR: Provide a GLB/GLTF path.")
sys.exit(1)
input_path = args[0]
bpy.ops.wm.read_factory_settings(use_empty=True)
bpy.ops.import_scene.gltf(filepath=input_path)
for obj in bpy.context.scene.objects:
if obj.type == 'ARMATURE':
print(f"ARMATURE: {obj.name} — {len(obj.data.bones)} bones")
for b in sorted(obj.data.bones, key=lambda x: x.name):
print("BONE: " + b.name)
break
else:
print("ERROR: No armature found in the imported file.")
sys.exit(1)