前言

cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材。

内容概览

1.基于cesium 实现 3d-tiles 平移旋转贴地
2.源代码 demo 下载

本篇实现 3d-tiles 平移旋转贴地,效果图如下:

实现思路:核心就是根据旋转、平移矩阵相乘来改变调整 3d-tiles 模型,利用 cesium 函数 Cesium.Matrix3.fromRotationX、Cesium.Matrix3.fromRotationY、Cesium.Matrix3.fromRotationZ、Cesium.Matrix4.fromRotationTranslation、Cesium.Matrix4.multiply等等

  • 界面滑条动态调整模型位置:
  • var buttonx1 = document.getElementById('buttonx-');
  • var buttonx2 = document.getElementById('buttonx+');
  • var buttonx3 = document.getElementById('buttony-');
  • var buttonx4 = document.getElementById('buttony+');
  • var sliderx = document.getElementById('slider-x');
  • var sliderValuex = document.getElementById('slider-value-x');
  • var slidery = document.getElementById('slider-y');
  • var sliderValuey = document.getElementById('slider-value-y');
  • var sliderHeight = document.getElementById('slider-Height');
  • var sliderValueHeight = document.getElementById('slider-value-Height');
  • var sliderRotateX = document.getElementById('slider-RotateX');
  • var sliderValueRotateX = document.getElementById('slider-value-RotateX');
  • var sliderRotateY = document.getElementById('slider-RotateY');
  • var sliderValueRotateY = document.getElementById('slider-value-RotateY');
  • var sliderRotateZ = document.getElementById('slider-RotateZ');
  • var sliderValueRotateZ = document.getElementById('slider-value-RotateZ');
  • window.onload = function (){
  • buttonx1.addEventListener('click', function(e) {
  • params.tx = params.tx - 0.0001;
  • if (isNaN(params.tx)) {
  • return;
  • }
  • sliderValuex.textContent = params.tx;
  • update3dtilesMaxtrix(tileset);
  • });
  • buttonx2.addEventListener('click', function(e) {
  • params.tx = params.tx + 0.0001;
  • if (isNaN(params.tx)) {
  • return;
  • }
  • sliderValuex.textContent = params.tx;
  • update3dtilesMaxtrix(tileset);
  • });
  • sliderx.addEventListener('input', function(e) {
  • sliderValuex.textContent = e.target.value;
  • params.tx = Number(e.target.value);
  • if (isNaN(params.tx)) {
  • return;
  • }
  • update3dtilesMaxtrix(tileset);
  • });
  •  
  • buttonx3.addEventListener('click', function(e) {
  • params.ty = params.ty - 0.0001;
  • if (isNaN(params.ty)) {
  • return;
  • }
  • sliderValuey.textContent = params.ty;
  • update3dtilesMaxtrix(tileset);
  • });
  • buttonx4.addEventListener('click', function(e) {
  • params.ty = params.ty + 0.0001;
  • if (isNaN(params.ty)) {
  • return;
  • }
  • sliderValuey.textContent = params.ty;
  • update3dtilesMaxtrix(tileset);
  • });
  • slidery.addEventListener('input', function(e) {
  • sliderValuey.textContent = e.target.value;
  • params.ty = Number(e.target.value);
  • if (isNaN(params.ty)) {
  • return;
  • }
  • update3dtilesMaxtrix(tileset);
  • });
  •  
  • sliderHeight.addEventListener('input', function(e) {
  • sliderValueHeight.textContent = e.target.value;
  • params.tz = Number(e.target.value);
  • if (isNaN(params.tz)) {
  • return;
  • }
  • update3dtilesMaxtrix(tileset);
  • });
  •  
  • sliderRotateX.addEventListener('input', function(e) {
  • sliderValueRotateX.textContent = e.target.value;
  • params.rx = Number(e.target.value);
  • if (isNaN(params.rx)) {
  • return;
  • }
  • update3dtilesMaxtrix(tileset);
  • });
  •  
  • sliderRotateY.addEventListener('input', function(e) {
  • sliderValueRotateY.textContent = e.target.value;
  • params.ry = Number(e.target.value);
  • if (isNaN(params.ry)) {
  • return;
  • }
  • update3dtilesMaxtrix(tileset);
  • });
  •  
  • sliderRotateZ.addEventListener('input', function(e) {
  • sliderValueRotateZ.textContent = e.target.value;
  • params.rz = Number(e.target.value);
  • if (isNaN(params.rz)) {
  • return;
  • }
  • update3dtilesMaxtrix(tileset);
  • });
  • }
  • 核心函数:

更多详情见下面链接文章

GIS之家小专栏此文章

文章提供源码,对本专栏感兴趣的话,可以关注一波

cesium 实现 3d-tiles 平移旋转贴地(附源码下载)的更多相关文章

  1. Cesium专栏-空间分析之坡度分析(附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  2. Cesium专栏-空间分析之地形等高线(附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  3. cesium 之地图切换展示效果篇(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

  4. cesium 之加载地形图 Terrain 篇(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

  5. 使用 CSS3 实现 3D 图片滑块效果【附源码下载】

    使用 CSS3 的3D变换特性,我们可以通过让元素在三维空间中变换来实现一些新奇的效果. 这篇文章分享的这款 jQuery 立体图片滑块插件,利用了 3D transforms(变换)属性来实现多种不 ...

  6. Cesium专栏-雷达遮罩动态扫描(附源码下载)

    Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精度,渲染质量以 ...

  7. Cesium专栏-地形开挖2-任意多边形开挖(附源码下载)

    “任意多边形地形开挖” 是“地形开挖”的补充篇,在这节里,我们介绍关于如何使用任意多边形对地形进行开挖,同时,由于有不少小伙伴也咨询了关于“地形开挖”篇后序内容中的填充地形的效果,之前没放出来,是想让 ...

  8. cesium 实现风场图效果(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

  9. Cesium专栏-填挖方分析(附源码下载)

    Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精度,渲染质量以 ...

随机推荐

  1. java VS c#,异同点

    因工作安排,后期需要维护一个java项目.所以稍微熟悉下java,开此篇记录下java与c#的区别点,方便增强自己学习效果.肯定是不全的,可能是有错的,欢迎批评指正. 一.关键字 描述 C# Java ...

  2. Python 面向对象之一 类与属性

    Python 面向对象之 类与属性 今天接触了一下面向对象,发现面向对象和之前理解的简直就是天壤之别,在学Linux的时候,一切皆文件,现在学面向对象了,so,一切皆对象. 之前不是一直在学的用面向函 ...

  3. 总结一下 IEnumerable 的例子

    本篇将围绕 <试试 IEnumerable 的 10 个小例子>和<试试 IEnumerable 的另外 6 个小例子>给出的例子,总结一下对于 IEnumerable 接口的 ...

  4. 装上linux后的准备工作

    A.修改对应网卡的IP地址的配置文件  1 2 3 4 5 6 7 8 # vi /etc/sysconfig/network-scripts/ifcfg-eth0   IPV6INIT=no #关闭 ...

  5. Python之tkinter.messagebox弹窗

    messagebox:tkinter的消息框.对话框 一.messagebox.showinfo(title='提示', message='错误') from tkinter import * fro ...

  6. cocos creator 3D | 拇指射箭

    拇指射箭!你能射中靶心么? 效果预览 配置环境: cocos creator 3d v1.0.0 玩法介绍: 长按屏幕,拖动瞄准,放手发射.风向.重力和距离影响最终结果!越靠近中心得分越高!最高分10 ...

  7. 7. SOFAJRaft源码分析—如何实现一个轻量级的对象池?

    前言 我在看SOFAJRaft的源码的时候看到了使用了对象池的技术,看了一下感觉要吃透的话还是要新开一篇文章来讲,内容也比较充实,大家也可以学到之后运用到实际的项目中去. 这里我使用Recyclabl ...

  8. 十一、设备初始化(ADK4.0)

    1.1     首先初始化连接库 sinkConnectionInit();à ConnectionInitEx2();  theCm.task.handler = connectionBluesta ...

  9. 突破至暗时刻,HCIE-RS的6个月成就之路

    我是今年四月份报的HCIE培训,到考完面试总共六个月的时间,对于HCIE整个考试的流程来说,六个月的时间不短,但也不是很长.尤其是面试,需要花费大量的时间和精力,下面我就把我整个备考历程做个简单的分享 ...

  10. 【RocketMQ源码学习】- 5. 消息存储机制

    前言 面试官:你了解RocketMQ是如何存储消息的吗?我:额,,,你等下,我看下这篇文字, (逃 由于这部分内容优点多,所以请哥哥姐姐们自备茶水,欢迎留言! RocketMQ存储设计是高可用和高性能 ...