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:
@@ -0,0 +1,52 @@
|
||||
# 3D Asset Pipeline for Papaya-Shooter
|
||||
|
||||
## Blender Setup
|
||||
- Blender 5.0.1 installed system-wide
|
||||
- Blender MCP addon at ~/.config/blender/5.0/scripts/addons/blender_mcp/
|
||||
- Bridge: ~/blender-mcp/blender_bridge.py (socket port 9876)
|
||||
- Start: xvfb-run -a blender --python ~/blender-mcp/blender_server.py &
|
||||
|
||||
## Export Workflow
|
||||
1. Write Blender Python script (generate model, rig, animate)
|
||||
2. Run: blender --background --python script.py
|
||||
3. Export as .glb to assets/ subdirectory
|
||||
4. Godot auto-imports on editor open
|
||||
|
||||
## Directory Structure
|
||||
- assets/characters/skins/ — player skin models
|
||||
- assets/characters/animations/ — animation clips
|
||||
- assets/weapons/models/ — weapon meshes
|
||||
- assets/weapons/skins/ — weapon skin textures
|
||||
- assets/props/ — level props
|
||||
|
||||
## Character System
|
||||
- HumanoidModel: characters/humanoid_model.gd
|
||||
- Procedural rig: torso, head, 4 arms, 4 legs with pivot nodes
|
||||
- States: idle, run, crouch, slide, air, wall_run, wall_cling, grapple, dash, death
|
||||
- Color: @export var color (StandardMaterial3D)
|
||||
- shadows_only for local player (don't see own model)
|
||||
- Weapon attach: set_weapon(script_path) → root_pivot child
|
||||
|
||||
## Loadout System
|
||||
- LoadoutManager: globals/loadout_manager.gd (autoload)
|
||||
- 5 slots, each: primary_1, primary_2, special, melee
|
||||
- Save: user://loadouts.json
|
||||
|
||||
## Weapon System
|
||||
- WeaponManager: weapons/weapon_manager.gd
|
||||
- 1st person: SubViewport + vm_camera (layer 20)
|
||||
- 3rd person: HumanoidModel.set_weapon()
|
||||
|
||||
## Skin System (NEW)
|
||||
- Store skin metadata in loadout or player settings
|
||||
- Each skin: display_name, model_path, texture_path, color_tint
|
||||
- Apply by replacing HumanoidModel mesh nodes or swapping material
|
||||
- For full model replacement: load GLB scene, reparent to player
|
||||
|
||||
## Godot 4.2.1 Compatibility
|
||||
- absf() → abs()
|
||||
- fog_sky_affinity → remove
|
||||
- is not Type → not (x is Type)
|
||||
- lerpf → lerp
|
||||
- := from untyped arrays → explicit type
|
||||
- preload() on parse-error scripts → load()
|
||||
Reference in New Issue
Block a user