From 9d34381b118a67b47cfecc5822a6ff7d81cab5c7 Mon Sep 17 00:00:00 2001 From: Adog64 Date: Wed, 7 Feb 2024 17:37:19 -0500 Subject: [PATCH] Successfully tested planar worldgen, starting spherical worldgen --- godot/PlayerCamera.gd | 14 +++++++++ .../ProceduralGeneration/TerrainGeneration.gd | 29 +++++++++++++------ godot/main.tscn | 12 ++++++-- 3 files changed, 43 insertions(+), 12 deletions(-) create mode 100644 godot/PlayerCamera.gd diff --git a/godot/PlayerCamera.gd b/godot/PlayerCamera.gd new file mode 100644 index 0000000..0ae4376 --- /dev/null +++ b/godot/PlayerCamera.gd @@ -0,0 +1,14 @@ +class_name PlayerCamera extends Camera3D + +var theta : float = 0.0 + +# Called when the node enters the scene tree for the first time. +func _ready(): + var starting_position = Vector3(0,0,10) + set_position(starting_position) + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + var offset = Vector3(0,0,-0.01) + translate(offset) diff --git a/godot/ProceduralGeneration/TerrainGeneration.gd b/godot/ProceduralGeneration/TerrainGeneration.gd index 4036da1..bff99a4 100644 --- a/godot/ProceduralGeneration/TerrainGeneration.gd +++ b/godot/ProceduralGeneration/TerrainGeneration.gd @@ -2,25 +2,36 @@ class_name TerrainGeneration extends Node var mesh : MeshInstance3D -var size_depth : int = 100 -var size_width : int = 100 -var mesh_res : int = 2 +var planet_radius : float = 1 +@export var noise : FastNoiseLite # Called when the node enters the scene tree for the first time. func _ready(): generate() func generate(): - var plane_mesh = PlaneMesh.new() - plane_mesh.size = Vector2(size_width, size_depth) - plane_mesh.subdivide_depth = size_depth * mesh_res - plane_mesh.subdivide_width = size_width * mesh_res - plane_mesh.material = preload("res://ProceduralGeneration/Materials/terrain.tres") + var sphere_mesh = SphereMesh.new() + sphere_mesh.material = preload("res://ProceduralGeneration/Materials/terrain.tres") + var surface = SurfaceTool.new() + var data = MeshDataTool.new() + surface.create_from(sphere_mesh, 0) - surface.create_from(plane_mesh, 0) + var plane_array = surface.commit() + data.create_from_surface(plane_array, 0) + + for i in range(data.get_vertex_count()): + var vert = data.get_vertex(i) + data.set_vertex(i, vert) + + plane_array.clear_surfaces() + data.commit_to_surface(plane_array) + + surface.begin(Mesh.PRIMITIVE_TRIANGLES) + surface.create_from(plane_array, 0) + surface.generate_normals() mesh = MeshInstance3D.new() mesh.mesh = surface.commit() diff --git a/godot/main.tscn b/godot/main.tscn index 32d49fa..e5bcbd0 100644 --- a/godot/main.tscn +++ b/godot/main.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=5 format=3 uid="uid://qnald0ho64ew"] +[gd_scene load_steps=7 format=3 uid="uid://qnald0ho64ew"] [ext_resource type="Script" path="res://ProceduralGeneration/TerrainGeneration.gd" id="1_w5er5"] +[ext_resource type="Script" path="res://PlayerCamera.gd" id="2_r4r2e"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_vts4b"] sky_horizon_color = Color(0.64625, 0.65575, 0.67075, 1) @@ -15,17 +16,22 @@ sky = SubResource("Sky_c4t1l") tonemap_mode = 2 glow_enabled = true +[sub_resource type="FastNoiseLite" id="FastNoiseLite_38n1c"] +frequency = 0.0305 + [node name="Main" type="Node3D"] [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_qynbc") [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] -transform = Transform3D(-0.866023, -0.433016, 0.250001, 0, 0.499998, 0.866027, -0.500003, 0.749999, -0.43301, 0, 0, 0) +transform = Transform3D(-0.866024, -0.433016, 0.250001, 0, 0.499998, 0.866026, -0.500003, 0.749999, -0.43301, 0, 0, -30.0417) shadow_enabled = true [node name="TerrainGeneration" type="Node" parent="."] script = ExtResource("1_w5er5") +noise = SubResource("FastNoiseLite_38n1c") [node name="Camera3D" type="Camera3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 0.90736, 0.420355, 0, -0.420355, 0.90736, 0, 3.01209, 7.85595) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 43.4701) +script = ExtResource("2_r4r2e")