fix: center world orbit rotation on view
This commit is contained in:
parent
27d44b3b77
commit
240b367acd
@ -85,8 +85,6 @@ const DEFAULT_MESH_SETTINGS: Model3DViewerSettings = {
|
||||
wireframe: false,
|
||||
};
|
||||
|
||||
const WORLD_ORBIT_TARGET = new THREE.Vector3(0, 0, 0);
|
||||
|
||||
const EMPTY_MOVEMENT_STATE: MovementState = {
|
||||
forward: false,
|
||||
backward: false,
|
||||
@ -307,7 +305,6 @@ function positionCameraInsideWorld({
|
||||
const cameraPosition = anchor
|
||||
.clone()
|
||||
.addScaledVector(horizontalAxis, Math.max(majorSpan * 0.12, 0.65));
|
||||
const targetPosition = WORLD_ORBIT_TARGET.clone();
|
||||
|
||||
cameraPosition.x = THREE.MathUtils.clamp(
|
||||
cameraPosition.x,
|
||||
@ -319,6 +316,13 @@ function positionCameraInsideWorld({
|
||||
worldBounds.min.z + marginZ,
|
||||
worldBounds.max.z - marginZ
|
||||
);
|
||||
|
||||
const lookDirection = anchor.clone().sub(cameraPosition).normalize();
|
||||
const anchorDistance = cameraPosition.distanceTo(anchor);
|
||||
const targetPosition = cameraPosition
|
||||
.clone()
|
||||
.addScaledVector(lookDirection, THREE.MathUtils.clamp(anchorDistance * 0.8, 0.55, 1.2));
|
||||
|
||||
camera.position.copy(cameraPosition);
|
||||
camera.lookAt(targetPosition);
|
||||
camera.updateProjectionMatrix();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user