threejs 控制透视投影相机的缩放范围

threejs yekong

在实际应用中,透视投影相机的规则是远小近大,相机距离目标观察点距离越远,目标模型显示越小,距离越近显示越大.

对于透视投影相机而言,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旋转缩放限制-实践的学习笔记

喜欢