feat(environment): add painterly skies and living meadows

This commit is contained in:
Rijad Zuzo
2026-09-05 20:27:09 +02:00
parent 7899d36f03
commit ec16e2f2ca
71 changed files with 2280 additions and 213 deletions
+132 -14
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=68 format=3]
[gd_scene load_steps=71 format=3]
[ext_resource type="Terrain3DAssets" path="res://terrain/jajce/assets.tres" id="1_assets"]
[ext_resource type="PackedScene" path="res://world/resource_nodes/ResourceNode.tscn" id="2_resource"]
@@ -21,8 +21,8 @@
[ext_resource type="PackedScene" path="res://addons/terrain_3d/extras/particle_example/Terrain3DParticles.tscn" id="19_terrain_particles"]
[ext_resource type="Material" path="res://world/jajce/materials/cozy_grass_material.tres" id="20_grass_material"]
[ext_resource type="Script" path="res://world/jajce/GrassInteractionController.gd" id="21_grass_controller"]
[ext_resource type="PackedScene" path="res://assets/foliage/tree.glb" id="22_conifer"]
[ext_resource type="PackedScene" path="res://assets/foliage/tree-high.glb" id="23_conifer_high"]
[ext_resource type="PackedScene" path="res://world/jajce/PainterlyConifer.tscn" id="22_conifer"]
[ext_resource type="PackedScene" path="res://world/jajce/PainterlyConifer.tscn" id="23_conifer_high"]
[ext_resource type="PackedScene" path="res://world/jajce/CozyButterfly.tscn" id="24_butterfly"]
[ext_resource type="Material" path="res://world/jajce/materials/cozy_grass_process_material.tres" id="25_grass_process"]
[ext_resource type="PackedScene" path="res://world/jajce/RiverbankResourceCluster.tscn" id="26_resource_cluster"]
@@ -33,8 +33,12 @@
[ext_resource type="ArrayMesh" path="res://assets/storybook/meadow_grass.res" id="31_meadow"]
[ext_resource type="Shader" path="res://world/jajce/materials/storybook_sky.gdshader" id="32_sky"]
[ext_resource type="Texture2D" path="res://assets/painterly/painted_sky.png" id="36_painted_sky"]
[ext_resource type="PackedScene" path="res://world/jajce/StylizedBerryPatch.tscn" id="33_berry"]
[ext_resource type="Script" path="res://world/jajce/PainterlyMeadow.gd" id="34_meadow"]
[ext_resource type="PackedScene" path="res://world/jajce/HarvestableTreePresentation.tscn" id="35_harvest_tree"]
[sub_resource type="Terrain3DMaterial" id="Terrain3DMaterial_jajce"]
_shader_parameters = {
"auto_base_texture": 0,
@@ -42,8 +46,8 @@ _shader_parameters = {
"auto_slope": 0.62,
"blend_sharpness": 0.88,
"enable_macro_variation": true,
"macro_variation1": Color(0.84, 0.95, 0.73, 1),
"macro_variation2": Color(0.60, 0.79, 0.61, 1),
"macro_variation1": Color(0.91, 0.98, 0.80, 1),
"macro_variation2": Color(0.76, 0.89, 0.76, 1),
"macro_variation_slope": 0.48
}
world_background = 0
@@ -179,6 +183,7 @@ size = Vector3(2.9, 0.08, 1.4)
[sub_resource type="ShaderMaterial" id="SkyMaterial_jajce"]
resource_local_to_scene = true
shader = ExtResource("32_sky")
shader_parameter/painted_panorama = ExtResource("36_painted_sky")
[sub_resource type="Sky" id="Sky_jajce"]
resource_local_to_scene = true
@@ -188,17 +193,17 @@ sky_material = SubResource("SkyMaterial_jajce")
resource_local_to_scene = true
background_mode = 2
sky = SubResource("Sky_jajce")
background_energy_multiplier = 0.9
ambient_light_source = 3
ambient_light_color = Color(0.95, 0.9, 0.76, 1)
ambient_light_energy = 0.75
background_energy_multiplier = 1.0
ambient_light_source = 2
ambient_light_color = Color(0.65, 0.8, 0.87, 1)
ambient_light_energy = 0.65
reflected_light_source = 2
tonemap_mode = 2
glow_enabled = true
glow_normalized = true
glow_intensity = 0.18
glow_intensity = 0.12
glow_strength = 0.9
glow_bloom = 0.03
glow_bloom = 0.015
fog_enabled = true
fog_light_color = Color(0.88, 0.84, 0.7, 1)
fog_light_energy = 0.78
@@ -216,8 +221,8 @@ volumetric_fog_length = 96.0
volumetric_fog_detail_spread = 1.6
adjustment_enabled = true
adjustment_brightness = 1.0
adjustment_contrast = 1.03
adjustment_saturation = 1.04
adjustment_contrast = 1.015
adjustment_saturation = 1.07
[sub_resource type="StandardMaterial3D" id="Material_guard"]
albedo_color = Color(0.55, 0.45, 0.35, 1)
@@ -384,6 +389,9 @@ scale = Vector3(1.1, 1, 9)
cast_shadow = 0
mesh = SubResource("Mesh_path_readability")
[node name="PainterlyMeadow" type="Node3D" parent="."]
script = ExtResource("34_meadow")
[node name="FoliageRoot" type="Node3D" parent="."]
[node name="Tree_West_01" parent="FoliageRoot" instance=ExtResource("4_tree")]
@@ -448,6 +456,91 @@ position = Vector3(8, 0, -31)
rotation_degrees = Vector3(0, -20, 0)
scale = Vector3(2.65, 2.65, 2.65)
[node name="Woodland_Edge_01" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-34, 0, -29)
rotation_degrees = Vector3(0, 0, 0)
scale = Vector3(1.3, 1.3, 1.3)
[node name="Woodland_Edge_02" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-39, 0, -25)
rotation_degrees = Vector3(0, 137, 0)
scale = Vector3(1.6, 1.6, 1.6)
[node name="Woodland_Edge_03" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-44, 0, -18)
rotation_degrees = Vector3(0, 274, 0)
scale = Vector3(1.5, 1.5, 1.5)
[node name="Woodland_Edge_04" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-45, 0, -8)
rotation_degrees = Vector3(0, 51, 0)
scale = Vector3(1.8, 1.8, 1.8)
[node name="Woodland_Edge_05" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-43, 0, 4)
rotation_degrees = Vector3(0, 188, 0)
scale = Vector3(1.15, 1.15, 1.15)
[node name="Woodland_Edge_06" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-41, 0, 16)
rotation_degrees = Vector3(0, 325, 0)
scale = Vector3(1.3, 1.3, 1.3)
[node name="Woodland_Edge_07" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-36, 0, 28)
rotation_degrees = Vector3(0, 102, 0)
scale = Vector3(1.2, 1.2, 1.2)
[node name="Woodland_Edge_08" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-26, 0, -35)
rotation_degrees = Vector3(0, 239, 0)
scale = Vector3(1.2, 1.2, 1.2)
[node name="Woodland_Edge_09" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-19, 0, -37)
rotation_degrees = Vector3(0, 16, 0)
scale = Vector3(1.55, 1.55, 1.55)
[node name="Woodland_Edge_10" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-11, 0, -38)
rotation_degrees = Vector3(0, 153, 0)
scale = Vector3(1.35, 1.35, 1.35)
[node name="Woodland_Edge_11" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(-3, 0, -36)
rotation_degrees = Vector3(0, 290, 0)
scale = Vector3(1.4, 1.4, 1.4)
[node name="Woodland_Edge_12" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(5, 0, -39)
rotation_degrees = Vector3(0, 67, 0)
scale = Vector3(1.25, 1.25, 1.25)
[node name="Woodland_Edge_13" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(13, 0, -35)
rotation_degrees = Vector3(0, 204, 0)
scale = Vector3(1.3, 1.3, 1.3)
[node name="Woodland_Edge_14" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(43, 0, -14)
rotation_degrees = Vector3(0, 341, 0)
scale = Vector3(1.5, 1.5, 1.5)
[node name="Woodland_Edge_15" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(46, 0, -5)
rotation_degrees = Vector3(0, 118, 0)
scale = Vector3(1.5, 1.5, 1.5)
[node name="Woodland_Edge_16" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(43, 0, 4)
rotation_degrees = Vector3(0, 255, 0)
scale = Vector3(1.15, 1.15, 1.15)
[node name="Woodland_Edge_17" parent="FoliageRoot" instance=ExtResource("4_tree")]
position = Vector3(43, 0, 14)
rotation_degrees = Vector3(0, 32, 0)
scale = Vector3(1.3, 1.3, 1.3)
[node name="WildlifeRoot" type="Node3D" parent="."]
[node name="Butterfly_Meadow_01" parent="WildlifeRoot" instance=ExtResource("24_butterfly")]
@@ -579,6 +672,12 @@ yield_per_action = 3.0
safety_risk = 0.12
comfort_distance = 24.0
[node name="MeshInstance3D" parent="WorldObjects/ResourceNodes/Tree_01/Visual"]
visible = false
[node name="TreePresentation" parent="WorldObjects/ResourceNodes/Tree_01/Visual" instance=ExtResource("35_harvest_tree")]
scale = Vector3(0.82, 0.82, 0.82)
[node name="Tree_02" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(10, 0, -4)
node_id = &"tree_02"
@@ -589,6 +688,12 @@ yield_per_action = 3.0
safety_risk = 0.16
comfort_distance = 26.0
[node name="MeshInstance3D" parent="WorldObjects/ResourceNodes/Tree_02/Visual"]
visible = false
[node name="TreePresentation" parent="WorldObjects/ResourceNodes/Tree_02/Visual" instance=ExtResource("35_harvest_tree")]
scale = Vector3(0.82, 0.82, 0.82)
[node name="Tree_North_Outskirts_01" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(6, 0, 12)
node_id = &"tree_north_outskirts_01"
@@ -600,6 +705,12 @@ safety_risk = 0.2
comfort_distance = 28.0
discovery_priority = 0.25
[node name="MeshInstance3D" parent="WorldObjects/ResourceNodes/Tree_North_Outskirts_01/Visual"]
visible = false
[node name="TreePresentation" parent="WorldObjects/ResourceNodes/Tree_North_Outskirts_01/Visual" instance=ExtResource("35_harvest_tree")]
scale = Vector3(0.82, 0.82, 0.82)
[node name="Tree_South_Edge_01" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(-12, 0, -12)
node_id = &"tree_south_edge_01"
@@ -610,6 +721,12 @@ yield_per_action = 2.0
safety_risk = 0.24
comfort_distance = 26.0
[node name="MeshInstance3D" parent="WorldObjects/ResourceNodes/Tree_South_Edge_01/Visual"]
visible = false
[node name="TreePresentation" parent="WorldObjects/ResourceNodes/Tree_South_Edge_01/Visual" instance=ExtResource("35_harvest_tree")]
scale = Vector3(0.82, 0.82, 0.82)
[node name="WoodPile_Village_01" parent="WorldObjects/ResourceNodes" instance=ExtResource("2_resource")]
position = Vector3(5, 0, -13)
node_id = &"wood_pile_village_01"
@@ -914,7 +1031,8 @@ text = "Rest Bench"
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
rotation_degrees = Vector3(-55, -35, 0)
light_color = Color(1, 0.87, 0.72, 1)
light_energy = 1.45
light_energy = 1.35
light_angular_distance = 0.6
shadow_enabled = true
directional_shadow_max_distance = 180.0