From 4dbba022af38a18b1dfa9ebdf897225985abcd17 Mon Sep 17 00:00:00 2001 From: Luca Date: Fri, 28 Feb 2025 09:42:00 +0100 Subject: [PATCH] added edge detection --- entities/plinth/plinth.gd | 18 +++++++++- entities/plinth/plinth.tscn | 1 - main.tscn | 36 ++++++++++++++++++- .../010_edge_detection/edge_detection.tscn | 4 +-- 4 files changed, 54 insertions(+), 5 deletions(-) diff --git a/entities/plinth/plinth.gd b/entities/plinth/plinth.gd index 6772ec3..2cce850 100644 --- a/entities/plinth/plinth.gd +++ b/entities/plinth/plinth.gd @@ -6,7 +6,7 @@ extends StaticBody3D var current_exhibit: Node = null -@export_group("Exhibit Settings") +## Scene file to display as the exhibit @export var exhibit: PackedScene: get: return exhibit @@ -14,6 +14,7 @@ var current_exhibit: Node = null exhibit = value set_exhibit() +## An optional prefix placed at the left side of the plinth @export var prefix: String: get: return prefix @@ -21,6 +22,7 @@ var current_exhibit: Node = null prefix = value set_label3d() +## An optional title placed on the center of the plinth @export var title: String: get: return title @@ -28,6 +30,9 @@ var current_exhibit: Node = null title = value set_label3d() +## Shortcut to the shader file of the exhibit +@export var shader_file: Shader + # Called when the node enters the scene tree for the first time. func _ready() -> void: set_label3d() @@ -42,9 +47,20 @@ func set_exhibit(): # remove the old exhibit if present if current_exhibit: remove_child(current_exhibit) + shader_file = null if exhibit != null: var scene_node = exhibit.instantiate() scene_node.position.y = 2 current_exhibit = scene_node + shader_file = get_first_shader_file(scene_node) add_child(scene_node) + +func get_first_shader_file(node): + var shader_file: Shader = null + + for i: Node in node.get_children(): + if i.mesh and i.mesh.material and i.mesh.material.shader != null: + shader_file = i.mesh.material.shader + + return shader_file diff --git a/entities/plinth/plinth.tscn b/entities/plinth/plinth.tscn index d333b97..073c552 100644 --- a/entities/plinth/plinth.tscn +++ b/entities/plinth/plinth.tscn @@ -9,7 +9,6 @@ size = Vector3(0.91626, 1.34576, 0.744141) [node name="Plinth" type="StaticBody3D"] script = ExtResource("1_c0mgr") -exhibit_position = Vector3(0, 0, 0) prefix = "000" title = "Title" diff --git a/main.tscn b/main.tscn index a349b70..aa388e1 100644 --- a/main.tscn +++ b/main.tscn @@ -1,27 +1,44 @@ -[gd_scene load_steps=28 format=3 uid="uid://xiyknqrsrmws"] +[gd_scene load_steps=45 format=3 uid="uid://xiyknqrsrmws"] [ext_resource type="PackedScene" uid="uid://dcv8xw0aeturp" path="res://entities/viewer/viewer.tscn" id="1_ann0f"] [ext_resource type="PackedScene" uid="uid://bn6vxev7totc8" path="res://entities/plinth/plinth.tscn" id="3_hl5po"] [ext_resource type="PackedScene" uid="uid://bm381ddsm6nv3" path="res://shaders/002_change_position/change_position.tscn" id="4_3haq7"] [ext_resource type="PackedScene" uid="uid://o76dbkg8478j" path="res://shaders/001_change_color/change_color.tscn" id="4_ssrg0"] [ext_resource type="PackedScene" uid="uid://b2nxlaom04udy" path="res://shaders/003_color_and_position/color_and_position.tscn" id="5_tv25h"] +[ext_resource type="Shader" path="res://shaders/000_playground/playground.gdshader" id="6_cymm7"] [ext_resource type="PackedScene" uid="uid://dcrg7uyqekgl7" path="res://shaders/004_adding_time/adding_time.tscn" id="6_sjdpt"] [ext_resource type="PackedScene" uid="uid://du06a3dwu2yy6" path="res://shaders/005_displacing_vertices/displacing_vertices.tscn" id="7_3a3yj"] [ext_resource type="PackedScene" uid="uid://5clduk3kph4t" path="res://shaders/006_variables/variables.tscn" id="8_pbwds"] +[ext_resource type="Shader" path="res://shaders/001_change_color/change_color.gdshader" id="8_qie20"] [ext_resource type="PackedScene" uid="uid://csh1kbx37l5el" path="res://shaders/007_reflections/reflections.tscn" id="9_vxv4a"] [ext_resource type="PackedScene" uid="uid://bjoxcmy6sy8lb" path="res://shaders/008_normals/normals.tscn" id="10_cqg4s"] +[ext_resource type="Shader" path="res://shaders/002_change_position/change_position.gdshader" id="10_yg0qk"] [ext_resource type="PackedScene" uid="uid://c0c1k04qmog56" path="res://shaders/000_playground/playground.tscn" id="11_u0jti"] +[ext_resource type="Shader" path="res://shaders/003_color_and_position/color_and_position.gdshader" id="12_ddch0"] [ext_resource type="FontFile" uid="uid://d268g1dy6fv6t" path="res://assets/fonts/FrederickatheGreat-Regular.ttf" id="12_mj3dk"] [ext_resource type="PackedScene" uid="uid://bcsb32y37da3f" path="res://shaders/009_fresnel/fresnel.tscn" id="12_mx7ux"] [ext_resource type="PackedScene" uid="uid://drgqrnj1otb25" path="res://shaders/010_edge_detection/edge_detection.tscn" id="13_3375a"] +[ext_resource type="Shader" path="res://shaders/004_adding_time/adding_time.gdshader" id="14_eefow"] [ext_resource type="Script" path="res://openxr.gd" id="15_a8hdi"] [ext_resource type="PackedScene" uid="uid://cjcfr8tqdhbro" path="res://shaders/011_circle/circle.tscn" id="15_dijaw"] [ext_resource type="PackedScene" uid="uid://2o8nbxn0x7of" path="res://shaders/012_polygon/polygon.tscn" id="16_j3uxc"] +[ext_resource type="Shader" path="res://shaders/005_displacing_vertices/displacing_vertices.gdshader" id="16_t704p"] +[ext_resource type="Shader" path="res://shaders/006_variables/variables.gdshader" id="18_d1g1f"] [ext_resource type="PackedScene" uid="uid://eh06d5qto3hu" path="res://shaders/014_depth/depth.tscn" id="18_pt3p3"] [ext_resource type="PackedScene" uid="uid://omdbnbi707f8" path="res://shaders/016_line/line.tscn" id="19_2f6ea"] +[ext_resource type="Shader" path="res://shaders/007_reflections/reflections.gdshader" id="20_bodvo"] [ext_resource type="PackedScene" uid="uid://dbevfrw75c0lf" path="res://shaders/017_blur/blur.tscn" id="20_qkyju"] [ext_resource type="PackedScene" uid="uid://dpt0jm6fe6iy" path="res://shaders/018_black_hole/BlackHole.tscn" id="21_8umyp"] [ext_resource type="PackedScene" uid="uid://83u6swv86t81" path="res://assets/models/own/monstree.glb" id="22_36auf"] +[ext_resource type="Shader" path="res://shaders/008_normals/normals.gdshader" id="22_b7g71"] +[ext_resource type="Shader" path="res://shaders/009_fresnel/fresnel.gdshader" id="25_u1eko"] +[ext_resource type="Shader" path="res://shaders/010_edge_detection/edge_detection.gdshader" id="27_d74j0"] +[ext_resource type="Shader" path="res://shaders/011_circle/circle.gdshader" id="28_4mfq0"] +[ext_resource type="Shader" path="res://shaders/012_polygon/polygon.gdshader" id="30_j18a4"] +[ext_resource type="Shader" path="res://shaders/014_depth/depth.gdshader" id="32_o3xri"] +[ext_resource type="Shader" path="res://shaders/016_line/line.gdshader" id="33_ggrs5"] +[ext_resource type="Shader" path="res://shaders/018_black_hole/BlackHole.gdshader" id="36_77egu"] +[ext_resource type="Shader" path="res://shaders/017_blur/blur.gdshader" id="36_mb0t6"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_37bgm"] sky_horizon_color = Color(0.64625, 0.65575, 0.67075, 1) @@ -89,53 +106,62 @@ tracker = &"right_hand" transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 0) exhibit = ExtResource("11_u0jti") title = "Playground" +shader_file = ExtResource("6_cymm7") [node name="001ChangeColor" parent="Examples" instance=ExtResource("3_hl5po")] exhibit = ExtResource("4_ssrg0") prefix = "001" title = "Change Color" +shader_file = ExtResource("8_qie20") [node name="002ChangePosition" parent="Examples" instance=ExtResource("3_hl5po")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 0) exhibit = ExtResource("4_3haq7") prefix = "002" title = "Change Position" +shader_file = ExtResource("10_yg0qk") [node name="003ColorAndPosition" parent="Examples" instance=ExtResource("3_hl5po")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 0) exhibit = ExtResource("5_tv25h") prefix = "003" title = "Color and Position" +shader_file = ExtResource("12_ddch0") [node name="004AddingTime" parent="Examples" instance=ExtResource("3_hl5po")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0) exhibit = ExtResource("6_sjdpt") prefix = "004" title = "Adding Time" +shader_file = ExtResource("14_eefow") [node name="005DisplacingVertices" parent="Examples" instance=ExtResource("3_hl5po")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 0) exhibit = ExtResource("7_3a3yj") prefix = "005" title = "Displacing Vertices" +shader_file = ExtResource("16_t704p") [node name="006Variables" parent="Examples" instance=ExtResource("3_hl5po")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0) exhibit = ExtResource("8_pbwds") prefix = "006" title = "Variables" +shader_file = ExtResource("18_d1g1f") [node name="007Reflections" parent="Examples" instance=ExtResource("3_hl5po")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 0) exhibit = ExtResource("9_vxv4a") prefix = "007" title = "Reflections" +shader_file = ExtResource("20_bodvo") [node name="008Normals" parent="Examples" instance=ExtResource("3_hl5po")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 0) exhibit = ExtResource("10_cqg4s") prefix = "008" title = "Normals" +shader_file = ExtResource("22_b7g71") [node name="EffectsLabel" type="Node3D" parent="Examples"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 1, 0) @@ -186,43 +212,51 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 0) exhibit = ExtResource("12_mx7ux") prefix = "009" title = "Fresnel" +shader_file = ExtResource("25_u1eko") [node name="010EdgeDetection" parent="Examples" instance=ExtResource("3_hl5po")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 0) exhibit = ExtResource("13_3375a") prefix = "010" title = "Edge Detection" +shader_file = ExtResource("27_d74j0") [node name="011Circle" parent="Examples" instance=ExtResource("3_hl5po")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, -4) exhibit = ExtResource("15_dijaw") prefix = "011" title = "Circle" +shader_file = ExtResource("28_4mfq0") [node name="012Polygon" parent="Examples" instance=ExtResource("3_hl5po")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, -4) exhibit = ExtResource("16_j3uxc") prefix = "012" title = "Polygon" +shader_file = ExtResource("30_j18a4") [node name="014Depth" parent="Examples" instance=ExtResource("3_hl5po")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 0) exhibit = ExtResource("18_pt3p3") prefix = "014" title = "Depth" +shader_file = ExtResource("32_o3xri") [node name="016Line" parent="Examples" instance=ExtResource("3_hl5po")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 0) exhibit = ExtResource("19_2f6ea") prefix = "016" title = "Line" +shader_file = ExtResource("33_ggrs5") [node name="017Blur" parent="Examples" instance=ExtResource("3_hl5po")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28, 0, 0) exhibit = ExtResource("20_qkyju") prefix = "017" title = "Blur" +shader_file = ExtResource("36_mb0t6") [node name="018BlackHole" parent="Examples" instance=ExtResource("3_hl5po")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 44.505, 0, -7.17165) exhibit = ExtResource("21_8umyp") +shader_file = ExtResource("36_77egu") diff --git a/shaders/010_edge_detection/edge_detection.tscn b/shaders/010_edge_detection/edge_detection.tscn index 6034b93..a6f765c 100644 --- a/shaders/010_edge_detection/edge_detection.tscn +++ b/shaders/010_edge_detection/edge_detection.tscn @@ -7,11 +7,12 @@ [sub_resource type="SphereMesh" id="SphereMesh_wnbfj"] material = SubResource("ShaderMaterial_vbj21") -[sub_resource type="ShaderMaterial" id="ShaderMaterial_855vq"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_vn7ob"] render_priority = 0 shader = ExtResource("1_34hnr") [sub_resource type="QuadMesh" id="QuadMesh_sbqxy"] +material = SubResource("ShaderMaterial_vn7ob") size = Vector2(1.6, 2) [node name="EdgeDetection" type="Node3D"] @@ -21,5 +22,4 @@ mesh = SubResource("SphereMesh_wnbfj") [node name="MeshInstance3D2" type="MeshInstance3D" parent="."] transform = Transform3D(1, 0, 0, 0, 0.965926, -0.258819, 0, 0.258819, 0.965926, 0, 0.322139, 0.653597) -material_override = SubResource("ShaderMaterial_855vq") mesh = SubResource("QuadMesh_sbqxy")