From a0535a3e1b4eeaacbf22f8bc7c9673efc885c785 Mon Sep 17 00:00:00 2001 From: Vladimir Jigouline Date: Sun, 12 Apr 2020 16:10:17 +0100 Subject: [PATCH] Fix TransformControl zoom for OrthographicCamera --- examples/js/controls/TransformControls.js | 4 ++++ examples/jsm/controls/TransformControls.js | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/examples/js/controls/TransformControls.js b/examples/js/controls/TransformControls.js index 4da137bdd6..27f4fb7f9d 100644 --- a/examples/js/controls/TransformControls.js +++ b/examples/js/controls/TransformControls.js @@ -1166,6 +1166,10 @@ THREE.TransformControlsGizmo = function () { handle.position.copy( this.worldPosition ); var eyeDistance = this.worldPosition.distanceTo( this.cameraPosition ); + // Orthographic camera zoom doesn't depend on eyeDistance, but on camera zoom factor. + if (this.camera.type == "OrthographicCamera") { + eyeDistance = 1000 / this.camera.zoom; + } handle.scale.set( 1, 1, 1 ).multiplyScalar( eyeDistance * this.size / 7 ); // TODO: simplify helpers and consider decoupling from gizmo diff --git a/examples/jsm/controls/TransformControls.js b/examples/jsm/controls/TransformControls.js index eaa31e383e..d8a4b65af2 100644 --- a/examples/jsm/controls/TransformControls.js +++ b/examples/jsm/controls/TransformControls.js @@ -1189,6 +1189,10 @@ var TransformControlsGizmo = function () { handle.position.copy( this.worldPosition ); var eyeDistance = this.worldPosition.distanceTo( this.cameraPosition ); + // Orthographic camera zoom doesn't depend on eyeDistance, but on camera zoom factor. + if (this.camera.type == "OrthographicCamera") { + eyeDistance = 1000 / this.camera.zoom; + } handle.scale.set( 1, 1, 1 ).multiplyScalar( eyeDistance * this.size / 7 ); // TODO: simplify helpers and consider decoupling from gizmo -- GitLab