@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
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:
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)
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
--- /dev/null
+[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)
-[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="."]
"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]
--- /dev/null
+[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
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()
-[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)
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")
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)
[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")