在实际应用中,透视投影相机的规则是远小近大,相机距离目标观察点距离越远,目标模型显示越小,距离越近显示越大.
对于透视投影相机而言,OrbitControls缩放,本质上就是改变相机的位置属性.position.
这就是说如果你想控制缩放范围,就是约束相机位置.position
的变化范围,OrbitControls提供了两个属性.minDistance
和.maxDistance
可以帮助你实现。
设置最小范围
相机位置与观察目标点最小值,当达到最小值后,就无法再往近处拉了。
.minDistance
表示相机位置.position
和相机目标观察点 controls.target
的最小距离。
controls.minDistance = 200 // 相机位置与观察目标点最小
设置最大范围
相机位置与观察目标点最大值,当达到最大值后,就无法再往远处拉了。
.maxDistance
表示相机位置.position
和相机目标观察点 controls.target
的最小距离。
controls.maxDistance = 500 // 相机位置与观察目标点最大值
获取相机与目标观察点的距离
在一些需求中,我们需要获取相机与目标观察点的距离,我们可以通过相机控件的方法controls.getDirectory()
获取到相机的位置与相机目标观察点的距离。
var controls = new OrbitControls(camera, renderer.domElement);
controls.getDirectory()
console.log('dis',dis)
可视化设置相机的缩放范围
如果你直接凭感觉设置.minDistance
和 .maxDistance
,不好控制精度,这时候我们可以通过controls.getDirectory()
来辅助处理。
//监听相机位置与目标观察点的距离
controls.addEventListener('change',function () {
const dis = controls.getDirectory();
console.log('dis',dis)
})
当前内容为观看threejs视频教程 WebGL/Three.js前端高薪3D可视化 课程-OrbitControls旋转缩放限制-实践的学习笔记