刘继业 2021-07-19发布 阅读:1403次 ⋅ 揭榜挂帅   ⋅

上周数字孪生城市开发团队完成了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元

评论

您不能发表评论,可能是以下原因
1、登录后才能评论
2、作者关闭了评论