feat(skin): add skin system + Miku character skin

Skin System:
- PlayerSkin resource class (model_path, color_tint, etc.)
- SkinManager with default skins: Default, Red Team, Forest, Miku
- HumanoidModel.apply_skin() supports both GLB model replacement
  and procedural color tinting
- Procedural meshes auto-hide when GLB model is loaded

Miku Skin:
- 43-part procedural model generated in Blender (headless)
- Twin tails, headphones, thigh-high socks, idol outfit
- Teal/cyan color scheme with red accents
- Exported to assets/characters/skins/miku.glb
- Applied to player 1 in test level builder

Pipeline:
- Blender 5.0.1 + MCP addon installed
- Bridge script for socket-based Blender control
- docs/3D_ASSET_PIPELINE.md documents full workflow
This commit is contained in:
2026-06-22 13:53:17 -04:00
parent 671b36c20c
commit a55eaff279
6 changed files with 177 additions and 0 deletions
+8
View File
@@ -377,6 +377,14 @@ func _spawn_player(pid: int) -> CharacterBody3D:
humanoid.position = Vector3(0, -0.9, 0)
player.add_child(humanoid)
# Apply skin (Miku for player 1, default for others)
if pid == 1:
var miku_skin = PlayerSkin.new()
miku_skin.skin_name = "Miku"
miku_skin.model_path = "res://assets/characters/skins/miku.glb"
miku_skin.color_tint = Color(0.0, 0.75, 0.75)
humanoid.apply_skin(miku_skin)
# Movement State Machine
var sm := Node.new()
sm.name = "MovementStateMachine"