3D直播的技术基石--实时网格生成技术(上篇)

时间:2024-06-01 09:44:22

引言

3D直播的技术基石--实时网格生成技术(上篇)
现今的“3D直播”一般指的是在VR中直播360度全景视频,不能算真正的3D直播,其原理是多个2D镜头多角度拍摄后拼接出来的全景图片,在VR空间中渲染出一个圆球型,然后把全景图片贴到圆面上去,所以全景视频缺失了深度信息,本质上还是记录单一的平面图像,如上图。

3D直播的技术基石--实时网格生成技术(上篇)
全景视频是VR产业发展过程中的一个过渡阶段,它是现有技术的瓶颈和成本的妥协结果,技术上,真正的3D直播还存在一些瓶颈和不足,成本也很昂贵。那带有深度信息的3D直播,或者说,3D视频技术的未来会是什么样的呢?作为3D感知领域的开拓者,MantisVision的解决方案是什么呢?且听笔者一一道来。

3D直播的技术基石--实时网格生成技术(上篇)

3D信息的两种展示形式

通常的3D信息有两种展示形态:点云(Point Cloud)和网格(Mesh)。点云中一般包含了三种信息:顶点(Vertex),颜色(Color)和法向量(Normal),简单来说就是空间中存在的一些点,顶点表示其在空间中的位置,法向量表示其朝向。网格相比较点云,一般会多了两个维度的信息:面片索引(Face index)和贴图坐标(Texture Coord),面片索引用是用来表述哪几个点连起来是一个面,贴图坐标是帮助渲染器在原始贴图中寻找对应的位置关系。

3D直播的技术基石--实时网格生成技术(上篇)
所以,点云相比于网格,缺少的是面片和贴图信息,我们把从点云生成网格的过程叫做表面重建(Surface reconstruction)。在视觉上,网格的展示效果显然是比点云要好很多的(如下图),通常在3D游戏中所看到的几乎所有模型都是网格化的。那这种网格模型是怎么来的呢?传统的方法,是建模师使用专业的建模软件手工制作的,如:3ds Max和Maya等。通常非常消耗时间和精力,单个精细模型的制作周期可达两到三周,而如今,基于结构光的3D传感器让这个制作过程降至几个小时。在这里不得不提一下我们MantisVision的F6手持扫描设备和3D演播室,两者都可以实时获取高分辨率和高精准度的点云数据,实时传输帧率可达30fps。通过3D镜头取得点云后,使用经典的泊松重建算法可以在几分钟内补全面片和贴图信息,后期只需要人工稍稍精修一下即可,整体上大幅降低了时间成本,和人力成本,缩短项目周期,帮助企业降低成本,提高利润率。
3D直播的技术基石--实时网格生成技术(上篇)
下图是一个简单的系统架构图,描述了网格生成的两种方案,第一种是实时的从3D镜头获取点云信息,然后使用经典的网格生成算法:泊松重建,来完成点云到网格的生成。第二种就是从3D镜头实时输出深度图,之后借助GPU和新的重建算法来实时生成网格,这就是MantisVison的实时网格生成方案。接下来,让我们先回顾一下经典的表面重建算法之一:泊松重建,讨论其优缺点。

3D直播的技术基石--实时网格生成技术(上篇)

经典算法:泊松重建

学术上一般把表面重建算法分为两类:(1)组合法,如:Voronoi Diagrams,Delaunay Triangulations,这类方法的弱点是,生成网格后的表面有锯齿,需要额外的平滑滤波算法改进网格。(2)拟合法,如:基于快速傅里叶变换的重建算法(FFT),泊松重建算法(Possion Reconstruction)[1],泊松算法于2006年由Kazhdan等人提出,算法的核心思想如下:数学上,任意空间曲面都可以用函数来表达,这里称为指示函数(Indicator function),指示函数是指每一段空间中,我们用指示函数来定义和区分几何体的内外,几何体内部的值大于1,外部值小于0,那剩下等于0的部分其实就是目标模型的表面(如下图左二),指示函数方程建立后,可以通过构造隐函数来拟合指示函数,而拟合方程最终又可以变换成求解泊松方程的形式,进而给出一个平滑表面的估计值,最终通过提取算法Marching Cubes从估计值中提取表面。具体的算法细节可以参考这篇博文(数学公式预警),同时附上原作者的代码实现。

3D直播的技术基石--实时网格生成技术(上篇)
接下来,总结一下泊松重建的优缺点:

优点:

  1. 算法对于水密性(Watertight)点云的重建效果非常好,水密性是指点云所表达的模型是否为闭合的。

  2. 重建出的模型能较好还原表面细节(如下图),使用了法向量重建,导致不会出现同类算法中出现的锐度消减的情况。

3D直播的技术基石--实时网格生成技术(上篇)

缺点:

  1. 重建时长随点云的大小增加而超线性增加,所以越精细的模型包含的点越多,计算时间就越长,无法做到实时重建。

  2. 对于非水密性(Non-watertight)点云的重建效果不好,会有多余面片,这也是算法未来的改进方向,但是至今没有很好的解决方法。

3D直播的技术基石--实时网格生成技术(上篇)

小结

传统算法在经过几年的优化和计算机算力的提升后,算法效率比最初版本提升了近4倍,已经可以做到在几分钟内实现单帧点云到网格的重建,但是如果要实现每秒动辄20到30帧的实时网格生成需求,除非是CPU算力有一个跨时代的提升,否则几乎无法做到。所以,在抛开传统思路,借助GPU的多核并行运算的算力优势,配合最新的算法,MantisVision在今年首次实现了实时网格的生成和传输,预计于2019年Q1-Q2发布正式版本,具体的技术细节我们会在《3D直播的技术基石–实时网格生成技术(下篇)》中给大家继续详细解读,期待大家到时阅读。

参考文献

[1] Kazhdan, Michael, Matthew Bolitho, and Hugues Hoppe. “Poisson surface reconstruction.” Proceedings of the fourth Eurographics symposium on Geometry processing. Vol. 7. 2006.

[2] https://www.cnblogs.com/luyb/p/5730932.html

[3] https://adastaybrave.com/%E8%AE%BA%E6%96%87%E7%A0%94%E8%AF%BB/2018/07/12/%E5%92%8C%E6%88%91%E8%BF%99%E4%B8%AA%E6%99%AE%E9%80%9A%E4%BA%BA%E7%9C%8B%E4%B8%80%E4%B8%8B%E6%B3%8A%E6%9D%BE%E9%87%8D%E5%BB%BA/

[4] https://blog.****.net/coldplayplay/article/details/78230614