Cesium 之加载倾斜摄影3d模型(解决倾斜漂移问题)

2023-11-04

        以Cesium3DTileset方式加载服务发布的倾斜摄影静态资源Json文件,参考如下:

item.url='倾斜摄影的json地址/tileset.json';
let tileset = window.viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
     url: item.url,
     // modelMatrix: Cesium.Matrix4.fromArray([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),
     baseScreenSpaceError: 1024,
     //【重要】数值加大,能让最终成像变模糊
     skipScreenSpaceErrorFactor: 16,
     skipLevels: 1,
     immediatelyLoadDesiredLevelOfDetail: false,
     loadSiblings: false,
     cullWithChildrenBounds: true,
     skipLevelOfDetail: true, //开启跳级加载
     //这个参数默认是false,同等条件下,叶子节点会优先加载。但是Cesium的tile加载优先级有很多考虑条件,
     //这个只是其中之一,如果skipLevelOfDetail=false,这个参数几乎无意义。所以要配合skipLevelOfDetail=true来使用,
     //此时设置preferLeaves=true。这样我们就能最快的看见符合当前视觉精度的块,对于提升大数据以及网络环境不好的前提下有一点点改善意义。
      preferLeaves: true,
      //【重要】内存建议显存大小的50%左右,内存分配变小有利于倾斜摄影数据回收,提升性能体验
      maximumMemoryUsage: 1024
      //控制切片视角显示的数量,可调整性能
      // maximumScreenSpaceError: 2,//最大的屏幕空间误差
      // maximumNumberOfLoadedTiles: 100000, //最大加载瓦片个数
}));

        加载完后,打开浏览器往往会发现不尽人意,并且有可能与真实位置不匹配,与影像底图不贴合或者偏移了很远,这是可能是因为坐标系问题导致倾斜的中心点定位有问题,需要调整中心点位置。

        下面以代码方式动态调整倾斜中心点坐标。

    item.longitudeOffset=..
    item.latitudeOffset=..
    item.heightOffset=..
tileset.readyPromise.then(function (palaceTileset) {
     var longitude = item.longitudeOffset //模型需要改变的经度
     var latitude = item.latitudeOffset //模型需要改变的纬度
     //获取3Dtlies的bounds范围
     var boundingSphere = palaceTileset.boundingSphere;
     //获取3Dtlies的范围中心点的弧度
     var cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center);
     //定义3Dtlies改变之后中心点的弧度
      var offsetvalue = Cesium.Cartographic.fromDegrees(longitude, latitude, item.heightOffset)
     // debugger
     //模型本身的位置
     var surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, cartographic.height);
     //模型改变的位置
     var offset = Cesium.Cartesian3.fromRadians(offsetvalue.longitude, offsetvalue.latitude, item.heightOffset);
     //定义模型的改变状态
     var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());
     //修改模型的位置
     palaceTileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);

     var headingAngle = item.headingAngle;
     var pitchAngle = item.pitchAngle;
     var rollAngle = item.rollAngle;
     var lon = item.lon;
     var lat = item.lat;
     var height = item.height;
     if (headingAngle && pitchAngle && rollAngle && lon && lat && height) {
     window.viewer.scene.camera.setView({
     // 初始化相机经纬度
     destination: Cesium.Cartesian3.fromDegrees(lon, lat, height),
     orientation: {
     heading: Cesium.Math.toRadians(headingAngle),
     pitch: Cesium.Math.toRadians(pitchAngle), //从上往下看为-90
     roll: Cesium.Math.toRadians(rollAngle)
     }
   });

   } else {
       window.viewer.flyTo(tileset)
   }
})

通过以上设置如果发现

(1)首次加载时已经和影像底图贴合,但是移动视角后,仍然会出现倾斜漂移问题,如下图所示

 

 说明倾斜的高度比实际地形更高,需要适当降低高度,直至调到合适高度为止。

(2)如果无论怎么设置,要么出现漂移,要么倾斜跑地下被挡住,这有可能是地形的精度不够或与倾斜精度相差太大所导致。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cesium 之加载倾斜摄影3d模型(解决倾斜漂移问题) 的相关文章

  • Cesium入门(二):Viewer控件参数与外观定制

    本章主要介绍Cesium Viewer控件的选项参数 xff0c 以及如何对Viewer的外观进行定制 主要包括以下内容 xff1a Viewer控件Viewer选项参数定制Viewer外观界面 1 Viewer控件 Viewer是构建Ce
  • Cesium入门(七):设置影像图层的覆盖范围

    本章介绍Cesium JS库的Rectangle类 xff0c 并以GeoServer服务器为例演示了在加载EPSG 4326网格的瓦片地图时 xff0c 通过设置rectangle参数来限定图层的覆盖范围 主要包括以下内容 xff1a R
  • [ Cesium ] 根据 TLE 生成 czml 的三种方式

    文章目录 一 使用 python tle2czml 库生成二 手动爬虫三 使用 python requests 库获取四 备注 一 使用 python tle2czml 库生成 span class token keyword import
  • 06 Cesium—基于Cesium ion的添加地形

    文章中所有操作均是在 Cesium 1 91 版本下进行的 其它版本差异请自行适配 Cesium ion Cesium ion 是一个提供瓦片图和3D地理空间数据的平台 Cesium ion 支持把数据添加到用户自己的 CesiumJS 应
  • 第52节:cesium 3DTiles模型特效+选中高亮(含源码+视频)

    结果示例 完整源码
  • 【Cesium入门】一、Cesium安装部署运行

    1 介绍 CesiumJS是一个用于Web上3D地图的JavaScript库 开发者通过Cesium 实现无插件的创建三维球 Cesium通过WebGL技术实现图形的硬件加速 并且跨平台 跨浏览器 2 Cesium项目下载 1 在官网下载压
  • 14 Cesium—地形服务

    文章中所有操作均是在 Cesium 1 91 版本下进行的 其它版本差异请自行适配 地形服务 一些应用场景中我们需要操作地形数据 为此 Cesium 还提供方便的地形服务 TerrainProvider 基类 基于此类 Cesium 封装了
  • Cesium教程(四):调用地形服务

    Cesium提供了多种现有地形数据服务接口 并且支持自定义地形数据 CesiumTerrainProvider 高精度全球地形数据 附有光照和水面效果 地形切片使用quantized mesh v1 0格式 Cesium使用CesiumTe
  • Cesium 简介

    Cesium 简介 一 Cesium 是什么 Cesium 是一个开源 JavaScript 库 用于 3D 2D 2 5D 地图可视化 Cesium 由 AGI 公司计算机图形开发小组与 2011 年研发的 Cesium 一词来源于化学元
  • 第二十三篇:UE Ceisum开发之如何加载本地地形及经纬度、空间坐标相互转化

    本篇是基于Cesium for Unreal这个插件 基本入门我这里就不多说了 不会的人可以先跟着这个教程学习一下 Cesium for Unreal快速入门 本篇重点讲述一下如何加载本地地形 1 准备工作 安装最新的Cesiumlab软件
  • Cesium案列学习(Multi-partCZML.html)

    在学习这个案例之前 先花一点时间了解一下什么是CZML CZML Structure AnalyticalGraphicsInc czml writer Wiki github com Cesium Language CZML 入门1 CZ
  • Cesium加载矢量数据探索——从geojson到矢量切片

    矢量数据由于包含确定的坐标信息 通常用于表达准确的空间位置实体 在cesium中 不支持对shp进行加载 而是需要对shp数据进行转换 一般cesium支持的shp格式如下 geojson topojson kml czml 通常来说 对于
  • Cesium 同时拾取多个对象与 1024*1024 个坐标

    Cesium 拾取案例 在上一文 Cesium 中的离屏渲染 已经了解到 拾取可以通过离屏渲染实现 其中涉及到了颜色缓存和深度缓存的概念 拾取对象 颜色缓存 Cesium 的 Scene pick 只返回选中的第一个物体 根据上文已知原理是
  • Cesium教程(十九):Cesium粒子系统

    Cesium教程 十九 Cesium粒子系统 1 粒子系统 1 1 什么是粒子系统 Cesium粒子系统是一种模拟复杂物理效应的图形技术 是由小图像组成的集合 当他们在一起形成更复杂的 模糊 对象时 会形成火 烟 云或烟火等 1 2 初始粒
  • cesium 申请秘钥(Cesium.Ion.defaultAccessToken/access_token)

    https cesium com ion signin tokens 然后注册 登录 复制使用 Cesium Ion defaultAccessToken 你的 token 案例
  • cesium的clock开始,结束,控制速率

    开始 viewer clock shouldAnimate true 结束 window viewer clock shouldAnimate false 速率调整 viewer clock multiplier 8
  • 04 Cesium—Cesium ion介绍

    文章中所有操作均是在 Cesium 1 91 版本下进行的 其它版本差异请自行适配 Cesium ion Cesium ion 是一个提供瓦片图和3D地理空间数据的平台 Cesium ion 支持把数据添加到用户自己的 CesiumJS 应
  • 使用cesium给地图实例添加精灵图图标

    前置条件 1 将精灵图存放在本地文件中 2 拿到对应的声明文件 该文件中存放了每一个类型的地图实例对应的图标在精灵图中的位置 我这里是json文件 这是某一个实例模型对应的数据 我的做法是 系统登录之后 就掉接口获取到该json文件 并存储
  • cesium-添加点并且可以编辑

    完整代码
  • Cesium教程 (3) 矢量切片mvt-imagery-provider加载

    Cesium教程 3 矢量切片mvt imagery provider加载 目录 0 矢量切片 1 开源项目 2 环境 3 代码 4 进阶 5 TODO 0 矢量切片 WMTS 加载最快 图片格式 样式固定 WMS 加载数量大则慢 但可以点

随机推荐

  • 【DL】第 9 章:新兴的神经网络设计

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • TypeScript基本类型的了解

    数据类型 number string boolean跟js类同 字面量 它就是值本身及值本身的类型 let a 10 a 10 a 125 a 123 any表示任何类型 可以任意赋值 一个变量赋值为any后相当于对该变量关闭了ts的类型检
  • 用cmake将源代码编译成可运行的工程项目

    网上下载的完整源代码 比如 深入理解OpenCV 实用计算机视觉项目解析 想要用来学习 首先得把源码编译到自己使用的平台上 比如我的是VS2010 一般源代码给出的是 C Source C C Header 文件 以及CmakeLists
  • JS之对象-对象增强语法(ES6)

    ES6对JS的对象提供一些封装的语法糖 用来简化某些操作 1 属性值简写 给对象添加变量时 同名属性可以简写 let name zhangsan let Obj name test lalala console log name zhang
  • AI时代带来的图片造假危机,该如何解决

    一 前言 当今 图片造假问题非常泛滥 已经成为现代社会中一个严峻的问题 随着AI技术不断的发展 人们可以轻松地通过图像编辑和AI智能生成来篡改和伪造图片 使其看起来真实而难以辨别 之前就看到过一对硕士夫妻为了骗保竟篡改结婚证 离婚证等信息
  • 常用的maven命令

    常用maven命令总结 mvn v 查看版本 mvn archetype create 创建 Maven 项目 mvn compile 编译源代码 mvn test compile 编译测试代码 mvn test 运行应用程序中的单元测试
  • C++ 自带Sort(快速排序)所需的头文件和操作方法

    需要的头文件 include
  • Promise实现串行执行

    第二种写法 const arr 1 2 3 4 5 6 arr reduce async prs cur idx gt const t await prs const time idx 0 0 1000 idx 1 500 return n
  • 脚本重启电信天翼网关

    背景 家里光猫经常断网 重启才能恢复 光猫位置拔电源不方便 telnet登录重启需破解有风险 因此采用curl模拟登录web重启 最后通过其他脚本监测 实现断网时自动执行重启 bin sh a 1 loginfo curl s L http
  • MySQL与Oracle主键冲突解决方式

    1 MySQL主键冲突 当主键冲突时 可以选择更新或替换 1 1 主键冲突 主键冲突 mysql gt desc my class Field Type Null Key
  • Windows子系统安装

    Windows子系统安装 1 Windows配置修改 1 开启开发者模式 在设置中找到更新与安全 选择开发者选项将开发者模式打开 2 开启子系统 打开控制面板选择程序 按图依次点击勾选适用于Linux的Windows子系统 然后进行重启电脑
  • 四叉树在MMO中的应用

    四叉树是一种树状数据结构 在每一个节点上会有四个子区块 四叉树常应用于二维空间数据的分析与分类 它将数据区分成为四个象限 数据范围可以是方形或矩形或其他任意形状 四叉树在游戏中常常用于减少遍历的次数 1 比如 地图上有N个怪 玩家砍了一刀
  • 【毕设选题】基于stm32的智能扫地机器人设计与实现

    文章目录 0 简介 1 课题背景 2 硬件系统总体框架 2 1 电机驱动 2 2 红外线传感器 2 3 超声波传感器 2 4 MPU6050 2 5 ATK ESP8266 WI FI 模块 2 6 电源管理模块 3 软件系统设计 3 1
  • Could not acquire change log lock. Currently locked by XXX

    Could not acquire change log lock Currently locked by XXX 在项目执行liquibase时 发现超过5分钟依然执行不完成 最后报错显示被被锁了 于是找公司的网络 结果被告知该ip不是公
  • 【RPA入门教程】数据抓取功能使用教学(一)

    UiBot 0 7 版新增加了 数据抓取 功能 这项功能可以方便获取网页中的相似元素 将相似元素的数据采集到数组中 比如各种电商网站 淘宝 京东 拼多多等 的商品分类 商品列表信息 商品名 价格等 或者网页中的各种列表 表格的数据 本期教学
  • 怎样入门嵌入式嵌入式未来的发展方向

    概述 很多工程师要往嵌入式方向发展 特别是ARM得到应用后 这个趋势更是有增无减 但你真的知道怎样入门嵌入式么 你知道嵌入式未来的发展方向么 怎样入门嵌入式嵌入式未来的发展方向 在很多学生或者初级工程师都关注嵌入式 尤其在ARM大红大紫以后
  • 用js写一个简单的定时器

  • STM32学习笔记 -系统时钟Systick

    文章目录 一 SysTick系统时钟滴答定时器的相关概念 1 SysTick的两大作用 1 1 可以产生精确延时 节省定时器 1 2 可以提供给操作系统一个单独的心跳 时钟 节拍 主要 2 SysTick的定义 3 SysTick运行机制
  • 重构,改善既有代码的设计--总结篇

    重构 改善既有代码的设计 第一章感悟 一 书中经典句子 1 重构之前 首先检查自己是否有一套可靠的测试机制 这些测试必须有自我检验能力 2 面对长长的函数 需要分解 代码块越小越好管理 二 自己总结的句子 1 修改长长的函数 找到变的参数和
  • Cesium 之加载倾斜摄影3d模型(解决倾斜漂移问题)

    以Cesium3DTileset方式加载服务发布的倾斜摄影静态资源Json文件 参考如下 item url 倾斜摄影的json地址 tileset json let tileset window viewer scene primitive