Files
demo-game/scenes/orientation_gizmo.tscn
skrueckenandCursor 54d42dade9 Add per-pod orientation gizmo to the API demo.
Shows live accel attitude with a front-view cylinder (flat / facing / steer) and a TOP marker that rotates with the mesh.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-26 13:41:07 +02:00

77 lines
2.3 KiB
Plaintext

[gd_scene load_steps=6 format=3]
[ext_resource type="Script" path="res://scripts/orientation_gizmo.gd" id="1_gizmo"]
[sub_resource type="CylinderMesh" id="CylinderMesh_body"]
top_radius = 0.35
bottom_radius = 0.35
height = 1.1
radial_segments = 24
[sub_resource type="StandardMaterial3D" id="Mat_body"]
albedo_color = Color(0.42, 0.48, 0.58, 1)
roughness = 0.55
[sub_resource type="CylinderMesh" id="CylinderMesh_cap"]
top_radius = 0.38
bottom_radius = 0.38
height = 0.08
radial_segments = 24
[sub_resource type="StandardMaterial3D" id="Mat_top"]
albedo_color = Color(1, 0.55, 0.12, 1)
roughness = 0.4
emission_enabled = true
emission = Color(0.85, 0.4, 0.05, 1)
emission_energy_multiplier = 0.35
[node name="OrientationGizmo" type="SubViewportContainer"]
custom_minimum_size = Vector2(220, 220)
stretch = true
script = ExtResource("1_gizmo")
[node name="SubViewport" type="SubViewport" parent="."]
own_world_3d = true
transparent_bg = true
handle_input_locally = false
size = Vector2i(220, 220)
render_target_update_mode = 4
[node name="Camera3D" type="Camera3D" parent="SubViewport"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 3.2)
projection = 1
size = 2.6
near = 0.05
far = 50.0
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="SubViewport"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 4)
light_energy = 1.2
shadow_enabled = false
[node name="FillLight" type="DirectionalLight3D" parent="SubViewport"]
transform = Transform3D(-0.866025, -0.353553, 0.353553, 0, 0.707107, 0.707107, -0.5, 0.612372, -0.612372, 0, 0, 0)
light_energy = 0.4
shadow_enabled = false
[node name="Pod" type="Node3D" parent="SubViewport"]
[node name="Body" type="MeshInstance3D" parent="SubViewport/Pod"]
mesh = SubResource("CylinderMesh_body")
surface_material_override/0 = SubResource("Mat_body")
[node name="TopCap" type="MeshInstance3D" parent="SubViewport/Pod"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.59, 0)
mesh = SubResource("CylinderMesh_cap")
surface_material_override/0 = SubResource("Mat_top")
[node name="TopLabel" type="Label3D" parent="SubViewport/Pod"]
transform = Transform3D(1, 0, 0, 0, 0, -1, 0, 1, 0, 0, -0.66, 0)
pixel_size = 0.01
billboard = 0
text = "TOP"
font_size = 42
outline_size = 8
modulate = Color(1, 0.95, 0.85, 1)
outline_modulate = Color(0.05, 0.05, 0.08, 1)