3DTiles生产流程与规范

一篇19年整理的比较老的笔记了。更多精彩内容尽在数字孪生平台。

瓦片切分

标准的四叉树切分对于均匀分布的地理数据切片非常有效,但是这样均等的切分不适用于随机分布、不均匀分布的地理数据,当地理数据稀疏分布的时候,均等的四叉树就不再高效,此时可以考虑用紧凑的包围盒代替均等的包围盒。

紧凑包围盒的四叉树空间结构
此外,对于上述稀疏不均匀分布的地理数据,还可以用KD树的切分方法。KD树的方法需要设置最大深度d。具体切分步骤如下:
(1)选择一个坐标轴,作为本次切分的基础坐标轴,计算所有几何体在该坐标轴上的中心值。
(2)以该中心值为界限将整个区域分为两块子瓦片,同时几何体也分为两组,分别划入子瓦片中。
(3)针对子瓦片重复上述操作,每次切分时旋转一次坐标轴作为新的基础坐标轴,每次切分相当于树结构的深度增加一层,当树的深度大于d时停止切分。

KD树会将区域中的几何体分为两部分,所以这种方法生成的树结构具有较好的均衡性,也就是子瓦片中的几何复杂度都相对均匀。但是因为切分的的子瓦片只有两份,所以会产生相对较深的树结构,不适合大型数据集的切分。
image.png

倾斜摄影或点云建模

image.png
    一切工作的开始是确定采集范围,根据采集范围创建索引并分割采集区域,创建索引得到索引树,分割区域得到瓦片包围盒的经纬度范围,同时根据既定的文件组织结构对保存各区域数据的瓦片文件命名。
    接下来按照采集区域进行采集,在采集过程中,可以一次性采集区域中多个建筑,或者使用设备逐个采集,这样得到的可能是包含多要素或单要素的格网模型。因为三维格网是有环境噪声的,所以需要用去噪方法将其中表示为建筑物的部分提取为要素化的三维模型。如果前面的采集对象为单体建筑物,则需要通过模型合并集中单体模型到一起,即合并成包含多个建筑物要素的模型文件。
    多要素模型向下要得出多个参数:一是根据多要素模型文件中的高度范围补充之前瓦片包围盒缺少的高度信息,二是将多要素模型通过地理坐标转换得到瓦片内数据的包围盒(进一步得到整个瓦片数据的地理坐标),并根据空间一致性检查修正瓦片包围盒,对模型超出的边界进行扩张,进而扩张父节点包围盒边界。三是根据对几何体误差的规定计算当前模型文件的几何体误差。四是将多要素模型转换为gltf格式,根据既定的局部框架,可以将局部矩阵集成到gltf中或者放到瓦片元数据中。
    最后进行数据装配:一是要把多要素gltf结合属性数据组装为瓦片数据文件b3dm,二是把瓦片文件url、包围盒、数据包围盒、几何体误差以及可能作为参数的瓦片地理位置转换的局部框架矩阵组装成瓦片元数据。三是把瓦片元数据与索引树构造为对应的JSON树,用来构建tileset.json文件。最后完成构造3DTiles的所有工作。

地理要素数据集建模

image.png
    首先数据源为地理要素数据集,坐标为WGS84坐标系,然后通过投影转换工具得到投影坐标系下的要素数据集。地理坐标系统下的要素数据集用来构建瓦片索引和分割区域,可以得到索引树、瓦片url、瓦片包围盒、数据包围盒。投影坐标系下的要素数据集用于接下来的要素化建模,在区域分割的同时对投影坐标系下的要素按照区域分组,获得与区域对应的要素组,对每一组要素集计算几何体误差。
    将要素组导入到建模软件中,根据建筑物的高度以及纹理图片进行建模。可以构建多要素的模型或者单要素的模型,若进行单要素建模则需要再进行模型的合并。
    然后将多要素模型通过格式转换成多要素gltf,再将其和要素组中的属性数据一起组装成瓦片文件b3dm。同时,瓦片url、瓦片包围盒、数据包围盒、几何体误差构成瓦片元数据,与索引树一起构成JSON树,并写入tileset.json文件中,最后形成完成的3DTiles。

地理要素数据的3DTiles生产

3.1 下载shp数据,对属性数据进行补齐,增加建筑物高度字段。
3.2 利用ArcGIS对shp数据进行投影变换。
3.3 将整个区域根据LOD准则进行划分(一般选取四叉树分割),选取一些大型或标志性建筑作为根节点,然后根据四叉树分割的四块区域作为根节点的子节点进行存储。这样就相当于生成了5个shp文件,然后进一步得到tileset.json文件。
3.4 将包含部分地理要素的shp文件导入到建模软件中建模。首先将划分后的shp文件导出为CAD文件,然后将CAD文件在3ds MAX中加载。因为加载到3ds MAX中的CAD是以线的形式存储的,所以需要将线转换为可编辑多边形。之后通过编组、平移、解组的方式将所有数据移动到坐标原点附近,这样操作的目的是使瓦片模型数据采用局部空间直角坐标框架。对模型的构建主要使用面的挤出功能,同时使用高清照片进行贴图。建模完成后还要将要素的id编辑到场景下对应的根节点名称中,用于后面的_BATCHID的添加与属性数据的
3.5 接下来是进行b3dm瓦片的转换。首先将3ds Max建模后的模型数据导出成obj文件,然后将obj文件转换成glb文件,再将glb与属性数据根据场景根节点预先记录的id号进行映射,构造b3dm。最后,将b3dm按照tileset.json中的url放置到指定文件位置,至此3DTiles构建完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/572585.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java-spring-mybatis -学习第一天-基础知识讲解

目录 前置条件(创建一个项目) Mybatis 定义 可能出现的问题 这边如果连接不上数据库 ​编辑 Dao接口设计 Mybatis流程 创建实体类 User 和其属性 创建Mapper的接口类 测试类测试 实例数据库数据的更新 实例数据库数值的删除 最重要的是有一个原始的数据库 -我这边…

使用 vllm 本地部署 cohere 的 command-r

使用 vllm 本地部署 cohere 的 command-r 0. 引言1. 安装 vllm2. 本地部署 cohere 的 command-r3. 使用 cohere 的 command-r 0. 引言 此文章主要介绍使用 使用 vllm 本地部署 cohere 的 command-r。 1. 安装 vllm 创建虚拟环境, conda create -n myvllm python…

Oracle Linux 8.8 一键安装 Oracle 11GR2 RAC(231017)

前言 Oracle 一键安装脚本,演示 Oracle Linux 8.8 一键安装 Oracle 11GR2 RAC(231017)过程(全程无需人工干预):(脚本包括 ORALCE PSU/OJVM 等补丁自动安装) ⭐️ 脚本下载地址&…

kafka大数据采集技术实验(未完待续)

Kafka环境搭建 下载地址:https://link.zhihu.com/?targethttps%3A//kafka.apache.org/downloads解压启动zookeeper bin/zookeeper-server-start.sh config/zookeeper.properties需要注意的是 : " c o n f i g / z o o k e e p e r . p r o p e r t i e s &q…

维态思(上海)环保科技有限公司 | 2024全国水科技大会暨技术装备成果展览会

嘉宾简介 胡建龙 维态思(上海)环保科技有限公司 总经理 报告题目:微生态滤床 植物工厂——小城镇生活污水生态净化及零排放案例分享 国家注册设备工程师(给排水)、上海市(合作交流)五四青年…

BUUCTF---misc---[ACTF新生赛2020]outguess

1、下载附件,解压之后得到下面信息 2、查看图片属性,发现有个核心价值观编码;解码为abc 3、flag.txt提示 4、结合题目,这是一个outguess隐写 5、用kali先下载安装隐写库 6、使用命令-k(密钥);-r(将图片里面的隐写信息…

InstantMesh:利用稀疏视图大规模重建模型从单张图像高效生成3D网格

作者:Jiale Xu,Weihao Cheng,Yiming Gao等 编译:东岸因为一点人工一点智能 InstantMesh:利用稀疏视图大规模重建模型从单张图像高效生成3D网格在这项工作中,我们提出了InstantMesh,一个开源的…

免费在英伟达官网使用多个开源AI大模型

英伟达官网能体验到多个聊天AI和图片生成AI,不废话直接上链接 AI开源大模型(https://build.nvidia.com/explore/discover?api-keytrue) 开源的AI大模型有meta的llama3-8b和llama3-70b、snowflake的arctic、microsoft的phi-3-mini、mistral…

【Linux系统编程】第九弹---权限管理操作(下)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、目录权限 2、粘滞位 总结 1、目录权限 首先提出一个问题,删除一个文件需要什么权限呢?&#xff1f…

虚拟机软件哪个好用 虚拟机软件哪个可以玩暗区突围 虚拟机软件排名 PD19虚拟机 Mac类虚拟机运行Windows程序 CrossOver支持的热门游戏

随着跨系统互联的需求不断增长,越来越多的用户会选择在电脑系统中安装虚拟机软件,进而更加便捷地访问和操作其他系统。一款好用的虚拟机软件能够提高系统互联的效率,进而实现了资源共享、测试环境搭建等多种用途。而在众多的虚拟机软件当中&a…

张驰咨询:降本增效企业突破市场重围的制胜法宝

企业在快速发展的过程中,降本增效是永恒不变的主题。毕竟,在竞争激烈的市场环境中,只有不断提高效率和降低成本,才能在竞争中立于不败之地。那么,为什么企业需要降本增效呢? 首先,降本增效是企业…

vue+springboot的登录图片验证码(前端对接报错)

tip:这个只是一个效果实际要运用,还是需要改改滴! 后台Java自带的 本来我是打算用第三方库的,没有整出来,就跟沈某人说不会来着,他说最好用Java自带的, 不然换个系统第三方的就不能用了,大概…

不可以论文查重,也包含了查AI率吗?

临近毕业,完成一篇符合学术规范的毕业论文是一项繁琐又具挑战性的任务。撰写完论文后,反复的查重降重已让人心身疲累。今年,学校又提出了新要求,论文还需要通过AIGC检测系统(www.checkaigc.com)才行&#x…

Vue2学习笔记(尚硅谷天禹老师)

目录 一、入门案例 二、模板语法 三、数据绑定 四、el和data的两种写法 五、MVVM模型 六、Object.defineproperty方法 七、Vue中响应式原理 八、数据代理 九、methods配置项 十、Vue中的事件处理 十一、Vue中的键盘事件 十二、计算属性 十三、监视属性watch 十四、绑定Class样式…

【echarts】数据起点不从X轴的原点开始【不从0开始】

echarts折线图x轴不从0开始怎么办? 或者说为什么有些图是这样的 有些却是这样的 原因出在这里: boundaryGap: false 默认是true,是指坐标轴两边留白。改为false:不留白即从原点开始。 看一下官方的说明

中小型企业网络实战topo

1、设备命名,务必按照规范进行命名规划; 2、子网划分,申请到了公网地址段,201.1.1.0/24,根据公司的实际情况,合理规划拓扑需要的公网地址, 做到合理规划不浪费; 3、子网划分&a…

嵌入式开发学习--进程、线程

什么是进程 进程和程序的区别 概念 程序:编译好的可执行文件,存放在磁盘上的指令和数据的有序集合(文件),程序是静态的,没有任何执行的概念。 进程:一个独立的可调度的任务,执行一…

做抖音小店如何选品?这几个技巧,精准“锁定”爆品!

哈喽~我是电商月月 做抖音小店最重要的就是选品,这点大家都知道 一个店铺商品选的好,顾客喜欢,质量完好,销量和售后都不用操心,和达人合作时,爆单的机会也就越高 那这种商品是什么样的,新手开…

基于ssm微信小程序的4S店客户管理系统

采用技术 基于ssm微信小程序的4S店客户管理系统的设计与实现~ 开发语言:Java 数据库:MySQL 技术:SpringMVCMyBatis 工具:IDEA/Ecilpse、Navicat、Maven 页面展示效果 管理员端 管理员登录 管理员首页 用户管理 门店管理 …

RustGUI学习(iced)之小部件(一):如何使用按钮和文本标签部件

前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 概述…