Mars3D之三维空间视角

三维是指在平面二维系中又加入了一个方向向量构成的空间系。三维既是坐标轴的三个轴,即x轴、y轴、z轴,其中x表示左右空间,y表示前后空间,z表示上下空间(不可用平面直角坐标系去理解空间方向)。在实际应用方面,一般把用X轴形容左右运动,而Z轴用来形容上下运动,Y轴用来形容前后运动,这样就形成了人的视觉立体感。

Camera相机控制了三维场景的视图。有很多方法可以操作Camera,如旋转(rotate)、缩放(zoom)、平移(pan)和飞到目的地(flyTo)。同时也有鼠标和触摸事件用来处理与Camrea的交互,还有API来以编程方式操作摄像机。

image

#1. map中视角相关设置和方法

我们在创建地图时,可以在scene的center参数 (opens new window)中来设置默认视角,如:

var map = new mars3d.Map('mars3dContainer', {
  scene: {
    center: { lat: 25.389914, lng: 119.084961, alt: 1179575, heading: 346, pitch: -60 }
  }
})

当前map中与相机有关的方式:

方法名 说明
map.getCameraView()(opens new window) 可以获取当前地图
map.setCameraView(cameraView, options)(opens new window) 将相机本身定位至指定位置
map.setCameraViewList(arr, enfun)(opens new window) 定位到多个相机视角位置,按数组顺序播放
map.flyHome()(opens new window) 飞行到默认视角, 一般为config.json中的center参数配置的视角。
map.flyTo(target, options)(opens new window) 飞行定位至 Cesium相关矢量对象 处
map.flyToGraphic(graphic, options)(opens new window) 飞行定位至 Graphic矢量对象 处
map.flyToExtent(extent, options)(opens new window) 飞行定位至 矩形区域 处
map.flyToPositions(positions, options)(opens new window) 飞行定位至 坐标数组 处
map.flyToPoint(point, options)(opens new window) 视角中心定位至目标点(非相机位置)
map.cancelFlyTo()(opens new window) 停止视角定位等操作

#2. camera相机对象

map.camera (opens new window)相机对象,由三维地图内部创建的Camera (opens new window)类, 描述了相机的当前状态,包括:位置(position),朝向( orientation), 参考空间( reference frame), 视锥体(view frustum).

#2.1 平移位置

move*zoom* 方法,沿着相机方向或者某个给定向量来平移相机的位置,相机朝向不变。

image

#2.2 旋转朝向

look*twist* 方法,旋转相机朝向,向前向量(direction),向上向量(up),向右向量(right)都会改变,相机位置保持不变。

image

#2.3 平移位置+旋转朝向

rotate* 方法,相对一个给定的向量,旋转相机的位置和朝向。

image

#2. screenSpaceCameraController 鼠标相机控制器对象

map.scene.screenSpaceCameraController 是ScreenSpaceCameraController (opens new window)类 。 把屏幕画布上的用户输入(鼠标拖拽点击或者触摸事件)来修改相机的位置和方向。 它包含一些属性,可以启用/禁用某种用户输入,修改惯性、最小最大缩放距离等。

默认地,场景支持鼠标(电脑端)和手指触摸(移动端)交互,并且支持以下相机漫游方式:

鼠标操作 3D视图 2D视图 2.5D视图
左键 + 拖拽 旋转 平移 平移
右键 + 拖拽 缩放 缩放 缩放
中键滚轮 缩放 缩放 缩放
中键 + 拖拽 倾斜 无操作 倾斜地球

Mars 3D还有丰富的功能示例,我们也会不断的与大家介绍与分享,想体验更多功能,请访问Mars 3D官网

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Camera相机控制了三维场景的视图。有很多方法可以操作Camera,如旋转(rotate)、缩放(zoom)、平...
    火星杠杠阅读 1,423评论 0 0
  • 地图控件是指一些DOM面板或按钮,并与地图有所交互的对象,目前包含2大类,第一种是Cesium原生具备的控件,第2...
    火星杠杠阅读 680评论 0 0
  • 地图内是由各种不同的图层来叠加显示,形成整个三维地图场景的。 图层是地图中很重要的概念,也是平台内很重要的组成部分...
    火星杠杠阅读 2,520评论 0 0
  • ····当前Mars3D开源的功能示例、项目模板中都是用config.json来传参构造Map三维地图的,这种方式...
    火星杠杠阅读 1,520评论 0 0
  • 获取 Mars3D Mars3D 支持多种下载方式,可以在下一篇教程安装[http://mars3d.cn/dev...
    火星杠杠阅读 1,738评论 0 0