专栏首页新智元虚幻引擎5技术解析:几何图像的思想

虚幻引擎5技术解析:几何图像的思想

新智元推荐

编辑:元子

【新智元导读】2020年5月13日,Epic Game揭开了虚幻引擎5的神秘面纱,该公司发布的演示视频惊艳了全球游戏业。虚幻引擎5的强大性能彻底地征服了计算机图形学领域的学术同行和广大玩家。这次技术飞跃使得游戏中的实时细节渲染更加逼近电影CG效果和真实的物理世界。

Lumen in the Land of Nanite,在PlayStation 5上运行的实时演示.

2020年5月13日,Epic Game揭开了虚幻引擎5的神秘面纱,该公司发布的演示视频惊艳了全球游戏业。虚幻引擎5的强大性能彻底地征服了计算机图形学领域的学术同行和广大玩家。这次技术飞跃使得游戏中的实时细节渲染更加逼近电影CG效果和真实的物理世界。

虚幻引擎5具备两大全新核心技术:Nanite虚拟微多边形几何技术和Lumen动态全局光照技术。Nanite虚拟几何技术的出现意味着由数以亿计的多边形组成的影视级艺术作品可以被直接导入虚幻引擎,Nanite几何体可以被实时流送和缩放,因此无需再考虑多边形数量预算、多边形内存预算或绘制次数预算了;也不用再将细节烘焙到法线贴图或手动编辑细节层次(LOD),这必定是图形学领域革命性的飞跃。如图1所示,演示中每个武士雕像都有3300万个多边形,其几何细节精雕细琢得无以复加,其逼真程度令人叹为观止!

图1. 每个雕像具有3300万个多边形。

传统方法

传统的计算机图形学技术中,三维几何形状用所谓的三角网格来表示。我们在曲面上稠密采样,然后将采样点三角剖分,记录下三角网格的组合结构信息,同时记录下所有顶点的三维位置信息,我们由此来表达曲面形状。相比于图像,三角网格的组合结构通常是不规则的,我们无法通过每个顶点的序号来预测顶点所在的区域。这种不规则性,使得三角网格无法直接用硬件表达和随机存取;在几何处理软件中,三角网格的数据结构需要大量的指针,需要复杂精巧的算法来处理。

图2. 曲面形状由三角网格数据结构来表达。

曲面几何的细节由三角面片来表达,给定同样的原始曲面,粗糙的几何需要较低的采样率和较少的三角面片(低模),精密的几何表示需要更高的采样率和更多的三角面片(高模)。低模提高了渲染速度,但是降低了画面质量;高解析度的三角网格降低渲染画面的帧率,但是提高了画面渲染质量。在游戏中,为了达到实时交互的速度,根据人物距离镜头的远见,视角方向,我们可以动态选择不同精密程度的三角网格。低模和高模可以用统一的数据格式来表示,动态改变解析度,这一几何表示被称为是LOD(Level Of Detail)表示,由Hughes Hoppe所发明,目前普遍用于游戏引擎之中。图3显示了同一张老人脸的不同层次的几何表示。

图3. 曲面的细节层次(LOD)表示。

曲面的形状不足以表达几何体的所有信息,我们需要曲面的颜色信息,材料信息(例如金属质感)、粗糙程度、光学特性等信息。这些信息往往存储在所谓的纹理图像之中,每个像素对应曲面上一个点,像素值代表了对应点处的颜色、材料、光学性质等信息。这些图像被称作纹理图像,纹理图像和曲面之间的映射被称为是曲面的参数化。将纹理图像贴敷到曲面上的过程被称为是纹理贴图。图3显示了纹理贴图的实例。第一行是只有几何、没有纹理的“白模”;中间行是两张不同的纹理图像;下面一行是不同纹理贴图的渲染效果。

图3. 曲面纹理贴图。

纹理图像也可用于表达其他信息,例如法向量贴图。如图4所示,我们将怪兽模型参数化到平面圆盘,然后将曲面上每一点的法向量存在相应的纹理像素中,我们用红绿蓝颜色来表示法向量的坐标,如此得到了法向量纹理图。我们用高模来生成法向量纹理图,然后将其贴在低模上。渲染的质量取决于法向量的精密程度,而渲染速度依赖于三角面片的个数。一方面,我们希望提高法向量的精密程度,另一方面我们希望减少三角面片的个数,如此低模配上高模生成的法向量纹理图是一个巧妙的解决方案。

图4. 由最优传输映射得到的法向量贴图。

将高模生成的法向量纹理严丝合缝地贴到低模上,需要建立高模和低模之间的映射,如图5所示,我们在三维空间中将高模和低模尽量对齐,然后将低模向高模投影,每个低模顶点找到高模曲面上的最近点,从而建立映射。这一过程被称为是所谓的“烘焙”。

图4. 烘焙过程。

我们看到传统方法中的几何压缩、建立LOD表示,法向贴图,烘焙,核心都是为了提高渲染质量,提高渲染速度。这些传统技术依赖于微分几何原理,需要复杂的算法来实现。而Nanite的虚拟微多边形几何技术使得这些技术都过时了,可谓石破天惊,一骑绝尘!

Nanite 几何图像方法

那么,Nanite的虚拟微多边形几何技术究竟高明在哪里?为什么一夜之间就可以摒弃人们数十年来积累的技术?很多计算机图形学领域的专家分析,Nanite的几何技术很有可能是基于老顾18年前与Gortler 教授、Hughes Hoppe合作的SIGGRAPH论文,“几何图像”【1】。

如上讨论,我们看到在图形学中有两种主要的数据结构:表示几何的不规则三角网格和表示纹理的规则图像。为了处理这两种迥然不同的数据,图形处理单元(GPU)硬件中设置了两条流水线,一条用于处理三角网格,另外一条用于出来纹理图像。老顾当时的想法是将两种数据结构统一成纹理图像,从而抛弃三角网格的流水线,由纹理图像的流水线处理几何与纹理数据,从而简化GPU的硬件设计,提高渲染速度。

图5. 曲面共形参数化。

图6. 大卫王头像的几何图像(左帧)与法向纹理图(右帧)。

图5和图6显示了将三角网格转换成几何图像的计算过程。首先,我们将三角网格参数化,映射到平面长方形区域,尽量减小畸变;然后,我们在平面上重新采样,将几何位置和法向量信息记录在图像的相应像素处,用红绿蓝来编码。由图6,我们可以看到,几何图像比法向纹理光滑很多。

图7. 几何图像到三维曲面的转换(MIPMAP)。

几何图像包含了三维曲面的全部几何信息,自然可以被渲染成曲面。当然,实际应用中,我们也可以将高模曲面相对于低模曲面的位移也表示成几何图像,达到浮雕效果。总而言之,我们用图像的数据结构来统一几何和纹理,每个曲面模型都表示成几张巨大的纹理图像。例如Nanite技术中的曲面包含几何图像、颜色纹理、金属材质纹理、光学特性等几张纹理。这种规则的表示方法具有很多优点,例如渲染过程中可以动态决定解析率(mipmap pyramid),可以动态细分加密(subdivision),动态生成纹理,例如存储全局光照的中间计算结果等等。特别是,几何图像的格式,使得内存访问模式更加有规律,更加容易预测,从而提高内存访问效率,极大地提高了数据调度的速度。

那么,为什么18年前GPU没有采用几何图像的技术路线呢?老顾觉得一个重要原因在于那时候曲面参数化技术还没有出现,从三角网格到几何图像的转换非常困难。现在,由于计算共形几何的理论和算法成熟,计算最优传输映射也接近成熟,曲面参数化的问题不再是瓶颈。

展望

从2002年至今,几何图像这篇文章在图形学领域广泛传播,专家学者同行们进行了大量的后继研究,引用数目上千。无数的学者和工程师们耗费多年的心血,全面改进了技术,推动了这一领域的发展,日积月累,终于一鸣惊人。如果几何图像被工业界广泛接受,那么全局参数化、基于几何图像的渲染、基于几何图像的硬件设计会吸引人们更多的注意。相应的,微分几何理论基础将会成为图形学领域的必修课程之一。在未来,我们期待基础数学更加深刻的应用,图形学领域更多革命性的成果涌现!

本文分享自微信公众号 - 新智元(AI_era)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • UC伯克利Kazerooni:十年磨一剑,揭秘智能控制可穿戴外骨骼技术(127 PPT)

    【新智元导读】加州大学伯克利分校机器人和人体工程学实验室主任、SuitX的创始人 Homayoon Kazerooni 在 AI World 2017世界人工智...

    新智元
  • Facebook AI发布Pytorch 1.0最新教程(附108页PDF下载)

    近日,来自Facebook AI 的Dmytro Dzhulgakov为我们带来了pytorch 1.0的最新演讲,旨在帮助大家快速理解pytorch的新特性,...

    新智元
  • 解决关系推理,从图网络入手!DeepMind图网络库开源了!

    DeepMind提出的简单而强大的关系推理网络“graph network”终于开源了!

    新智元
  • 【BZOJ 1701】Cow School(斜率优化/动态凸包/分治优化)

    小牛参加了n个测试,第i个测试满分是??pi,它的得分是??ti。老师去掉??/??ti/pi最小的d个测试,将剩下的总得分/总满分作为小牛的得分。小牛想知道多...

    饶文津
  • C语言——小学题目B卷解析(终)

    第6题,简单说明:系统有默认的转化规则,就是从精度底的转化为精度高的,避免计算时精度的丢失。coding一下:

    Ed_Frey
  • 挑战程序竞赛系列(8):2.1一往直前!贪心法(其他)

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    用户1147447
  • BZOJ3498: PA2009 Cakes(三元环)

    如果\(v\)的度数\(\leqslant M\),那么就再暴力枚举\(v\)连出去的点\(t\),看\(u\)与\(t\)是否联通(打标记)

    attack
  • 洛谷P2831 愤怒的小鸟(状压dp)

    直接状压dp一下,\(f[sta]\)表示干掉\(sta\)这个集合里面的鸟的最小操作数

    attack
  • 算法导论中的四种基本排序

                                                            by方阳

    努力努力再努力F
  • 多益网络2016春季实习校招笔试回顾(C++游戏后台开发)

    2016.04.16晚中山大学大学城校区(东校区)参加了多益网络的C++游戏后台开发的笔试。有几道笔试题还是值得斟酌和记录的,特记录如下。比较可惜,因为回老家了...

    Dabelv

扫码关注云+社区

领取腾讯云代金券