浅谈BIMSurfer实现gltf格式数据查询属性信息功能

这里主要通过与gltf1.0标准格式规范进行比对,来分析BIMsurfer技术中的gltf文件(后面用Bgltf简单代指),以及他实现属性信息查看的方法。

  • 所有文件

除了一个gltf文件还有三类外部文件,均在gltf中通过URI的方式指引调用。四个glsl文件,一个bin文件,一个xml文件。

 

Gltf文件:这里的gltf是基于1.0版本规范;

Glsl文件:是简单脚本,应该是用来解析自己在gltf中增加的项目的;

Bin文件:是外部数据文件,标准gltf文件也可以有这类文件,二进制,编辑器无法正常读取;

Xml文件:xml标准化的属性数据,用来存储各个部件的属性信息。

所需文件
  • Gltf标准格式结构

https://github.com/KhronosGroup/glTF/raw/master/specification/1.0/figures/dictionary-objects.png
gltf1.0标准
  • Bgltf的结构

整理过后可以看到Bgltf文件包含accessors、scene、scenes、materials、asset、animations、nodes、bufferViews、skins、buffers、meshs、programs、techniques、shaders项目。下面详细分析每个项目。

Bgltf的json组织格式
  • 详细对比

Accessors访问器它定义了如何通过提供有关数据类型和布局的信息来解释bufferView的数据;

accessor示例

Scene: 没啥用?

Scenes场景是存储在glTF的场景描述的入口点。解析glTF文件时,场景结构从这里开始遍历;

Materials材质包含有关对象外观的信息;

materials材质示例

Json结构如上图所示,外部标签是其他部分访问这个材质的索引,他会在meshes中被引用。

meshes中引用material示例

 

Asset说明,版本等信息,在这里获知到这是gltf1.0版本。

Animations动画,这里是空值。

Nodes:场景图层次结构中的一个节点,可以包含子节点,或mesh、camera实例

node示例

skins:蒙皮或者皮肤,这里是空值。

bufferViews描述了整个原始buffer数据的切片。这里有两个块,都指向同一个原始数据文件,也就是buffers指向的*.bin。两个数据块长度之和等于总数据长度,一个数据块的起始接着另一个数据块的尾部。

buffers:这里指向了外部二进制文件 *.bin。

bufferview示例

meshes:表示出现在场景中的几何对象。Indices是索引文件,attributes定义对象的几何数据,顶点位置和顶点法线信息,material是材质,mode模式(这里4表示三角形)。

meshes

Techniques技术描述了用于材料的阴影,就设置参数,没啥可解释的。

techniques示例

Programs

技术的程序属性创建了一个阴影程序的实例(The program property of a technique creates an instance of a shader program)。Attributes定义了传递给着色器的顶点属性,fragmentShadervertexShader引用GLSL的片段和顶点着色器源代码文件,这里重新指向自定义文件。

program示例

Shaders:这里存储的着色器源文件。

shaders示例

这里将其中的一个glsl文件示例列出来,可以看出,这个文件就是着色器的参数的设定,与属性值设置没有关系,无关紧要。

glsl文件示例
  • Xml文件说明

值得一提的是,这里的xml文件也有一定的结构组织性,考虑了冗余数据的一次存储多次使用。如下图所示的一个floor,他在xml中是一个ifcslab的标签对表示的,其属性是内部的IfcPropertySet标签对代表,这些标签对通过id指向xml内部的IfcPropertySet连接,在IfcPropertySet内部用IfcPropertySingleValue标签对存储属性信息。这样,同样的属性信息能被多个对象重复使用。下图的例子中的一个属性组就被两个对象重复使用。

一个对象标签示例
属性标签示例
实际图像
  • 结论

bimsurfer并不是在gltf中简单通过指定xml的id来连接三维模型对象和他的属性,这里应该是在bin文件中指定两者的对应关系,但是具体的映射关系需要更深入的研究。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值