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>
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
[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)
|
||||
Reference in New Issue
Block a user