b3dm ~ ( Batched 3D Model )
目录
1. b3dm 概念解析
1. What‘s b3dm
2. b3dm 格式的数据结构有两部分组成 : header / body
1. b3dm 数据也是基于 gltf 的 ( 单模型基础上做了批量化处理 )
3. b3dm 文件解析
1. 局部文件 解析结果 ( 临时方案 )
BATCH_LENGTH
id[] / revitId[] / properties[]
JSON
1. b3dm 概念解析
b3dm 是一个缩写,它的全称是:Batched 3D Mode ( 批量化 3d 模型 ) , 顾名思义,批量化指的是一定有很多个,不止一个
Batched 3D Model allows offline batching of heterogeneous 3D models, such as different buildings in a city, for efficient streaming to a web client for rendering and interaction. Efficiency comes from transferring multiple models in a single request and rendering them in the least number of WebGL draw calls necessary. Using the core 3D Tiles spec language, each model is a feature.Per-model properties, such as IDs, enable individual models to be identified and updated at runtime, e.g., show/hide, highlight color, etc. Properties may be used, for example, to query a web service to access metadata, such as passing a building's ID to get its address. Or a property might be referenced on the fly for changing a model's appearance, e.g., changing highlight color based on a property value.A Batched 3D Model tile is a binary blob in little endian.--------------------------------------------------------------------------------------------------------译文:b3dm允许不同类型的3d模型,例如城市里不同的建筑,组织成高效的数据流到web端渲染和交互,这种高效率来自于一次请求转化多个模型并且用最少的webGL消耗。在3d tiles特殊的语言中,每一个模型都是一个要素。每一个模型的属性,例如ID能够将模型分离成单个的个体,同样也能对这些模型做更新,颜色变化,是否展示等这样的操作,模型的属性也会有所使用,举个例子来说,通过网络服务去访问元数据,通过建筑的id去访问它的地址,或者动态的属性决定模型外观,根据属性值来改变颜色高度。
1. What‘s b3dm
b3dm 瓦片 是一个 二进制 的 blob
b3dm 也是一种数据格式,这种格式符合3d tiles规范,能够做一些操作,比如说查询,分层设色等。
b3dm 格式的数据通常都是城市的批量化的建筑模型,例如 , 倾斜摄影模型。在实际的生产应用中,倾斜摄影(或者别的格式的大批量模型)的格式并不是b3dm 格式的,绝大多数的倾斜摄影模型格式是 osgb,还有一部分是 obj,所以我们需要把它转化成 b3dm 格式的数据,才能进行进一步的操作。
2. b3dm 格式的数据结构有两部分组成 : header / body
b3dm 格式的数据结构有两部分组成,header 和 body( 有点像 html )
header 部分主要记录了一些 例如版本,字节长度之类的信息。
body 部分主要由3个文件构成 feature table batch table 和 binary gltf
feature table 记录了模型的语义信息,包括每个模型的特征值信息。
batch table 记录了模型的样式以及 rest 请求,还有一些属性信息。
1. b3dm 数据也是基于 gltf 的 ( 单模型基础上做了批量化处理 )
注意 :
b3dm 数据也是基于 gltf 的,也就是说批量的模型中的单个模型的模型格式还是 gltf,并且数据组织方式也和之前讲到过的 gltf 是一样的。
说白了 b3dm 就是在原来 gltf 小模型,单个模型的基础之上,做了批量化的数据组织方式,多了 feature table 和 batch table 两个文件。
3. b3dm 文件解析
1. 局部文件 解析结果 ( 临时方案 )
数据源 准备阶段1、通过 WinHex 解析 b3bm 格式文件2、截取 解析正常的部分数据3、截取部分 另存为xxx.txt 文件4、通过 json 工具类 校验格式-------------------------------------------------------解析数据数理化阶段1、抽象统一解析 保存好的 JSON 格式文本文件2、所需数据实例化至数据库
BATCH_LENGTH
{"BATCH_LENGTH": 23}
id[] / revitId[] / properties[]
{"id": ["aabe04fe-bd80-4e6b-bd1c-7ca5db50ef0c-0056d2bb","aabe04fe-bd80-4e6b-bd1c-7ca5db50ef0c-0056d2c8","aabe04fe-bd80-4e6b-bd1c-7ca5db50ef0c-0056d2e5","aabe04fe-bd80-4e6b-bd1c-7ca5db50ef0c-0056d2ea","aabe04fe-bd80-4e6b-bd1c-7ca5db50ef0c-0056d2f1","467801da-3f36-4be3-b3f9-f2de8b0aa99f-0057ae4b","e8f36b26-a5b1-4026-b578-620c5738b68e-0059b23b","e8f36b26-a5b1-4026-b578-620c5738b68e-0059b241","e8f36b26-a5b1-4026-b578-620c5738b68e-0059b289","e8f36b26-a5b1-4026-b578-620c5738b68e-0059b2a0","aabe04fe-bd80-4e6b-bd1c-7ca5db50ef0c-0056d41b","aabe04fe-bd80-4e6b-bd1c-7ca5db50ef0c-0056d420","aabe04fe-bd80-4e6b-bd1c-7ca5db50ef0c-0056d427","6fa5dcf6-ff4a-4930-aac9-b797f57b424b-00576625","6fa5dcf6-ff4a-4930-aac9-b797f57b424b-0057663f","6fa5dcf6-ff4a-4930-aac9-b797f57b424b-0057665e","6fa5dcf6-ff4a-4930-aac9-b797f57b424b-00576660","467801da-3f36-4be3-b3f9-f2de8b0aa99f-0057ae0c","9f961a30-3b3d-44a2-b73a-db9d54125ba5-00597277","c28ca6fe-7b52-4d98-b06b-e65b6f1c93b2-0059cd54","c28ca6fe-7b52-4d98-b06b-e65b6f1c93b2-0059cdbc","c28ca6fe-7b52-4d98-b06b-e65b6f1c93b2-0059cdc7","c28ca6fe-7b52-4d98-b06b-e65b6f1c93b2-0059cdce"],"revitId": ["5690043","5690056","5690085","5690090","5690097","5746251","5878331","5878337","5878409","5878432","5690395","5690400","5690407","5727781","5727807","5727838","5727840","5746188","5862007","5885268","5885372","5885383","5885390"],"properties": [{"图像": "<无>","底部高程": "3240.00 mm","顶部高程": "3340.00 mm","尺寸": "400 mmx100 mm","标记": "2261","标高前缀": "BL","桥架类型": "CT","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "400 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3290.00 mm","开始偏移": "3290.00 mm","端点偏移": "3290.00 mm","长度": "834.04 mm"},{"图像": "<无>","底部高程": "3350.00 mm","顶部高程": "3450.00 mm","尺寸": "200 mmx100 mm","标记": "2262","标高前缀": "BL","桥架类型": "CT","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "200 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3400.00 mm","开始偏移": "3400.00 mm","端点偏移": "3400.00 mm","长度": "2555.39 mm"},{"图像": "<无>","底部高程": "3350.00 mm","顶部高程": "3450.00 mm","尺寸": "200 mmx100 mm","标记": "2264","标高前缀": "BL","桥架类型": "CT","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "200 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3400.00 mm","开始偏移": "3400.00 mm","端点偏移": "3400.00 mm","长度": "20043.04 mm"},{"图像": "<无>","底部高程": "3350.00 mm","顶部高程": "3450.00 mm","尺寸": "200 mmx100 mm","标记": "2265","标高前缀": "BL","桥架类型": "CT","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "200 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3400.00 mm","开始偏移": "3400.00 mm","端点偏移": "3400.00 mm","长度": "18723.21 mm"},{"图像": "<无>","底部高程": "3240.00 mm","顶部高程": "3340.00 mm","尺寸": "200 mmx100 mm","标记": "2266","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "200 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3290.00 mm","开始偏移": "3290.00 mm","端点偏移": "3290.00 mm","长度": "249.24 mm"},{"图像": "<无>","底部高程": "3350.00 mm","顶部高程": "3450.00 mm","尺寸": "200 mmx100 mm","标记": "2284","标高前缀": "BL","桥架类型": "CT","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "200 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3400.00 mm","开始偏移": "3400.00 mm","端点偏移": "3400.00 mm","长度": "18723.21 mm"},{"图像": "<无>","底部高程": "3350.00 mm","顶部高程": "3450.00 mm","尺寸": "200 mmx100 mm","标记": "2293","标高前缀": "BL","桥架类型": "CT","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "200 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3400.00 mm","开始偏移": "3400.00 mm","端点偏移": "3400.00 mm","长度": "14616.67 mm"},{"图像": "<无>","底部高程": "3240.00 mm","顶部高程": "3340.00 mm","尺寸": "200 mmx100 mm","标记": "2294","标高前缀": "BL","桥架类型": "CT","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "200 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3290.00 mm","开始偏移": "3290.00 mm","端点偏移": "3290.00 mm","长度": "711.98 mm"},{"图像": "<无>","底部高程": "3300.29 mm","顶部高程": "3389.71 mm","尺寸": "200 mmx100 mm","标记": "2295","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "200 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3346.41 mm","开始偏移": "3346.41 mm","端点偏移": "3343.59 mm","长度": "5.64 mm"},{"图像": "<无>","底部高程": "3300.29 mm","顶部高程": "3389.71 mm","尺寸": "200 mmx100 mm","标记": "2296","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "200 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3343.59 mm","开始偏移": "3343.59 mm","端点偏移": "3346.41 mm","长度": "5.64 mm"},{"图像": "<无>","底部高程": "3350.00 mm","顶部高程": "3450.00 mm","尺寸": "100 mmx100 mm","标记": "2270","标高前缀": "BL","桥架类型": "CT","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "100 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3400.00 mm","开始偏移": "3400.00 mm","端点偏移": "3400.00 mm","长度": "10853.27 mm"},{"图像": "<无>","底部高程": "3350.00 mm","顶部高程": "3450.00 mm","尺寸": "100 mmx100 mm","标记": "2271","标高前缀": "BL","桥架类型": "CT","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "100 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3400.00 mm","开始偏移": "3400.00 mm","端点偏移": "3400.00 mm","长度": "18507.78 mm"},{"图像": "<无>","底部高程": "3230.00 mm","顶部高程": "3330.00 mm","尺寸": "100 mmx100 mm","标记": "2272","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "100 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3280.00 mm","开始偏移": "3280.00 mm","端点偏移": "3280.00 mm","长度": "1368.66 mm"},{"图像": "<无>","底部高程": "3230.00 mm","顶部高程": "3330.00 mm","尺寸": "100 mmx100 mm","标记": "2273","标高前缀": "BL","桥架类型": "CT","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "100 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3280.00 mm","开始偏移": "3280.00 mm","端点偏移": "3280.00 mm","长度": "4294.11 mm"},{"图像": "<无>","底部高程": "3350.00 mm","顶部高程": "3450.00 mm","尺寸": "100 mmx100 mm","标记": "2274","标高前缀": "BL","桥架类型": "CT","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "100 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3400.00 mm","开始偏移": "3400.00 mm","端点偏移": "3400.00 mm","长度": "18507.78 mm"},{"图像": "<无>","底部高程": "3350.00 mm","顶部高程": "3450.00 mm","尺寸": "100 mmx100 mm","标记": "2275","标高前缀": "BL","桥架类型": "CT","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "100 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3400.00 mm","开始偏移": "3400.00 mm","端点偏移": "3400.00 mm","长度": "10853.27 mm"},{"图像": "<无>","底部高程": "3350.00 mm","顶部高程": "3450.00 mm","尺寸": "100 mmx100 mm","标记": "2276","标高前缀": "BL","桥架类型": "CT","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "100 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3400.00 mm","开始偏移": "3400.00 mm","端点偏移": "3400.00 mm","长度": "8384.77 mm"},{"图像": "<无>","底部高程": "3350.00 mm","顶部高程": "3450.00 mm","尺寸": "100 mmx100 mm","标记": "2282","标高前缀": "BL","桥架类型": "CT","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "100 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3400.00 mm","开始偏移": "3400.00 mm","端点偏移": "3400.00 mm","长度": "18507.78 mm"},{"图像": "<无>","底部高程": "3230.00 mm","顶部高程": "3330.00 mm","尺寸": "100 mmx100 mm","标记": "2289","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "100 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3280.00 mm","开始偏移": "3280.00 mm","端点偏移": "3280.00 mm","长度": "224.62 mm"},{"图像": "<无>","底部高程": "3350.00 mm","顶部高程": "3450.00 mm","尺寸": "100 mmx100 mm","标记": "2297","标高前缀": "BL","桥架类型": "CT","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "100 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3400.00 mm","开始偏移": "3400.00 mm","端点偏移": "3400.00 mm","长度": "601.77 mm"},{"图像": "<无>","底部高程": "3350.00 mm","顶部高程": "3450.00 mm","尺寸": "100 mmx100 mm","标记": "2300","标高前缀": "BL","桥架类型": "CT","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "100 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3400.00 mm","开始偏移": "3400.00 mm","端点偏移": "3400.00 mm","长度": "4852.49 mm"},{"图像": "<无>","底部高程": "3276.89 mm","顶部高程": "3403.11 mm","尺寸": "100 mmx100 mm","标记": "2301","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "100 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3359.81 mm","开始偏移": "3359.81 mm","端点偏移": "3320.19 mm","长度": "79.23 mm"},{"图像": "<无>","底部高程": "3276.89 mm","顶部高程": "3403.11 mm","尺寸": "100 mmx100 mm","标记": "2302","创建的阶段": "新构造","拆除的阶段": "无","水平对正": "中心","垂直对正": "中","宽度": "100 mm","高度": "100 mm","参照标高": "管线综合","偏移": "3359.81 mm","开始偏移": "3359.81 mm","端点偏移": "3320.19 mm","长度": "79.23 mm"}]}
1. id[] : 构件 id 数组
JSON
{"scene": 0,"asset": {"generator": "gltf-samples-generator","version": "2.0"},"scenes": [{"name": "-1","nodes": [0]}],"nodes": [{"name": "-1","mesh": 0}],"meshes": [{"name": "-1","primitives": [{"attributes": {"POSITION": 0,"NORMAL": 1,"_BATCHID": 2},"indices": 3,"material": 0}]}],"materials": [{"name": "MaterialNode_8355711_0","pbrMetallicRoughness": {"roughnessFactor": 1.0,"baseColorFactor": [0.498039216,0.498039216,0.498039216,1.0],"metallicFactor": 0.0},"alphaMode": "OPAQUE","doubleSided": true}],"accessors": [{"min": [21.8017368,21.23,-39.46816],"max": [42.94478,21.45,-19.6449471],"bufferView": 0,"byteOffset": 0,"componentType": 5126,"count": 1104,"type": "VEC3"},{"min": [-1.0,-1.0,-1.0],"max": [1.0,1.0,1.0],"bufferView": 0,"byteOffset": 12,"componentType": 5126,"count": 1104,"type": "VEC3"},{"min": [0.0],"max": [22.0],"bufferView": 0,"byteOffset": 24,"componentType": 5126,"count": 1104,"type": "SCALAR"},{"min": [0],"max": [1103],"bufferView": 1,"byteOffset": 0,"componentType": 5123,"count": 1932,"type": "SCALAR"}],"bufferViews": [{"buffer": 0,"byteLength": 30912,"byteOffset": 0,"target": 34962,"byteStride": 28},{"buffer": 0,"byteLength": 3864,"byteOffset": 30912,"target": 34963}],"buffers": [{"byteLength": 34776}]}
b3dm ~ ( Batched 3D Model )相关推荐
- 一起学WP7 XNA游戏开发(八. 让3d model动起来)
如何让3d model动起来,其实就是要给model的bone设置动作,这样整个model就会动起来了. 一.获取Bones 在fbx文件中可以看到所有bones的名称,这样就可以通过名称来获取到bo ...
- 人脸检测--Face Detection with End-to-End Integration of a ConvNet and a 3D Model
Face Detection with End-to-End Integration of a ConvNet and a 3D Model ECCV2016 mxnet code:https://g ...
- 【论文阅读】6-Automatic 3D Model Construction for Turn-Table Sequences
[论文阅读]6-Automatic 3D Model Construction for Turn-Table Sequences 1.知识点回顾 2.论文阅读 2.1.input& outpu ...
- 视频教程-【CVPR2018】3D Pose Estimation and 3D Model Retriev-强化学习
[CVPR2018]3D Pose Estimation and 3D Model Retriev 从事IT领域8年,精通计算机视觉. 吴勤明 ¥50.00 立即订阅 扫码下载「CSDN程序员学院AP ...
- 碗状碎块三维模型的下载(.PLY格式)3D model file with Bowl-shaped Broken Piece (.ply format)
碗状碎块三维模型的下载(.PLY格式) 3D model file with Bowl-shaped Broken Piece (.ply format) 上传的碗状碎块共有两组,这些碎块在断裂曲面处 ...
- Face Swapping under Large Pose Variations: a 3D Model Based Approach论文阅读笔记
题目:Face Swapping under Large Pose Variations: a 3D Model Based Approach 翻译:大姿态变化下的人脸交换:一种基于三维模型的方法 摘 ...
- knot3d for android,Modified 3D Model of a Facular KNOT
摘要: The paper presents a modified version of a previously published 3D model of the solar facular kn ...
- Altium Designer导入3D模型出现:cannot load 3D model from file警告
这可把我给烦的呀,一整天都在想办法解决这个问题,前前后后安装了8遍,愣是在最后一次才解决.软件的安装都显示破解OK,但是一到封装的时候,想导入3D模型,就显示Cannot load 3D model ...
- 三维浏览软件-JT2GO / 3D Model Viewer JT2GO
1. JT2GO介绍 JT2Go浏览器是西门子工业自动化业务部旗下机构.全球领先的产品生命周期管理(PLM)软件和服务提供商Siemens PLM Software推出的三维可视化解决方案 ...
最新文章
- 深度隐式表达:为什么不用mesh,点云,体素等表示方法?
- 学习完Ajax的总结
- C++中如何访问全局变量和全局函数
- SpringBoot和FreeMarker整合
- sqlserver查看用户名密码_php 连接sql server数据库
- java查询多条_Mybatis查询多条记录并返回List集合的方法
- 管壁式换热器cad图纸_民勤图纸管板加工加工
- 博图v16组态wincc_西门子WinCC与S71200OPC通讯方法
- AngularJS: 自定义指令与控制器数据交互
- R 学习笔记《二》 R语言初学者指南
- 光盘文件格式-udf、iso9660、Joliet、Romeo
- Excel如何一次性将多行多列表格颠倒行顺序
- Facebook公司:如何删掉960万句“脏话”?
- LINUS TORVALDS 语录 TOP 10
- Linux设备驱动模型
- 基于SVM的车牌识别
- 软件机器人实现一键报税,即使没有开发接口,纳税申报也照样方便、快捷
- 关于端口1433连接失败问题
- 趣味数学:解24点游戏小技巧
- 测试工程师的未来在哪里?迷茫的看过来...
热门文章
- 滴滴出行2016校招编程题
- kettle连接数据库报错:Error connecting to database: (using class org.gjt.mm.mysql.Driver) Could not create
- Django Swagger文档库drf-spectacular
- NVMe-MI 时代的NVMe SSD监控和管理
- Notepad++增加读取二进制文件的功能——HexEditor的所有
- win7开启超级管理员账户(Administrator)
- IT项目管理总结:第七章 项目成本管理
- 百度网盘中直接双击编辑的PPT关闭后,找不到了。
- iOS 网络传输数据安全以及常用的加密算法使用
- typescript函数和类的基础