From: Zachary Vance Date: Tue, 2 Jul 2024 01:50:37 +0000 (-0400) Subject: add camera movement, skybox, fix struts X-Git-Url: https://git.za3k.com/?a=commitdiff_plain;p=the_dome.git add camera movement, skybox, fix struts --- diff --git a/geodesic_dome.gd b/geodesic_dome.gd index 9e09b85..15b756b 100644 --- a/geodesic_dome.gd +++ b/geodesic_dome.gd @@ -4,19 +4,20 @@ extends Node3D @export var edge_scene: PackedScene @export var face_scene: PackedScene +const magic = 2/sqrt(5) var VERTICES : Array[Vector3] = [ Vector3(0, 1, 0), Vector3(0, -1, 0), - Vector3(cos(deg_to_rad(36*0)), 1/sqrt(5), sin(deg_to_rad(36*0))).normalized(), - Vector3(cos(deg_to_rad(36*1)), -1/sqrt(5), sin(deg_to_rad(36*1))).normalized(), - Vector3(cos(deg_to_rad(36*2)), 1/sqrt(5), sin(deg_to_rad(36*2))).normalized(), - Vector3(cos(deg_to_rad(36*3)), -1/sqrt(5), sin(deg_to_rad(36*3))).normalized(), - Vector3(cos(deg_to_rad(36*4)), 1/sqrt(5), sin(deg_to_rad(36*4))).normalized(), - Vector3(cos(deg_to_rad(36*5)), -1/sqrt(5), sin(deg_to_rad(36*5))).normalized(), - Vector3(cos(deg_to_rad(36*6)), 1/sqrt(5), sin(deg_to_rad(36*6))).normalized(), - Vector3(cos(deg_to_rad(36*7)), -1/sqrt(5), sin(deg_to_rad(36*7))).normalized(), - Vector3(cos(deg_to_rad(36*8)), 1/sqrt(5), sin(deg_to_rad(36*8))).normalized(), - Vector3(cos(deg_to_rad(36*9)), -1/sqrt(5), sin(deg_to_rad(36*9))).normalized(), + Vector3(magic*cos(deg_to_rad(36*0)), 1/sqrt(5), magic*sin(deg_to_rad(36*0))), + Vector3(magic*cos(deg_to_rad(36*1)), -1/sqrt(5), magic*sin(deg_to_rad(36*1))), + Vector3(magic*cos(deg_to_rad(36*2)), 1/sqrt(5), magic*sin(deg_to_rad(36*2))), + Vector3(magic*cos(deg_to_rad(36*3)), -1/sqrt(5), magic*sin(deg_to_rad(36*3))), + Vector3(magic*cos(deg_to_rad(36*4)), 1/sqrt(5), magic*sin(deg_to_rad(36*4))), + Vector3(magic*cos(deg_to_rad(36*5)), -1/sqrt(5), magic*sin(deg_to_rad(36*5))), + Vector3(magic*cos(deg_to_rad(36*6)), 1/sqrt(5), magic*sin(deg_to_rad(36*6))), + Vector3(magic*cos(deg_to_rad(36*7)), -1/sqrt(5), magic*sin(deg_to_rad(36*7))), + Vector3(magic*cos(deg_to_rad(36*8)), 1/sqrt(5), magic*sin(deg_to_rad(36*8))), + Vector3(magic*cos(deg_to_rad(36*9)), -1/sqrt(5), magic*sin(deg_to_rad(36*9))), ] @export var level = 1 # Detail level @@ -27,7 +28,7 @@ func is_edge(v1 : Vector3, v2 : Vector3): func add_vertex(v1 : Vector3): var vertex : IsoVertex = vertex_scene.instantiate() vertex.position = v1 - add_child(vertex) + #add_child(vertex) func add_edge(v1 : Vector3, v2: Vector3, level : int): if level == 1: diff --git a/geodesic_dome_edge.gd b/geodesic_dome_edge.gd index 48ac9d0..10c61b0 100644 --- a/geodesic_dome_edge.gd +++ b/geodesic_dome_edge.gd @@ -7,17 +7,8 @@ class_name DomeEdge extends StaticBody3D func _ready(): var length = (v2-v1).length() var center = (v1 + v2) / 2 - var direction = (v2-v1).normalized() position = center - #rotation = direction - var cyclinder_mesh : CylinderMesh = $MeshInstance3D.mesh - cyclinder_mesh.height = length + var cylinder_mesh : CylinderMesh = $MeshInstance3D.mesh + cylinder_mesh.height = length look_at(v2) - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): - pass - #get_tree().current_scene.draw_line(v1, v2) diff --git a/geodesic_dome_edge.tscn b/geodesic_dome_edge.tscn index 8ffec9b..bc9b872 100644 --- a/geodesic_dome_edge.tscn +++ b/geodesic_dome_edge.tscn @@ -6,6 +6,7 @@ albedo_color = Color(0.205117, 0.205117, 0.205117, 1) [sub_resource type="CylinderMesh" id="CylinderMesh_v76vy"] +resource_local_to_scene = true material = SubResource("StandardMaterial3D_qgvan") top_radius = 0.01 bottom_radius = 0.01 diff --git a/glass_material.tres b/glass_material.tres new file mode 100644 index 0000000..f6b7930 --- /dev/null +++ b/glass_material.tres @@ -0,0 +1,11 @@ +[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://jcwnepkvl1tk"] + +[ext_resource type="Shader" path="res://pbr_glass.gdshader" id="1_twhka"] + +[resource] +render_priority = 0 +shader = ExtResource("1_twhka") +shader_parameter/albedo = Color(1, 1, 1, 0.152941) +shader_parameter/roughness = 0.15 +shader_parameter/normal_strength = 1.0 +shader_parameter/edge_color = Color(0, 0, 0, 1) diff --git a/glass_triangle.tscn b/glass_triangle.tscn index bbe679d..8c45a71 100644 --- a/glass_triangle.tscn +++ b/glass_triangle.tscn @@ -1,22 +1,14 @@ -[gd_scene load_steps=5 format=3 uid="uid://dnfk0fawcv6pb"] +[gd_scene load_steps=4 format=3 uid="uid://dnfk0fawcv6pb"] [ext_resource type="Script" path="res://glass_triangle.gd" id="1_w50by"] -[ext_resource type="Shader" path="res://pbr_glass.gdshader" id="2_hi517"] - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_kvcah"] -render_priority = 0 -shader = ExtResource("2_hi517") -shader_parameter/albedo = Color(1, 1, 1, 0.156863) -shader_parameter/roughness = 0.15 -shader_parameter/normal_strength = 1.0 -shader_parameter/edge_color = Color(0, 0, 0, 1) +[ext_resource type="Material" uid="uid://jcwnepkvl1tk" path="res://glass_material.tres" id="2_485vt"] [sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_nt2r6"] points = PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) [node name="GlassTriangle" type="StaticBody3D"] script = ExtResource("1_w50by") -material = SubResource("ShaderMaterial_kvcah") +material = ExtResource("2_485vt") [node name="VisibleShape" type="MeshInstance3D" parent="."] diff --git a/project.godot b/project.godot index d426ae2..9dec3f8 100644 --- a/project.godot +++ b/project.godot @@ -40,6 +40,40 @@ restart={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":114,"echo":false,"script":null) ] } +rotate_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"echo":false,"script":null) +] +} +rotate_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"echo":false,"script":null) +] +} +move_up={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"echo":false,"script":null) +] +} +move_down={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +move_forward={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +move_back={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"echo":false,"script":null) +] +} [physics] diff --git a/rosendal_plains_1_1k.exr b/rosendal_plains_1_1k.exr new file mode 100644 index 0000000..ebd240b Binary files /dev/null and b/rosendal_plains_1_1k.exr differ diff --git a/rosendal_plains_1_1k.exr.import b/rosendal_plains_1_1k.exr.import new file mode 100644 index 0000000..3664429 --- /dev/null +++ b/rosendal_plains_1_1k.exr.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ctanrs2c7ntqe" +path.bptc="res://.godot/imported/rosendal_plains_1_1k.exr-993099eb421ac5906646db882f9f91da.bptc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://rosendal_plains_1_1k.exr" +dest_files=["res://.godot/imported/rosendal_plains_1_1k.exr-993099eb421ac5906646db882f9f91da.bptc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/world.gd b/world.gd index 7524a02..6b2fdd7 100644 --- a/world.gd +++ b/world.gd @@ -9,10 +9,27 @@ func draw_line(v1 : Vector3, v2 : Vector3): func _ready(): add_child(LineDrawer) +func move_camera(delta): + $CameraPivot.position += Vector3( + 0, + Input.get_axis("move_down", "move_up"), + 0, + ) * delta + + # Rotate + var rotate_amt = -Input.get_axis("ui_left", "ui_right") * delta + $CameraPivot.rotate_y(rotate_amt) + + # Move + var move_amt = Input.get_axis("move_back", "move_forward") * delta + var move_dir = -$CameraPivot.global_basis.z + move_dir.y = 0 + move_dir = move_dir.normalized() + $CameraPivot.position += move_dir * move_amt + # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): - $CameraPivot.position += Vector3( - Input.get_axis("ui_left", "ui_right"), - 0, 0) * delta + move_camera(delta) + if Input.is_action_pressed("quit"): get_tree().quit() diff --git a/world.tscn b/world.tscn index 56f0588..b559b5b 100644 --- a/world.tscn +++ b/world.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=6 format=3 uid="uid://cotgytv6xac3l"] +[gd_scene load_steps=11 format=3 uid="uid://cotgytv6xac3l"] [ext_resource type="PackedScene" uid="uid://cr06eruxv1iyp" path="res://geodesic_dome.tscn" id="1_j3sin"] [ext_resource type="Script" path="res://world.gd" id="1_lxwr8"] +[ext_resource type="Texture2D" uid="uid://ctanrs2c7ntqe" path="res://rosendal_plains_1_1k.exr" id="3_wdjbw"] [sub_resource type="BoxShape3D" id="BoxShape3D_njt1i"] size = Vector3(10, 1, 10) @@ -13,6 +14,22 @@ albedo_color = Color(0.100215, 0.230141, 0.0754749, 1) material = SubResource("StandardMaterial3D_tajc4") size = Vector3(10, 1, 10) +[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_d3pds"] +panorama = ExtResource("3_wdjbw") + +[sub_resource type="Sky" id="Sky_bwxns"] +sky_material = SubResource("PanoramaSkyMaterial_d3pds") + +[sub_resource type="Environment" id="Environment_opihn"] +background_mode = 2 +sky = SubResource("Sky_bwxns") +ambient_light_source = 3 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8pi4w"] +albedo_color = Color(0.917489, 0.457041, 0.196681, 1) +metallic_specular = 1.0 +rim_enabled = true + [node name="World" type="Node3D"] script = ExtResource("1_lxwr8") @@ -26,7 +43,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0485562, 0.137679) level = 3 [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 0.560234, 0.828334, 0, -0.828334, 0.560234, 0, 4.51738, 2.88875) +transform = Transform3D(1, 0, 0, 0, 0.560234, 0.828334, 0, -0.828334, 0.560234, 1.38924, 2.25705, 2.22738) [node name="Ground" type="StaticBody3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0) @@ -37,3 +54,10 @@ shape = SubResource("BoxShape3D_njt1i") [node name="MeshInstance3D" type="MeshInstance3D" parent="Ground"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) mesh = SubResource("BoxMesh_6hk8v") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_opihn") + +[node name="CSGSphere3D" type="CSGSphere3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.2449, 0.478221, 0.244456) +material = SubResource("StandardMaterial3D_8pi4w")