上周数字孪生城市开发团队继续推进点云数据压缩问题,确定了使用JavaScript引擎,执行Draco项目的js代码对点云数据进行压缩。部分团队参与了“揭榜挂帅”的活动,在此表示感谢。
通过Jering.Javascript.NodeJS,我们可以从C#在NodeJS中调用Javascript。使用此功能,可以在C#项目使用Node.js-javascript库和脚本。Draco项目提供了javascript代码,只要我们编写的压缩功能可以用node.js执行,就可以确保在C#中获得点云压缩数据。
Draco能够处理的3D模型数据有两种,分别是点云和Mesh数据,我们需要按指定的格式把数据传递给压缩程序。
一个3D模型文件,一般包含顶点、面、材质、动画等各种引擎渲染所需要的信息。ply文件格式只包含顶点信息,而obj文件包含顶点信息和面的信息。这两者的联系如图所示:
顶点信息就是该点的物体坐标、法线向量、纹理坐标等,如果绑定了骨骼,还有各块骨骼的权重。
面的信息指怎么由顶点围成面,它是一系列顶点索引的集合。如 f1: 0,1,2 表示由 x0, x1, x2 三个点围成一个面。
因此,点云数据压缩问题转换为应该点云数据如何组织并送给js程序的问题。
揭榜挂帅题目:使用JavaScript对点云数据压缩和解压
本周的揭榜挂帅继续关注点云压缩和解压功能的实现,要求如下:
1、实现C#程序中调用Draco的JavaScript代码。
2、点云数据的压缩和解压,关键问题是点数据的内容和组织方式
3、Mesh数据的压缩和解压
CesiumSharp项目是数字孪生城市实验室发起的一个开源项目,目的是为数字孪生城市提供基础支撑,重点是3D Tiles数据的解析与创建。
项目地址:https://openii.cn/digitalcity/cesiumsharp
评论