Othographic camera in-editor now uses Z near/far settings instead of a hardcoded value
Fixes #18809.
The in-editor ortho camera used a far clipping plane of 8192 units, and was
placed 4096 units away from the camera cursor.
This was far enough to cause culling issues from floating point precision loss
on objects smaller than one unit.
This change modifies the near/far clipping planes of the ortho camera to use
those specified in the editor (and currently used by the perspective camera).
The frustum is still centered around the camera cursor location, as it was
before.
(cherry picked from commit 26912c15e6
)
This commit is contained in:
parent
35c8ec065c
commit
cc27b4560f
1 changed files with 2 additions and 2 deletions
|
@ -347,7 +347,7 @@ void Node3DEditorViewport::_update_camera(float p_interp_delta) {
|
|||
if (orthogonal) {
|
||||
float half_fov = Math::deg2rad(get_fov()) / 2.0;
|
||||
float height = 2.0 * cursor.distance * Math::tan(half_fov);
|
||||
camera->set_orthogonal(height, 0.1, 8192);
|
||||
camera->set_orthogonal(height, get_znear(), get_zfar());
|
||||
} else {
|
||||
camera->set_perspective(get_fov(), get_znear(), get_zfar());
|
||||
}
|
||||
|
@ -364,7 +364,7 @@ Transform Node3DEditorViewport::to_camera_transform(const Cursor &p_cursor) cons
|
|||
camera_transform.basis.rotate(Vector3(0, 1, 0), -p_cursor.y_rot);
|
||||
|
||||
if (orthogonal)
|
||||
camera_transform.translate(0, 0, 4096);
|
||||
camera_transform.translate(0, 0, (get_zfar() - get_znear()) / 2.0);
|
||||
else
|
||||
camera_transform.translate(0, 0, p_cursor.distance);
|
||||
|
||||
|
|
Loading…
Reference in a new issue