feat(miku): proper rigged model from Sketchfab + Blender
Pipeline: 1. Downloaded TDA-style Miku model from Sketchfab (19MB FBX, 38K verts) 2. Imported to Blender, scaled to Godot humanoid proportions (1.8u tall) 3. Created clean 17-bone humanoid armature (Hips/Spine/Chest/Head/Arms/Legs) 4. Auto-weight-painted mesh to armature 5. Added Idle (breath bounce) and Run (cycle) animations 6. Exported as GLB with embedded animations (3MB) New: - SkinnedPlayerModel class: loads GLB with own armature+animations - Player 1 spawns with Miku model, others get procedural humanoid - Completely separate from procedural model system Files: - assets/characters/skins/miku_rigged_final.glb (3MB, 48K verts, 17 bones, 2 anims) - characters/skinned_player_model.gd - Removed old procedural GLB attempts
This commit is contained in:
+13
-19
@@ -369,27 +369,21 @@ func _spawn_player(pid: int) -> CharacterBody3D:
|
||||
if mover_script:
|
||||
player.set_script(mover_script)
|
||||
|
||||
# Humanoid Model for Player
|
||||
var humanoid = load("res://characters/humanoid_model.gd").new()
|
||||
humanoid.name = "HumanoidModel"
|
||||
humanoid.color = Color(0.2, 0.4, 0.8)
|
||||
humanoid.shadows_only = (pid == multiplayer.get_unique_id())
|
||||
humanoid.position = Vector3(0, -0.9, 0)
|
||||
player.add_child(humanoid)
|
||||
|
||||
# Apply skin (Miku for player 1, default for others)
|
||||
# Visual Model for Player
|
||||
# Player 1 gets the Miku skinned model, others get procedural humanoid
|
||||
if pid == 1:
|
||||
var miku_skin = PlayerSkin.new()
|
||||
miku_skin.skin_name = "Miku"
|
||||
miku_skin.model_path = "res://assets/characters/skins/miku_rigged.glb"
|
||||
miku_skin.color_tint = Color(0.0, 0.75, 0.75)
|
||||
humanoid.apply_skin(miku_skin)
|
||||
var skinned = load("res://characters/skinned_player_model.gd").new()
|
||||
skinned.name = "SkinnedModel"
|
||||
skinned.model_path = "res://assets/characters/skins/miku_rigged_final.glb"
|
||||
skinned.position = Vector3(0, -0.9, 0)
|
||||
player.add_child(skinned)
|
||||
else:
|
||||
# Default blue skin for other players
|
||||
var default_skin = PlayerSkin.new()
|
||||
default_skin.skin_name = "Default"
|
||||
default_skin.color_tint = Color(0.2, 0.4, 0.8)
|
||||
humanoid.apply_skin(default_skin)
|
||||
var humanoid = load("res://characters/humanoid_model.gd").new()
|
||||
humanoid.name = "HumanoidModel"
|
||||
humanoid.color = Color(0.2, 0.4, 0.8)
|
||||
humanoid.shadows_only = (pid == multiplayer.get_unique_id())
|
||||
humanoid.position = Vector3(0, -0.9, 0)
|
||||
player.add_child(humanoid)
|
||||
|
||||
# Movement State Machine
|
||||
var sm := Node.new()
|
||||
|
||||
Reference in New Issue
Block a user