上周数字孪生城市开发团队完成了3D Tiles规范点云切片模型读取功能,部分团队参与了“揭榜挂帅”的活动,对此表示感谢。
点云数据的规模一般比较大,点数据会非常多,存储时应该进行压缩,减小文件,同时小文件有利于网络传输。3D Tiles规范定义了点数据的压缩方案,可以使用了开源项目Draco进行压缩和解压。
Draco是Google开发的一个C++库,用于压缩和解压缩 3D 几何网格(geometric mesh)和点云(point cloud)。
Draco可以显著缩小 3D 图形文件的大小,同时对 3D 图形的观看者来说又不会严重影响视觉效果,经过Draco压缩的文件可以在网络上更快捷的传输。Draco还提供了JavaScript代码。
目前还没有找到开源的C#项目来实现Draco。经初步研究,要让C#与C++或JavaScript程序交互,大致可以采用三种方案:C++/CLI、JavaScript引擎、WebAssembly引擎。
一是使用C++/CLI,这是微软的一种技术手段,通过编写C++代码,在编译时增加 cli参数,让编译器把C++程序编译成可以在.Net平台运行的库,这样C#程序就可以直接引用dll文件编写程序。这种方法应该是最好的,但难度也是最高的,需要会C++编程,C#程序也有测定的编写规则。
二是使用JavaScript,这需要使用一些js引擎或调用nodejs程序,执行JavaScript代码,C#中通过接口调用压缩解压功能。
三是使用WebAssembly技术。WebAssembly是现代浏览器的一项技术,把C++或JavaScript代码转换为可以在浏览器中执行的字节码,让浏览器直接执行。目前有相关的C#开源项目,可以直接执行wasm文件,不需要在浏览器中执行。因此,可以利用相关引擎执行draco的wasm文件,调用接口实现数据压缩和解压。
揭榜挂帅题目:3D Tiles点云数据的压缩和解压
本次揭榜挂帅的目标是实现点云数据压缩和解压功能,要求如下:
1、可以使用前述三种方案的任意一种实现;
2、要能够在.Net框架下运行,可以CesiumSharp使用,实现点云数据压缩和解压。
CesiumSharp项目是数字孪生城市实验室发起的一个开源项目,目的是为数字孪生城市提供基础支撑,重点是3D Tiles数据的解析与创建。
项目地址:https://openii.cn/digitalcity/cesiumsharp
资助资金:500-1000元
评论