瀏覽代碼

Fix TransformControl zoom for OrthographicCamera

Vladimir Jigouline 5 年之前
父節點
當前提交
a0535a3e1b
共有 2 個文件被更改,包括 8 次插入0 次删除
  1. 4 0
      examples/js/controls/TransformControls.js
  2. 4 0
      examples/jsm/controls/TransformControls.js

+ 4 - 0
examples/js/controls/TransformControls.js

@@ -1166,6 +1166,10 @@ THREE.TransformControlsGizmo = function () {
 			handle.position.copy( this.worldPosition );
 			handle.position.copy( this.worldPosition );
 
 
 			var eyeDistance = this.worldPosition.distanceTo( this.cameraPosition );
 			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 );
 			handle.scale.set( 1, 1, 1 ).multiplyScalar( eyeDistance * this.size / 7 );
 
 
 			// TODO: simplify helpers and consider decoupling from gizmo
 			// TODO: simplify helpers and consider decoupling from gizmo

+ 4 - 0
examples/jsm/controls/TransformControls.js

@@ -1189,6 +1189,10 @@ var TransformControlsGizmo = function () {
 			handle.position.copy( this.worldPosition );
 			handle.position.copy( this.worldPosition );
 
 
 			var eyeDistance = this.worldPosition.distanceTo( this.cameraPosition );
 			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 );
 			handle.scale.set( 1, 1, 1 ).multiplyScalar( eyeDistance * this.size / 7 );
 
 
 			// TODO: simplify helpers and consider decoupling from gizmo
 			// TODO: simplify helpers and consider decoupling from gizmo