cesium教程(四):相机
Cesium是一款开源的、高性能的3D地球和地图可视化平台,它允许开发者创建基于Web的、交互式的地理空间应用程序。
Cesium的核心是一个WebGL驱动的引擎,能够渲染大规模的地理数据集,支持高精度的地球模型和动态数据可视化。以下是一个Cesium的详细教程,分为多个章节。
3D模型在线预览提供多种低代码平台3D模型在线预览解决方案,实现了将多种3D模型格式无缝集成到低代码业务表单中。这意味着用户可以在不离开低代码平台的情况下,直接查看和操作3D模型,极大地提升了数据可视化的效果和用户交互体验。
相机 Camera
相机控制了场景的观察视角。有很多相机操控方法,比如旋转、缩放、平移以及飞行定位。其内部默认己支持使用鼠标和触摸事件控制相机。
Camera
类(相机)描述了相机的当前状态,包括:位置(position
),朝向(orientation
),参考空间(reference frame),视锥体(view frustum),可以调用move*
、zoom*
、look*
、teist*
、rotate*
、setView
、flyTo
等方法进行控制相机操作。ScreenSpaceCameraController
类(屏幕控件相机控制器)把屏幕空间的用户输入(鼠标拖拽点击或者触摸事件)转换为三维世界的相机移动。它包含一些属性,可以启用/禁用某种用户输入,修改惯性、最小最大缩放距离等。
相机相关事件∶(addEventListener
和 removeEventListener
进行绑定和解绑)
viewer.camera.moveStart
相机开始移动时将引发的事件viewer.camera.moveEnd
相机停止移动时将引发的事件viewer.camera.changed
相机更改后将引发的事件
屏幕控件相机控制器 ScreenSpaceCameraController
禁止相机进入地下
例如,您可以使用 ScreenSpaceCameraController
来控制是否允许摄像机进入地下:
Camera 基本操作方法
move*
和zoom*
方法:沿着相机方向或者某个给定向量来平移相机的位置。 相机朝向不变。look*
和twist*
方法:旋转相机朝向,向前向量(direction),向上向量(up),向右向量(right)都会改变。相机位置保持不变。rotate*
方法:相对一个给定的向量,旋转相机的位置和朝向。
聚焦
viewer.zoomTo 放大到特定位置(平移)。
viewer.flyTo 飞到特定位置/实体。
viewer.zoomTo
和 viewer.flyTo
这两种方法都可以传递给一个 Entity
、EntityCollection
、DataSource
或一个实体数组。
zoomTo
和flyTo
是异步功能,这两个函数都返回Promises
,可用于安排飞行或缩放完成后要执行的函数。
viewer.scene.camera.lookAtTransform 将相机锁定到一个点(旋转)
viewer.camera.flyToBoundingSphere 将相机移到所提供的边界球的位置
viewer.camera.viewBoundingSphere 设置相机,使当前视图包含提供的边界球
绕点飞行
将相机锁定到一个点后,您可以创建一个相机轨道来展示您的资产。这可以通过使用 带有事件侦听器的相机功能来实现:lookAtTransform
跟踪实体 trackedEntity
有时,特别是在处理时间动态数据时,我们希望相机保持以实体为中心,而不是在地球上。这是通过设置来实现的 viewer.trackedEntity
。需要position
设置跟踪实体 。
通过将 viewer.trackedEntity
设置为 undefined
或 双击远离实体 来停止跟踪。调用 zoomTo
或 flyTo
也将取消跟踪。
缓动函数
缓动函数控制如何在相机飞行持续时间内插入时间。
下面的代码示例将缓动函数设置QUADRATIC_IN_OUT
为从东京晴空塔飞到西雅图太空针塔:
cesium教程 - 索引