mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-12 17:23:44 +00:00
feat: replace ship and ball placeholder meshes with Blender-modeled assets
Ship gets a greebled hull, tapered nose, swept canopy, twin engine nacelles, and tail fin (built via the vendored Blender MCP, generator committed at tools/blender/gen_ship.py) in place of the 5 flat primitives. The ball is fully remodeled as a smooth round sphere with a crossed emissive accent pattern (gen_ball.py), replacing the old flat-shaded gold_ball rather than just tweaking its material. Node names (Nose/TailFin) are preserved for Ship._apply_team_color(), and the RigidBody3D/CollisionShape3D physics on both ship.tscn and ball.tscn are untouched so RL-trained bots and flight feel stay valid. Each part's mesh is extracted to a standalone .res (tools/blender/extract_meshes.gd) rather than referenced via glb::ArrayMesh_xxx sub-paths, which don't reliably resolve across scene files and were silently rendering both models invisible.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://27u3tdc5yqnl"]
|
||||
|
||||
[ext_resource type="ArrayMesh" uid="uid://ucw1lyo43yi4" path="res://assets/models/gold_ball.res" id="1_ct1s3"]
|
||||
[ext_resource type="ArrayMesh" path="res://assets/models/ball.res" id="1_ball"]
|
||||
[ext_resource type="Script" path="res://scripts/ball.gd" id="2_ball"]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_c5p07"]
|
||||
@@ -24,5 +24,5 @@ metadata/_edit_group_ = true
|
||||
shape = SubResource("SphereShape3D_c5p07")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 2.08165e-12, 2.08165e-12, 2.08165e-12)
|
||||
mesh = ExtResource("1_ct1s3")
|
||||
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
|
||||
mesh = ExtResource("1_ball")
|
||||
|
||||
+21
-58
@@ -1,58 +1,17 @@
|
||||
[gd_scene load_steps=13 format=3 uid="uid://p07epxnh8wwp"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dyq1n7q1bqjps" path="res://scripts/ship.gd" id="1_efag7"]
|
||||
[ext_resource type="ArrayMesh" path="res://assets/models/ship_hull.res" id="2_hull"]
|
||||
[ext_resource type="ArrayMesh" path="res://assets/models/ship_nose.res" id="3_nose"]
|
||||
[ext_resource type="ArrayMesh" path="res://assets/models/ship_canopy.res" id="4_canopy"]
|
||||
[ext_resource type="ArrayMesh" path="res://assets/models/ship_tailfin.res" id="5_talfin"]
|
||||
[ext_resource type="ArrayMesh" path="res://assets/models/ship_engine_l.res" id="6_enginel"]
|
||||
[ext_resource type="ArrayMesh" path="res://assets/models/ship_engine_r.res" id="7_enginer"]
|
||||
|
||||
[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_ship"]
|
||||
friction = 0.1
|
||||
bounce = 0.15
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hull"]
|
||||
albedo_color = Color(0.35, 0.37, 0.42, 1)
|
||||
metallic = 0.6
|
||||
roughness = 0.4
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_accent"]
|
||||
albedo_color = Color(0.25, 0.55, 1, 1)
|
||||
metallic = 0.3
|
||||
roughness = 0.5
|
||||
emission_enabled = true
|
||||
emission = Color(0.25, 0.55, 1, 1)
|
||||
emission_energy_multiplier = 0.35
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_canopy"]
|
||||
albedo_color = Color(0.15, 0.85, 1, 1)
|
||||
metallic = 0.8
|
||||
roughness = 0.1
|
||||
emission_enabled = true
|
||||
emission = Color(0.15, 0.85, 1, 1)
|
||||
emission_energy_multiplier = 0.5
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_engine"]
|
||||
albedo_color = Color(1, 0.55, 0.15, 1)
|
||||
emission_enabled = true
|
||||
emission = Color(1, 0.55, 0.15, 1)
|
||||
emission_energy_multiplier = 2.0
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_hull"]
|
||||
material = SubResource("StandardMaterial3D_hull")
|
||||
size = Vector3(1, 0.75, 2.7)
|
||||
|
||||
[sub_resource type="PrismMesh" id="PrismMesh_nose"]
|
||||
material = SubResource("StandardMaterial3D_accent")
|
||||
size = Vector3(1, 1.4, 0.75)
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_canopy"]
|
||||
material = SubResource("StandardMaterial3D_canopy")
|
||||
size = Vector3(0.55, 0.28, 0.8)
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_fin"]
|
||||
material = SubResource("StandardMaterial3D_accent")
|
||||
size = Vector3(0.1, 0.5, 0.8)
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_engine"]
|
||||
material = SubResource("StandardMaterial3D_engine")
|
||||
size = Vector3(0.7, 0.5, 0.25)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_dsjou"]
|
||||
size = Vector3(1, 1, 4)
|
||||
|
||||
@@ -63,24 +22,28 @@ inertia = Vector3(1, 1, 1)
|
||||
script = ExtResource("1_efag7")
|
||||
|
||||
[node name="Hull" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.125, 0.35)
|
||||
mesh = SubResource("BoxMesh_hull")
|
||||
transform = Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0)
|
||||
mesh = ExtResource("2_hull")
|
||||
|
||||
[node name="Nose" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0, -0.125, -1.3)
|
||||
mesh = SubResource("PrismMesh_nose")
|
||||
transform = Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0)
|
||||
mesh = ExtResource("3_nose")
|
||||
|
||||
[node name="Canopy" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.36, -0.5)
|
||||
mesh = SubResource("BoxMesh_canopy")
|
||||
transform = Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0.31, -0.55)
|
||||
mesh = ExtResource("4_canopy")
|
||||
|
||||
[node name="TailFin" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.25, 1.25)
|
||||
mesh = SubResource("BoxMesh_fin")
|
||||
transform = Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0.24, 0.72)
|
||||
mesh = ExtResource("5_talfin")
|
||||
|
||||
[node name="EngineGlow" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.125, 1.85)
|
||||
mesh = SubResource("BoxMesh_engine")
|
||||
[node name="EngineGlowL" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, -1, -0.42, -0.05, 0.95)
|
||||
mesh = ExtResource("6_enginel")
|
||||
|
||||
[node name="EngineGlowR" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, -1, 0.42, -0.05, 0.95)
|
||||
mesh = ExtResource("7_enginer")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("BoxShape3D_dsjou")
|
||||
|
||||
Reference in New Issue
Block a user