From 7aac171d5814cd445155f427f39e58389a67826b Mon Sep 17 00:00:00 2001 From: Vincent Fretin Date: Thu, 23 May 2024 11:16:52 +0200 Subject: [PATCH] Keep the camera position when switching to inspector (fix #607) --- src/lib/cameras.js | 6 ++++++ src/lib/viewport.js | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/src/lib/cameras.js b/src/lib/cameras.js index acda47c9..d56be36e 100644 --- a/src/lib/cameras.js +++ b/src/lib/cameras.js @@ -119,3 +119,9 @@ function setOrthoCamera(camera, dir, ratio) { camera.position.copy(info.position); camera.rotation.copy(info.rotation); } + +export function copyCameraPosition(sourceCamera, targetCamera) { + sourceCamera.getWorldPosition(targetCamera.position); + sourceCamera.getWorldQuaternion(targetCamera.quaternion); + targetCamera.updateMatrixWorld(); +} diff --git a/src/lib/viewport.js b/src/lib/viewport.js index 451b8eb5..3eb80c8c 100644 --- a/src/lib/viewport.js +++ b/src/lib/viewport.js @@ -2,6 +2,7 @@ import TransformControls from './TransformControls.js'; import EditorControls from './EditorControls.js'; +import { copyCameraPosition } from './cameras'; import { initRaycaster } from './raycaster'; import Events from './Events'; @@ -225,6 +226,10 @@ export function Viewport(inspector) { .forEach((element) => { element.style.display = 'none'; }); + copyCameraPosition( + inspector.cameras.original.object3D, + inspector.cameras.perspective + ); } else { disableControls(); inspector.cameras.original.setAttribute('camera', 'active', 'true');