Three.js OrbitControls.js缩放比例不是线性的

Three.js OrbitControls.js zoom scaling not linear

本文关键字:js 线性 缩放比例 OrbitControls Three      更新时间:2023-09-26

首先,这就是我所说的库:https://github.com/mrdoob/three.js/blob/dev/examples/js/controls/OrbitControls.js
我的问题如下:我不知道缩放的确切定义在哪里。它按相机和原点之间的距离缩放,但我似乎找不到它。
我已经知道它不可能是第31-33行或getZoomScale()-函数(第276行)以及其他许多行(对于不同的事件)
有没有人研究过它,并猜测它的定义在哪里
或者如何将缩放比例缩放到设定值,而不是现在的缩放比例?

在3D开发中使用相机(PerspectiveCamera)来定义距离、角度、视野等。这会在渲染时产生由灯光、网格、精灵等组成的场景的2D表示。它具有存储在三维矢量、矩阵或四元数中的位置和旋转。

控件("动态观察控制"示例,misc_Controls_Orbit.html)通过将鼠标滚轮/移动等用户事件映射到新位置和旋转来围绕摄影机移动。在轨道控制的情况下,您可以将相机视为绑定到一个线程,该线程迫使相机在移动时始终观察中心点。给定一定的半径,摄影机在球体上移动。

在轨道样本的第74行中,相机被传递给OrbitControl,在OrbitControls.js的第16行中,您可以看到this.object是根据变量/属性传递给它的相机,这些变量/属性可以设置为限制/启用事物。在第81行(this.zoom0=this.object.soom;)中,您可以看到相机具有缩放功能,控件保存该值以用于重置。更新功能包含根据输入(鼠标、触摸、指针)重新定位相机的代码。(直线156159球面半径)

您可以将相机设置为初始位置和旋转(camera.lookat):

    camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 1000);        
    camera.position.x = 0.1;
    camera.position.y = 3.5;
    camera.position.z = 6;
    camera.lookAt(new THREE.Vector3(0, 0, 0));
    controls = new THREE.OrbitControls(camera, renderer.domElement);       

GitHub Wiki链接(仅供参考):主页