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

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

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

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

1
2
3
4
5

复制代码

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

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

#2. camera相机对象

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

#2.1 平移位置

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

#2.2 旋转朝向

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

#2.3 平移位置+旋转朝向

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

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

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

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

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

Mars3D开发基础学习:相机Camera及视角控制相关推荐

  1. Mars3D开发基础学习:矢量数据

    矢量数据 是用经度.纬度.高度坐标来表示地图图形或地理实体位置的数据,一般是通过记录坐标的方式来尽可能将地理实体的空间位置表现的准确无误,常见的矢量数据有:点.线.面.体等格式. #1. 矢量数据对象 ...

  2. Mars3D开发基础学习:glTF小模型

    glTF全称是 Graphics Language Transmission Format (图形语言传输格式),是一种针对GL(WebGL,OpenGL ES以及OpenGL)接口的运行时资产传递格 ...

  3. Mars3D开发基础学习:坐标系及坐标变换

    只要涉及到地图开发,无论如何关于坐标系的概念是逃不掉的,谁让地球它是个球呢. 地球就像个橘子 不同的坐标系就是不同的剝橘子的方法 这里就不列举国内常用的坐标系及转换方法,大家可以自行百度. 相关GIS ...

  4. Mars3D开发基础学习:场景特效

    平台支持一些场景特效,包括 雾天气,雨天气,雪天气, 泛光特效,亮度效果,夜视效果,黑白效果,马赛克效果,景深效果 等. #1. 特效的底层实现:后处理(Post Processing) 特效底层是使 ...

  5. Mars3D开发基础学习:矢量图层

    三维场景中,地形和栅格来组成了三维的基础,但更多的业务还是需要 点线面等矢量数据来充实, 这就是我们的矢量数据图层. #1. 图层类型清单 当前主要使用的矢量图层,是指GraphicLayer 类及其 ...

  6. Mars3D开发基础学习:栅格瓦片图层

    前面我们说到地形是三维场景的"骨骼",栅格瓦片图层就是我们浏览三维能感知的"皮肤"了,通常我们叠加的是各种卫星影像或瓦片数据. Mars3D支持多种服务来源的高 ...

  7. Mars3D开发基础学习:Property属性机制

    平台是数据驱动和 time-dynamic visualization,这些可都是仰仗Property属性机制来实现的. Property最大的特点是和时间相互关联,在不同的时间可以动态地返回不同的属 ...

  8. Mars3D开发基础学习:Material材质

    在真实世界里,每个物体会对光产生不同的反应.钢看起来比陶瓷花瓶更闪闪发光,一个木头箱子不会像钢箱子一样对光产生很强的反射.每个物体对镜面高光也有不同的反应.有些物体不会散射(Scatter)很多光却会 ...

  9. 虚幻引擎虚拟现实开发基础学习教程

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:3.93 GB |时长:5h 15m 了 ...

最新文章

  1. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)
  2. EFS 加密文件系统
  3. 表格排序——tablesorter.js使用(支持中文排序)
  4. iphone 使用委托(delegate)在不同的窗口之间传递数据
  5. 整型转化 血泪的教训
  6. 前端 html h5 移动端 手机端 仿ios左滑删除效果
  7. 设计模式学习与应用——单例模式
  8. 计算机导论课程设计总结,大学计算机导论实践课程设计报告.doc
  9. Ubuntu升级glibc
  10. 9.支撑向量机SVM
  11. c语言程序乔奎,迂回
  12. 动态代理实例——增强Waiter接口
  13. easypoi 合并单元格 横向 纵向
  14. PDF时间戳数字签名
  15. protect your eyes - 豆绿色
  16. 解决ViVO 手机安装APP失败问题
  17. latex公式自动换行与不自动换行的实现
  18. TopCoder SRM 577 Div2 1000 EllysCoprimesDiv2
  19. 研磨设计模式 配套源代码发放
  20. CefSharp 常用设置

热门文章

  1. excel时间双击后公式才计算机,(excel为什么需要双击每个单元格以后才能运算公式?)excel表格双击后数据...
  2. 26种英语形容词后缀讲解
  3. jQuery插件,UI
  4. Google Earth Engine APP(GEE)——用一个选择器选择不同城市的应用
  5. 正面管教php_正面管教之PHP(家长帮助家长)
  6. Linux搭建tor网络环境
  7. SAP ABAP loop at Assigning
  8. MEMS mic之PDM mic(二)
  9. 工具篇-sdkman-SDK管理利器
  10. latex表格过长的解决办法之一:缩小字体