From 31127bc3c167114537f6eb9a3cfad55afb1508f8 Mon Sep 17 00:00:00 2001 From: Marc Gilleron Date: Thu, 12 Sep 2019 19:17:33 +0100 Subject: [PATCH] Fixed transvoxel test --- project/transvoxel_test/debug_camera.gd | 103 ----------- project/transvoxel_test/transvoxel_test.gd | 61 ++++--- project/transvoxel_test/transvoxel_test.tscn | 183 +------------------ 3 files changed, 38 insertions(+), 309 deletions(-) delete mode 100644 project/transvoxel_test/debug_camera.gd diff --git a/project/transvoxel_test/debug_camera.gd b/project/transvoxel_test/debug_camera.gd deleted file mode 100644 index c186dbf..0000000 --- a/project/transvoxel_test/debug_camera.gd +++ /dev/null @@ -1,103 +0,0 @@ - -# Generic debug camera controller. Use anywhere. -# Nothing game-related, no reference from and to outside. - -extends Camera - - -export var sensitivity = 0.4 -export var min_angle = -90 -export var max_angle = 90 -export var speed = 10.0 -export var capture_mouse = true - -var _yaw = 0 -var _pitch = 0 -var _forward = Vector3(0,0,0) -var _current_speed = 0 -var _max_speed = 0 - - -func _ready(): - if capture_mouse: - Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) - set_process(true) - set_process_input(true) - _current_speed = speed - _max_speed = speed * 10 - - -func get_forward(): - return get_transform().basis * Vector3(0,0,-1) - - -func _process(delta): - var motor = Vector3(0,0,0) - - var forward = get_forward() - var right = get_transform().basis * Vector3(1,0,0) - var up = Vector3(0,1,0) - - if abs(forward.y) < 1.0: - _forward = Vector3(forward.x, 0, forward.z).normalized() - - if Input.is_key_pressed(KEY_Z) or Input.is_key_pressed(KEY_W): - motor += _forward - if Input.is_key_pressed(KEY_S): - motor -= _forward - if Input.is_key_pressed(KEY_Q) or Input.is_key_pressed(KEY_A): - motor -= right - if Input.is_key_pressed(KEY_D): - motor += right - if Input.is_key_pressed(KEY_SPACE): - motor += up - if Input.is_key_pressed(KEY_SHIFT): - motor -= up - - set_translation(get_translation() + motor * (delta * _current_speed)) - - if motor.length_squared() > 0: - _current_speed *= 1.02 - if _current_speed > _max_speed: - _current_speed = _max_speed - else: - _current_speed = speed - - -func _input(event): - if event.type == InputEvent.MOUSE_BUTTON: - if event.pressed and Input.get_mouse_mode() != Input.MOUSE_MODE_CAPTURED: - if capture_mouse: - # Capture the mouse - Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) - - elif event.type == InputEvent.MOUSE_MOTION: - if Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED || not capture_mouse: - # Get mouse delta - var motion = event.relative_pos - - # Add to rotations - _yaw -= motion.x * sensitivity - _pitch += motion.y * sensitivity - - # Clamp pitch - var e = 0.001 - if _pitch > max_angle-e: - _pitch = max_angle-e - elif _pitch < min_angle+e: - _pitch = min_angle+e - - # Apply rotations - set_rotation(Vector3(0, deg2rad(_yaw), 0)) - rotate(get_transform().basis.x.normalized(), -deg2rad(_pitch)) - - elif event.type == InputEvent.KEY: - if event.pressed: - if event.scancode == KEY_ESCAPE: - # Get the mouse back - Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) - - elif event.scancode == KEY_I: - var pos = get_translation() - var fw = get_forward() - print("Position: ", pos, ", Forward: ", fw) diff --git a/project/transvoxel_test/transvoxel_test.gd b/project/transvoxel_test/transvoxel_test.gd index d0dceb5..dfa3ce2 100644 --- a/project/transvoxel_test/transvoxel_test.gd +++ b/project/transvoxel_test/transvoxel_test.gd @@ -7,17 +7,19 @@ func _ready(): func _input(event): - if event.type == InputEvent.KEY and event.pressed: - if event.scancode == KEY_KP_ADD: - radius += 8 - if radius > 255: - radius = 255 - generate() - elif event.scancode == KEY_KP_SUBTRACT: - radius -= 8 - if radius < 0: - radius = 0 - generate() + if event is InputEventKey: + if event.pressed: + match event.scancode: + KEY_KP_ADD: + radius += 8 + if radius > 255: + radius = 255 + generate() + KEY_KP_SUBTRACT: + radius -= 8 + if radius < 0: + radius = 0 + generate() func generate(): @@ -26,18 +28,19 @@ func generate(): var size = 32 voxels.create(size,size,size) + var channel = VoxelBuffer.CHANNEL_ISOLEVEL - voxels.fill(255, 0) + voxels.fill(255, channel) if false: - voxels.set_voxel(0, 4,4,4, 0) + voxels.set_voxel(0, 4,4,4, channel) var v = 0 - voxels.set_voxel(120, 5,4,4, 0) - voxels.set_voxel(v, 4,5,4, 0) - voxels.set_voxel(v, 4,4,5, 0) - voxels.set_voxel(v, 3,4,4, 0) - voxels.set_voxel(v, 4,3,4, 0) - voxels.set_voxel(v, 4,4,3, 0) + voxels.set_voxel(120, 5,4,4, channel) + voxels.set_voxel(v, 4,5,4, channel) + voxels.set_voxel(v, 4,4,5, channel) + voxels.set_voxel(v, 3,4,4, channel) + voxels.set_voxel(v, 4,3,4, channel) + voxels.set_voxel(v, 4,4,3, channel) if false: var s = 3 @@ -45,7 +48,7 @@ func generate(): for z in range(s, e): for x in range(s, e): for y in range(s, e): - voxels.set_voxel(int(radius), x, y, z, 0) + voxels.set_voxel(int(radius), x, y, z, channel) if false: var r = 15 @@ -56,31 +59,29 @@ func generate(): var v = 0 if d < r: v = 255 - voxels.set_voxel(v, x, y, z, 0) + voxels.set_voxel(v, x, y, z, channel) if true: - var noise = OsnNoise.new() - var fractal_noise = OsnFractalNoise.new() - fractal_noise.set_source_noise(noise) - fractal_noise.set_octaves(3) - fractal_noise.set_period(16) - fractal_noise.set_persistance(0.5) + var fractal_noise = OpenSimplexNoise.new() + fractal_noise.octaves = 3 + fractal_noise.period = 16 + fractal_noise.persistence = 0.5 for z in range(0, voxels.get_size_z()): for x in range(0, voxels.get_size_x()): for y in range(0, voxels.get_size_y()): var v = fractal_noise.get_noise_3d(x,y,z) if true: - voxels.set_voxel_f(v, x,y,z, 0) + voxels.set_voxel_f(v, x,y,z, channel) else: if v > 0: v = 0 else: v = 255 - voxels.set_voxel(v, x, y, z, 0) + voxels.set_voxel(v, x, y, z, channel) var tvm = VoxelMesherTransvoxel.new() - var mesh = tvm.build(voxels, 0) + var mesh = tvm.build_mesh(voxels) if mesh == null: print("The mesh is empty") diff --git a/project/transvoxel_test/transvoxel_test.tscn b/project/transvoxel_test/transvoxel_test.tscn index 2aeebe1..188a093 100644 --- a/project/transvoxel_test/transvoxel_test.tscn +++ b/project/transvoxel_test/transvoxel_test.tscn @@ -1,207 +1,38 @@ [gd_scene load_steps=7 format=2] [ext_resource path="res://transvoxel_test/transvoxel_test.gd" type="Script" id=1] -[ext_resource path="res://transvoxel_test/debug_camera.gd" type="Script" id=2] -[ext_resource path="res://axes.tscn" type="PackedScene" id=3] +[ext_resource path="res://axes.tscn" type="PackedScene" id=2] +[ext_resource path="res://spectator_avatar.tscn" type="PackedScene" id=3] [ext_resource path="res://grid.gd" type="Script" id=4] - - -[sub_resource type="FixedSpatialMaterial" id=1] - -flags_transparent = false -flags_unshaded = false -flags_on_top = false -flags_use_point_size = false -vertex_color_use_as_albedo = false -vertex_color_is_srgb = false -params_diffuse_mode = 0 -params_blend_mode = 0 -params_cull_mode = 0 -params_depth_draw_mode = 0 -params_line_width = 1.0 -params_point_size = 1.0 +[sub_resource type="SpatialMaterial" id=1] albedo_color = Color( 0.7, 0.7, 0.7, 1 ) -specular_mode = 0 -specular_color = Color( 0.1, 0.1, 0.1, 1 ) -specular_metalness = 0.1 -specular_roughness = 0.0 -emission_enabled = false -normal_enabled = false -rim_enabled = false -clearcoat_enabled = false -anisotropy_enabled = false -ao_enabled = false -height_enabled = false -subsurf_scatter_enabled = false -refraction_enabled = false -detail_enabled = false -uv1_scale = Vector2( 1, 1 ) -uv1_offset = Vector2( 0, 0 ) -uv2_scale = Vector2( 1, 1 ) -uv2_offset = Vector2( 0, 0 ) [sub_resource type="Environment" id=2] - -background_mode = 0 -background_skybox_scale = 1.0 -background_color = Color( 0, 0, 0, 1 ) -background_energy = 1.0 -background_canvas_max_layer = 0 -ambient_light_color = Color( 0, 0, 0, 1 ) -ambient_light_energy = 1.0 -ambient_light_skybox_contribution = 0.0 -ss_reflections_enabled = false -ss_reflections_max_steps = 64 -ss_reflections_accel = 0.04 -ss_reflections_fade = 2.0 -ss_reflections_depth_tolerance = 0.2 -ss_reflections_accel_smooth = true -ss_reflections_roughness = true -ssao_enabled = false -ssao_radius = 1.0 -ssao_intensity = 1.0 -ssao_radius2 = 0.0 -ssao_intensity2 = 1.0 -ssao_bias = 0.01 ssao_light_affect = 1.0 -ssao_color = Color( 0, 0, 0, 1 ) -ssao_blur = true -dof_blur_far_enabled = false -dof_blur_far_distance = 10.0 -dof_blur_far_transition = 5.0 -dof_blur_far_amount = 0.1 -dof_blur_far_quality = 1 -dof_blur_near_enabled = false -dof_blur_near_distance = 2.0 -dof_blur_near_transition = 1.0 -dof_blur_near_amount = 0.1 -dof_blur_near_quality = 1 -glow_enabled = false -glow_levels/1 = false -glow_levels/2 = false -glow_levels/3 = true -glow_levels/4 = false -glow_levels/5 = true -glow_levels/6 = false -glow_levels/7 = false -glow_intensity = 0.8 -glow_strength = 1.0 -glow_bloom = 0.0 -glow_blend_mode = 2 -glow_hdr_treshold = 1.0 -glow_hdr_scale = 2.0 -glow_bicubic_upscale = false -tonemap_mode = 0 -tonemap_exposure = 1.0 -tonemap_white = 1.0 -auto_expoure_enabled = false -auto_expoure_scale = 0.4 -auto_expoure_min_luma = 0.05 -auto_expoure_max_luma = 8.0 -auto_expoure_speed = 0.5 -adjustment_enabled = false -adjustment_brightness = 1.0 -adjustment_contrast = 1.0 -adjustment_saturation = 1.0 +ssao_blur = 1 [node name="Node" type="Node"] - script = ExtResource( 1 ) [node name="MeshInstance" type="MeshInstance" parent="."] - -_import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) -layers = 1 material_override = SubResource( 1 ) -cast_shadow = 1 -extra_cull_margin = 0.0 -use_as_billboard = false -use_as_y_billboard = false -use_depth_scale = false -visible_in_all_rooms = false -use_in_baked_light = false -lod_min_distance = 0.0 -lod_min_hysteresis = 0.0 -lod_max_distance = 0.0 -lod_max_hysteresis = 0.0 -mesh = null -skeleton = NodePath("..") - -[node name="Camera" type="Camera" parent="."] - -_import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) -transform = Transform( 1, 0, 0, 0, 0.943118, 0.332458, 0, -0.332458, 0.943118, 0, 3.06759, 8.94332 ) -projection = 0 -fov = 60.0 -near = 0.1 -far = 200.0 -keep_aspect = 1 -current = false -cull_mask = 1048575 -environment = null -h_offset = 0.0 -v_offset = 0.0 -script = ExtResource( 2 ) -sensitivity = 0.3 -min_angle = -90 -max_angle = 90 -speed = 5.0 -capture_mouse = true - -[node name="axes" parent="." instance=ExtResource( 3 )] +[node name="axes" parent="." instance=ExtResource( 2 )] transform = Transform( 20, 0, 0, 0, 20, 0, 0, 0, 20, -20, 0, -20 ) [node name="DirectionalLight" type="DirectionalLight" parent="."] - -_import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) transform = Transform( 0.230139, -0.950812, 0.207346, 0.479203, 0.296166, 0.826226, -0.846995, -0.0907862, 0.523791, 14.2262, 0, 0 ) -layers = 1 -light_color = Color( 1, 1, 1, 1 ) -light_energy = 1.0 -light_negative = false -light_specular = 0.5 -light_cull_mask = -1 -shadow_enabled = false -shadow_color = Color( 0, 0, 0, 1 ) shadow_bias = 0.2 -shadow_contact = 0.0 -shadow_max_distance = 0.0 -editor_only = false -directional_shadow_mode = 2 -directional_shadow_split_1 = 0.1 -directional_shadow_split_2 = 0.2 -directional_shadow_split_3 = 0.5 -directional_shadow_blend_splits = false directional_shadow_normal_bias = 0.2 directional_shadow_bias_split_scale = 0.1 [node name="grid" type="MeshInstance" parent="."] - -_import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) -layers = 1 -material_override = null -cast_shadow = 1 -extra_cull_margin = 0.0 -use_as_billboard = false -use_as_y_billboard = false -use_depth_scale = false -visible_in_all_rooms = false -use_in_baked_light = false -lod_min_distance = 0.0 -lod_min_hysteresis = 0.0 -lod_max_distance = 0.0 -lod_max_hysteresis = 0.0 -mesh = null -skeleton = NodePath("..") script = ExtResource( 4 ) -size = 4 step = 1 [node name="WorldEnvironment" type="WorldEnvironment" parent="."] - -_import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) environment = SubResource( 2 ) - +[node name="SpectatorAvatar" parent="." instance=ExtResource( 3 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 8.80608, 11.0698, 35.9803 )