Fixed transvoxel test
parent
48fa3404bd
commit
31127bc3c1
|
@ -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)
|
|
@ -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")
|
||||
|
|
|
@ -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 )
|
||||
|
|
Loading…
Reference in New Issue