图形学高被引论文赏析系列1:Geometry Images

Unreal5的高分辨率三角网格实时渲染功能Nanite,相信给大家带来了足够的震撼。那么其背后的技术是什么呢?经过多方考证,就是Geometry Images(几何图像)。本文就来和大家一同探索一下该项技术到底是一项什么样的技术,都能应用在哪些方面。

1. 作者介绍

Geometry Images:Gu X, Gortler S J, Hoppe H. Geometry images[C]. Proceedings of the 29th annual conference on Computer graphics and interactive techniques. 2002: 355-361.

该文第一作者为石溪大学的顾险峰老师,合作者为哈佛的Steven J. Gorler和微软的Hugues Hoppe. 顾老师师从丘成桐教授,其在离散微分几何与图形学交叉研究领域享有盛誉。其在2002年左右发表的共形几何系列文章,解决了具有复杂拓扑结构的三维模型共形映射的问题,在纹理映射,形状配准,三维人脸识别,医学影像处理等领域均有成功的应用。Hoppe老师的大名更是如雷贯耳,其比较著名的工作包括Poisson重建及其升级版本(Screen Poisson), 网格测地线计算,各种曲面映射与网格平滑等工作。这篇文章的三位作者都是做曲面参数化的顶级高手,由此可见,Geometry Images一定是与曲面参数化有重要关联的一项技术。那么接下来,我们将以这样一种视角,来阅读一下这篇文章,以了解该文和曲面参数化技术有什么样的关系,以及该文到底解决了什么问题。

2. 文章摘要

该文在摘要部分把目标问题描述的很小,即解决传统网格重建方法的一些局限问题,提出在一个规范结构(即几何图像)实现网格重建。在几何图像上,法线与颜色被存储在一个二维的数组中。这样就能够用传统的图像压缩方法实现对几何特征的压缩与编辑,进而实现对三维网格的处理。

从问题描述上看,几何图像技术就是通过参数化方法实现一种对网格数据的规范表示,并实现对网格的重建。这和我们第一开始的猜测是一致的,即几何图像就是一种参数化方法,用以实现对网格数据的重建。那么该技术为什么会被Unreal5的工程技术人员所采用,并建立出如此功能强大的网格渲染系统呢?这项技术真正的优点是什么?接下来,我们将深入的了解几何图像实现细节。

3. 技术难题

在描述方法的具体实现细节之前,我们需要先了解该项技术需要解决的一些技术难题。我们已经知道,几何图像就是通过参数化方法将网格变换为一个二维的标准结构,进而实现对网格的各种操作。这个过程,需要攻克的技术难题包括:

  • 要寻找到一种裁剪方式,以把网格裁切为一个拓扑圆盘;
  • 几何图像的边缘必须严格匹配到对应网格的裁剪边界,否则会产生裂缝;
  • 参数化对应的点分布必须是均匀的;
  • 在对几何图像进行压缩时,需要处理好裁剪边界的撕裂。

以上问题,其实基本可以对应于一个具有任意拓扑结构的三维模型到一个拓扑圆盘的拟共形参数化问题。参数化确实是图形学里一个比较难的问题,笔者也只是了解一点皮毛,对于一些背后的更深层次的知识也是一知半解。但是可以知道的是,参数化就是将三维网格中的点与面的关系,映射到一个二维的参数域中,这里就是指几何图像。对几何图像进行编辑是方便的,编解码或者重构,都很容易操作。神奇的是,因为参数化获得的几何图像与原来的三维模型有紧密的关系,那么在图像上的操作,将反映在三维模型上。那么,这个操作模式就变成:直接在三维模型编辑网格很难,但是将三维模型通过参数化变成几何图像,然后在几何图像上编辑网格很容易,编辑完后在映射回原始的三维模型,从而实现原本很难的三维模型网格编辑。

回想下我第一开始在作者介绍里说的,顾老师最厉害的工作是解决了具有复杂拓扑结构的三维模型共形映射的问题。这里的重点是复杂拓扑结构。要想对具有复杂拓扑结构的三维模型进行参数化,是非常困难的,比如克莱因瓶和莫比乌斯环。如果你了解拓扑学,就该知道如果需要对复杂拓扑结构进行编辑,需要找到一个合适的裁切。这个裁切需要利用到代数拓扑的一些数学工具。如果读者觉得对上述概念理解比较吃力,也没有关系,我们以最朴素的对参数化的理解,来看技术实现。

4. 技术实现细节

考虑到很多人没有离散微分几何与代数拓扑的知识背景,我将用最直白的方式来描述论文中的一些技术细节,并忽略一些晦涩难懂的概念。该方法的具体实现,主要由两部分组成,即生成裁切边界和实现参数化。

4.1 生成裁切边界

生成裁切边界就是要想办法找到一种裁切三维物体的方法,使得将三维物体映射到几何图像上,同时使得原始的点与边的关系得以保存。这就像是把一个结构非常复杂的物体,通过拉伸,拉成一个规整的面。如果在原来的物体中有一个图案,我们希望拉伸后,这个图案因为拉伸产生的畸变还要尽可能的小。因为结构上的原因,不是所有的物体都能够直接拉伸为一个规整的面,就好像是一条混在一起的绳子,你是没办法拖过拉伸把它抻直。肆意拉扯,会产生绳结,导致拉伸失败。一个办法就是用剪刀剪开一些缺口,这样在拉伸,就能够拉直了。生成裁切边界就是要找到这样一种剪切办法。

几何图像所介绍的裁切方法,是一个由粗到细的方法。即首先先初始化一个裁切,然后基于此裁切,不断的增加新的裁切,直到满足某种条件,并输出最终的裁切。初始化的裁切生成方法见[1]. 起始状态是包含所有的网格边界和一个初始化的去掉的三角面片,在此基础上,生成初始裁切路径,具体包含两步:1. 重复确定与初始化去掉的三角形相邻的点和边,并删除,以扩展裁切,沿着测地线方向进行,以获得最短半径 (结束后,所有的面被剔除,已完成一次遍历,参考[2]);2.类似第一步,重复定位一个点和与之相邻的边,并删除点和边,并最终实现完全遍历。这里我没有理解为什么要去做遍历,不过可以知道的是,这与拓扑结构分析有关。

在初始裁切的基础上,算法迭代地更新裁切。根据经验可知,比较高的裁切路径应该是沿着曲率变化较大的极值点(extremal point)来划分的,比如手指。但是,我们不能根据曲率计算来获得这些点,因为曲率值在网格中的分布过于广泛。取而代之,几何图像采用了一个比较复杂的方法,即通过[3]和当前的裁切,来获得一个参数化结果,在参数化结果中找到一个畸变比较严重的位置,设置为极值点。以该点作为起点,计算其到当前裁切的最短路径,并将该路径加入到旧的裁切,以实现对裁切的更新,其具体步骤见图1。通过对裁切的更新,以实现对参数化畸变的优化。

图一,裁切更新示意图。a-d为裁切更新的步骤,e为最后的几何图像结果。 

4.2 参数化

基于上一步获得的裁切,算法能够将三维模型映射到一个规整的参数域中,进而得到结合图像,如图1e所示。参数化的方法为hierarchical optimization algorithm,详情见[4]。基本步骤为,首先,网格内部被简化为一个累进网格表示形式[5]。然后,在累进网格表示中实现顶点分离,以细化网格。对于每一个新插入的顶点,我们优化新点的邻域以减小畸变。

这里需要注意的是,对于裁切路径的对准,是有单独一套规则的,包括避免几何图像四个角点的对应关系,以及边的对准关系。详情在论文有介绍,这里不再讨论。

5. 应用

当完成了几何图像的建立,理论上三维模型的基本编辑操作,都可以再集合图像中完成。论文中介绍的两个应用为Rendering和Compression。通过建立几何图像与纹理图像的对应关系,纹理能够被非常轻松的映射到三角面片,且非常易于编辑。通过压缩几何图像,对应的可以实现对网格数据的压缩,如图2所示。

 

图二,多重分辨率几何图像贴图。 

 6. 写在最后

读完该文,十分赞叹几位作者在参数化领域极深入的见解和极为扎实的算法整合能力。很多技术实现的细节,其实我还是不太明白。如几何图像建立之后,是不是按照图像中的像素位置,网格自动的就被重建了?这种重建是否是isotropic的,或者可以通过简单的方式使之成为isotropic的?参数化是图形学里一个非常难的方向,需要很多数学的背景知识。该文发表在2002年的Siggraph上,直到2020年,才在Unreal5的工程实践中得以应用,可见一项技术从研发到落地,其过程是多么艰辛。

参考文献

[1] T.K. DEY, H. SCHIPPER. A new technique to compute polygonal schema for 2-manifolds with application to null-homotopy detection. Discrete and Computational Geometry 14 (1995), 93–110.

[2] G. Taubin, J. Rossignac. Geometric compression through topological surgery[J]. ACM Transactions on Graphics (TOG), 1998, 17(2): 84-115.

[3] M. FLOATER. Parametrization and smooth approximation of surface triangulations. CAGD 14, 3 (1997), 231–250.

[4] P. SANDER, et al. Signal Specialized Parametrization. Microsoft Research MSR-TR-2002-27(January 2002).

[5] H. HOPPE. Progressive Meshes. In SIGGRAPH 96, pp. 99–108

Guess you like

Origin blog.csdn.net/aliexken/article/details/119750733