CesiumLab对BIM模型的输入格式要求 CesiumaLab系列教程

news2024/12/28 5:47:57

BIM 模型和手工模型最大的区别在于几点:

1.建模目标不同,手工模型的目的是为了可视化,就是为了看的见,看不见的东西能省则省。BIM 完全是按照一些工程标准去创建的,比如路面可能有多个层代表了不同的物理层。手工模型的纹理贴图量可能很大,BIM 的贴图相对简单。

2.手工模型一般没有属性信息,但是 BIM 模型有大量属性。

基于这些差异,虽然有些 BIM 工具可以导出 fbx 等模型的交换格式,但是还是推荐按照我们的流程来。 1.导出 clm 格式(clm格式定义),clm 是我们自定义的中间格式,它内部存储了我们切片需要的所有可视化数据(几何体、材质纹理、属性信息、模型结构)等。目前我们做了 revit的插件和microstation connect editon 的插件。以前的 catia v5-2016 插件因为我们实在难以找到更新的 catia 开发资料,也没有技术支持,我们无法再更新,只能暂停,并且从 lab3 里剔除。 2.ifc 格式,ifc 号称是 bim 的标准格式,但事实上 ifc 的标准也是古老而复杂,各家 bim 工具对于 ifc 的支持都不是尽善尽美。另外我们读取和解析 ifc 也是一个比较头疼的问题,容易产生构件丢失的问题,一般最好不要优先考虑 ifc 的方式,而应该是 clm 方式。(lab3中我们也剔除了直接输入ifc的功能)

这里单独讲一讲我们自定义的clm中间格式

clm(CesiumLab Model 简称clm)格式是 CesiumLab 自定义的 BIM 数据中间格式,基于 sqlite 文件数据库,单文件涵盖了可视化需要的所有 BIM 数据信息,包括属性、几何体、构件、纹理、结构等等。 总共包括下述 6 个表。 1.Models

定义了模型信息表

字段名

类型

说明

id

Text

必须,唯一性标识符,sqlite 下使用 guid 生成

path

Text

必须,源bim 数据路径

date

Date

必须,模型信息导出完成时间

elementcount

Int

必须,模型中的构件个数

geometrycount

Int

必须,模型中的几何体个数

Vertexcount

Int

必须,模型中顶点个数

trianglecount

Int

必须,模型中三角形个数

propertycount

Int

必须,模型中属性个数

​2.Properties 定义了模型属性表

字段名

类型

说明

id

Text

必须,唯一性标识符,sqlite 下使用 guid 生成

name

Text

必须,字段名称

type

Text

必须,字段类型,string、integer、double、float,bool

group

Text

可选,属性分组

unittype

Text

可选,单位类型,可选 length,volume 等

​3.Geometries

定义了模型的几何信息

字段名

类型

说明

id

Text

必须,唯一性标识符,sqlite 下使用 guid 生成

gltf

Blob

必须,几何体信息,使用 glb2.0 格式存储,gltf和 buffer 存在一起。并用 zip 压缩。glb 中纹理采用url 形式,为 modelresources 表的 id。

lod

Int

可选,表示几何体的 lod 级别

vertexcount

Int

几何体顶点个数

trianglecount

Int

三角形个数

x

Double

包围球中心点x 值

y

Double

包围球中心点 y 值

z

Double

包围球中心点 z 值

r

Double

包围球半径

​4.Elements

定义了 BIM 构件属性

字段名

类型

说明

id

Text

必须,唯一性标识符,目前 id 虽然是字符串形式,但是必须是整形格式。

name

Text

必须,构件名称

modelid

Text

必须,构件属于哪个模型

properties

Blob

必须,构件的属性信息,如果是 sqlite,这块直接存入 json 文本,并使用 zip 压缩。

geometries

Blob

必须,构件的几何体信息,如果是 sqlite,存入json 文本。

geometrysize

Int

所有几何体的glb 未压缩字节大小之和

vertexcount

Int

顶点个数

trianglecount

Int

三角形个数

x

Double

包围球中心点 x 值,注意这里因为 element 对geometry 的引用是有偏移矩阵的,所以这里的包围球是几何体坐标乘以偏移矩阵得到的。

y

Double

包围球中心点 y 值

z

Double

包围球中心点 z 值

r

Double

包围球半径

Properties 的 json 部分示例如下:

该信息为一个数组。“index”为当前BIM 模型的属性列表里序号。Value 为当前字段的值。 Geometries 的部分,参考如下: Geometries:[{ “id”:”aaaaaaaaaaaaaa”, “matrix”:[0,….] },{}] “id”:”aaaaaaaaaaaaaa”, “matrix”:[0,….] 该信息也是一个数组,gid 表示引用 geometries 库下的几何体 id,matrix 表示偏移矩阵,默认为单位矩阵。

5.modelresources

定义了几何体gltf 中引用的外部资源,一般都是纹理图片

字段名

类型

说明

id

Text

必须,唯一性标识符,sqlite 下使用 guid 生成

name

Text

必须,资源名称

data

Blob

必须,资源的二进制数据

6.Scenetree

定义了模型的结构树中的节点(node)

字段名

类型

说明

id

Text

必须,唯一性标识符,sqlite 下使用 guid 生成,节点如果是构件,那么必须和构件id 相同

name

Text

必须,节点名称

type

Text

可选,节点类型,对于构件,必须是 element

props

Text

可选,JSON 格式,附加到本 node 的额外属性,比如

parent

Text

可选,节点的父节点,为空表示根节点

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows编译Paraview源码

目录一. 环境准备二. 编译1. CMake2. Visual Studio一. 环境准备 下载基本所需: paraview官方给了编译文档:https://github.com/Kitware/ParaView/blob/master/Documentation/dev/build.md 所需要的基础有: 如图:(进入…

2022我的年度总结-- AI遮天之路

我是一个普普通通的大学生,我的博客记录了我学习编程以来共计1年多的水平,我希望能把自己大学的经历、选择、困惑等与同样身处大学,选择AI方向不知如何发展的人进行分享,因此写了这篇年终总结。另外,对于一些刚刚开始写…

重磅!华为更新职业认证架构刷新和重认证规则

尊敬的各位朋友,感谢您一直以来对华为认证的支持! 为匹配华为公司未来长期战略,紧随ICT技术演进趋势,自2023年1月1日起,华为职业认证将启用全新的架构体系和重认证规则,请您关注。 华为职业认证架构刷新 …

新年新希望--爱摸鱼的美工(12)

年近了,上班途中依然匆忙 看女孩子们渐渐开始倒腾 做了新发型,做了美美的指甲 换上了新衣服,买了新包 电话里讨论着 去哪里过年,买什么年货 好像以前的我也这样 今年挣得少了,不想添新衣(不能) …

【条理清晰】在 Windows 上安装 MySQL

下载 MySQL 安装程序安装 MySQL 数据库安装示例数据库下载 MySQL 安装程序 在本教程中,我们展示如何在 Windows 平台上下载和安装 MySQL 的详细步骤。 在 Windows 平台上安装 MySQL 很简单,并不需要太复杂的步骤。按照本文的步骤操练起来就可以了。 我…

一体化Ethercat通信伺服电机在汇川H5U PLC上的应用案例介绍(下)

内容介绍了一体化低压伺服Ethercat通信的电机在汇川H5UPLC上的使用,一体化Ethercat通信伺服电机在汇川H5U PLC上的应用案例介绍(上)主要讲解环境的搭建以及使用AutoShop软件的在线调试功能,简单控制电机位置、速度模式运行。那么本篇我们就来讲解下使用汇…

【Kotlin】空安全 ② ( 手动空安全管理 | 空安全调用操作符 ? | let 函数结合空安全调用操作符使用 )

文章目录一、手动空安全管理二、空安全调用操作符 ?三、let 函数结合空安全调用操作符使用一、手动空安全管理 Kotlin 语言中 , 变量类型 分为 可空类型 和 非空类型 , 默认状态 下 , 变量是 非空类型 的 , 如果使用 类型? 将变量声明为 可空类型 , 那么就需要使用 手动安…

【C语言进阶】动态内存管理

1. 为什么存在动态内存分配我们已经掌握的内存开辟方式有:int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间但是上述的开辟空间的方式有两个特点:1. 空间开辟大小是固定的。2. 数组在申明的时候,…

JavaWeb复习

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…

【迅为iMX6Q】开发板 u-boot 2022.04 SD卡 启动

相关参考 【迅为iMX6Q】开发板 u-boot 2015.04 SD卡 启动 【迅为iMX6Q】开发板 u-boot 2020.04 SD卡 启动 开发环境 win10 64位VMware Workstation Pro 16ubuntu 22.04【迅为imx6q】开发板, 2G DDR uboot-imx 下载 使用 NXP 官方提供的 uboot-imx,代…

TreeList-关闭默认显示的右击菜单

需要给控件添加自定义的右击菜单,所以就造成了冲突,导致右击时只弹出控件自带的菜单而没弹出我自定义的菜单,现在把关闭默认菜单的方法记录一下

数据库,计算机网络、操作系统刷题笔记27

数据库,计算机网络、操作系统刷题笔记27 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle…

解决在Win10上安装VMware Workstation虚拟机不可用

一、说明 这是近几年安装虚拟机存在的问题,这里首先说明,以下信息纯粹来自VMware的参考文档,本人的实现不太成功,期望得到更好的WMware软件进行尝试。 二、错误提示 在 Windows 10 主机上,VMware Workstation 中显示“…

2023/1/7 Vue学习笔记-3-组件的理解

1 对组件的理解 模块与组件、模块化与组件化: 1.模块: (1)理解:向外提供特定功能的js程序,一般就是一个js文件 (2)为什么:js文件很多很复杂 (3)作…

【Linux工具】-vim介绍

Vim使用一,Vim的四种模式二,命令模式1,复制,剪切,粘贴2,撤销操作3,光标的移动4,替换,选中,删除5,h j k l键的使用6,多行注释,去多行注…

2023-01-07:hyper/docker-registry-web是registry的web界面工具之一。请问部署在k3s中,yaml如何写?

2023-01-07:hyper/docker-registry-web是registry的web界面工具之一。请问部署在k3s中,yaml如何写? 答案2023-01-07: yaml如下: apiVersion: apps/v1 kind: Deployment metadata:labels:app: docker-registry-webna…

实验二十五 VRRP配置

实验二十五 VRRP配置虚拟路由冗余协议VRRP(Virtual Router R edundancy Protocol)通过把几台路由设备联合组成一 台虚拟的路由设备,将虚拟路由设备的IP 地址作为用户的默认网关实现与外部网络通信。当网关设 备发生故障时,VRRP机制能够选举新的网关设备承…

HTML与CSS基础(三)—— CSS基础之基础选择器、字体文本相关样式

一、基础认知目标:理解 CSS 的作用,了解 CSS 语法规则,知道 CSS 的引入方式及其区别1. CSS的介绍CSS:层叠样式表(Cascading style sheets) CSS作用:• 给页面中的HTML标签设置样式结构&#xff…

Chrome浏览器读取蓝牙设备数据

蓝牙协议已经发展到5.3版本了,应用蓝牙的设备也越来越多,特别是随着传感器和智能硬件时代的到来,现在除了常见的蓝牙耳机还有一大批设备应用蓝牙进行通信,例如手环、手表、温度计、体重秤。蓝牙协议的数据读写我一直很头疼&#x…

文件写入函数write和fwrite对SRS的DVR性能影响的比较

概述 在linux环境中,对于文件进行读写操作的时候,我们可以采用libc提供的fread/fwrite系列的一套函数,也可以采用操作系统提供的read/write系列的一套系统api函数。 对于libc提供的文件读写函数,首先它可移植性比较好,…