three.js地图相机控件MapControls

参考资料:threejs中文网

threejs qq交流群:814702116

地图导航相机控件MapControls,你可实现一个类似百度地图的3D导航功能。

MapControls使用操作

  • 平移:鼠标左键拖动
  • 旋转:鼠标右键拖动
  • 缩放:鼠标中键滚动

引入相机控件MapControls

引入相机控件MapControls类,旧版本是通过扩展库文件MapControls.js实现,不过新版本MapControls类和OrbitControls类一样通过
\examples\jsm\controls目录下的OrbitControls.js文件引入。

// 引入相机控件`MapControls`
import { MapControls } from 'three/addons/controls/OrbitControls.js';

注意:如果你在原生.html文件中,使用import { MapControls } from 'three/addons/controls/OrbitControls.js';方式引入,注意通过<script type="importmap">配置好路径。

使用MapControls

参数1是地图导航控件要改变的相机对象,参数2是three.js渲染对应的canvas画布。

const controls = new MapControls(camera, renderer.domElement);

MapControls本质

MapControls本质上就是改变相机的参数,比如相机的位置属性、相机目标观察点。

controls.addEventListener('change', function () {
    // 鼠标右键旋转时候,查看.position变化
    // 鼠标左键拖动的时候,查看.position、.target的位置会变化
    console.log('camera.position',camera.position);
    console.log('controls.target',controls.target);
});

缩放、旋转或平移禁止

参考上节课关于OrbitControls的介绍,整体思路是一样的,只是鼠标操作有差异。

controls.enablePan = false; //禁止平移
controls.enableZoom = false;//禁止缩放
controls.enableRotate = false; //禁止旋转

透视投影相机缩放范围

参考上节课关于OrbitControls的介绍

//相机位置与观察目标点最小值
controls.minDistance = 200;
//相机位置与观察目标点最大值
controls.maxDistance = 500;

设置旋转范围

参考上节课关于OrbitControls的介绍

// 上下旋转范围
controls.minPolarAngle = 0;
controls.maxPolarAngle = Math.PI/2;
// 左右旋转范围
controls.minAzimuthAngle = -Math.PI/2;
controls.maxAzimuthAngle = Math.PI/2;
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Threejs可视化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值