WIP: Camera transforms not working

This commit is contained in:
Vojtěch Struhár 2025-03-03 23:03:10 +01:00
parent 50314f1ad8
commit eba916fb81
4 changed files with 19 additions and 5 deletions

View File

@ -22,7 +22,6 @@ sky_material = SubResource("ProceduralSkyMaterial_t21k5")
[sub_resource type="Environment" id="Environment_b88kk"]
background_mode = 2
sky = SubResource("Sky_eoaoo")
tonemap_mode = 2
glow_enabled = true
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_7nftg"]
@ -135,6 +134,7 @@ shape = SubResource("ConcavePolygonShape3D_7nftg")
[node name="CSGBakedMeshInstance3D" type="MeshInstance3D" parent="Orange/Room/Wall"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
visible = false
material_override = ExtResource("1_v6nyh")
mesh = SubResource("ArrayMesh_v6nyh")
@ -184,7 +184,7 @@ mesh = SubResource("BoxMesh_pvdtj")
skeleton = NodePath("../..")
[node name="OrangePortal" type="MeshInstance3D" parent="Orange" node_paths=PackedStringArray("exit_portal")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 2, 0)
transform = Transform3D(1.31134e-07, 0, -1, 0, 1, 0, 1, 0, 1.31134e-07, 0, 2, 0)
mesh = SubResource("ArrayMesh_pccqs")
skeleton = NodePath("../..")
script = ExtResource("7_pvdtj")
@ -204,6 +204,7 @@ shape = SubResource("ConcavePolygonShape3D_7nftg")
[node name="CSGBakedMeshInstance3D" type="MeshInstance3D" parent="Green/Room/Wall"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
visible = false
material_override = ExtResource("1_v6nyh")
mesh = SubResource("ArrayMesh_v6nyh")
@ -253,7 +254,7 @@ mesh = SubResource("SphereMesh_pccqs")
skeleton = NodePath("../../../Orange")
[node name="GreenPortal" type="MeshInstance3D" parent="Green" node_paths=PackedStringArray("exit_portal")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 2, 0)
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 2, 0)
mesh = SubResource("ArrayMesh_pvdtj")
skeleton = NodePath("../..")
script = ExtResource("7_pvdtj")

View File

@ -1,6 +1,6 @@
extends CharacterBody3D
@onready var camera: Camera3D = $Camera3D
@onready var camera: Camera3D = $PlayerCamera
const SPEED = 5.0
const JUMP_VELOCITY = 4.5

View File

@ -17,7 +17,7 @@ height = 1.75
script = ExtResource("1_4flbx")
metadata/teleportable = false
[node name="Camera3D" type="Camera3D" parent="."]
[node name="PlayerCamera" type="Camera3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.32153, 0)
cull_mask = 1048571

View File

@ -17,6 +17,8 @@ var exit_scale: int = 1 # This is not really needed I think
func _ready() -> void:
assert(exit_portal != null)
# Update portals last
process_priority = 1000
_main_camera = get_viewport().get_camera_3d()
# NOTE: In case the exit portal is in a different world, better put the viewport and camera
@ -29,13 +31,24 @@ func _ready() -> void:
_camera.name = name + "_ExitCamera"
_viewport.add_child(_camera)
# FIXME: Remove this - debug only
var debug = MeshInstance3D.new()
debug.rotate_z(PI / 2)
debug.material_override = StandardMaterial3D.new()
debug.material_override.albedo_color = Color.MAGENTA
debug.mesh = PrismMesh.new()
_camera.add_child(debug)
var mat: ShaderMaterial = MY_PORTAL_MATERIAL
material_override = mat
mat.set_shader_parameter("albedo", _viewport.get_texture())
print(name, ": _ready")
func _process(delta: float) -> void:
_camera.global_transform = real_to_exit_transform(_main_camera.global_transform)
# TODO: Adjust near clip plane to the portal
_camera.near = _main_camera.near
_camera.far = _main_camera.far