代数拓扑, 几何与UE游戏开发的那些事(2024版)


自参加工作学习代数拓扑以来, 自己尝试做过一些将代数拓扑, 几何与UE游戏开发结合的微小工作. 本文总结了截至2024年底的相关工作要点, 其中, 有一部分还处在”新建文件夹” 的状态ε=ε=ε=┏(゜ロ゜;)┛

参考材料
1. 顶级数学家有多厉害?
2. 如果我们不是生活在R^3里,而是生活在RP^3或者其他3维流形里面,会有什么不同呢?

1. Mesh与子Mesh

$\cdot$ 模型拆分: 灵感来源于Nanite中Mesh Cluster的生成, 每一个Cluster的面数基本上是一致的. 腾讯光子的Apex Legends Mobile也采用了类似的技术(腾讯光子陈玉钢谈《Apex Legends Mobile》渲染优化实践).

2. Mesh与LOD

$\cdot$ LOD生成: 根据论文Hoppe H. New quadric metric for simplifying meshes with appearance attributes[C]//Proceedings Visualization’99 (Cat. No. 99CB37067). IEEE, 1999: 59-510.实现了一套自动减面算法. 与UE自带的自动减面算法相比, 优势在于可保持几何轮廓, 且可防止减面结果中出现小三角形.

$\cdot$ LOD Group: 根据Mesh的亏格自动计算LOD Group, 这亦是近两年比较满意的工作之一. 详细内容可参考Auto LOD Group, 基于二维单纯复形分类定理的Auto LOD Group改进. 《数字图像的计算几何、拓扑和物理及其应用》这本书也为这部分研究提供了更进一步的理论依据.

3. Mesh与代理体

$\cdot$ 软件遮挡剔除: 将UE4上的软件遮挡剔除迁移至UE5, 最核心的步骤便是为Mesh生成代理遮挡体, 从而替代Mesh参与遮挡剔除流程. 其中, 利用Mesh SDF进行Ray Marching, 得到重建后的Mesh表面网格, 在较高的体素精度下, 该算法可以较好地保持Mesh的几何轮廓与拓扑特征.

$\cdot$ Shadow Proxy: 在软件遮挡剔除中所使用的代理遮挡体, 亦可用于Shadow的投射上, 从而减少Shadow Depth Pass的Draw Call与面数.

$\cdot$ 物理碰撞: 制作用于物理碰撞的代理体仅需要考虑保持Mesh的拓扑特征即可(尤其是亏格), 这部分工作目前还未展开, 考虑参考Lumen中Mesh Cards的生成.

4. Mesh与其它Mesh

$\cdot$ 基于自适应的K-Means算法聚类: 利用手肘法确定$K$值, 将若干个距离相近且Bounding Box大小相近的Meshes聚为一类. 经聚类后的Meshes, 可用于生成Instaced Static Mesh Component, 合并的Mesh或合并的Shadow Proxy.

$\cdot$ 匹配去重: 建立Mesh资产库, 用于训练Mesh分类的神经网络; 导入新Mesh进入UE编辑器时, 利用训练的神经网络得到Mesh的类别, 再在资产库对应的类别下通过持续同调或Mesh Git算法查找是否已有相似的Mesh(拓扑结构与几何尺度上), 从而减少游戏开发过程中所使用的Mesh种类.

5. 游戏世界

$\cdot$ HLOD: UE的HLOD模块相对来说还是比较完善的, 目前已知缺失的HLOD模块为用于植被的Impostor HLOD. 一个思路是利用持续同调捕获远景的特征, 并将远景重建出来.

$\cdot$ 性能热力曲线: 三维空间和纽结有非常直接的联系, 从三维空间挖出来一个实心圆环, 然后打个结再粘回去(Dehn手术), 整个空间就不一样了. 双曲几何大师Thurston关于纽结理论的工作, 能将大多数三维空间做出分类. 因此, 在游戏世界中将玩家的移动轨迹转化为曲线(附带性能数据), 是探究游戏世界分类的有趣且有用的工具.

$\cdot$ 室内Volumes生成: 想法来源于参考材料2, 如果我们不是生活在$\mathbb{R}^3$里, 而是生活在$\mathbb{RP}^3$或者其它3维流形里面, 会有什么不同呢? 如果我们假设这个流形可以嵌入到$\mathbb{R}^n$中, 而我们感觉到的度量是嵌入到高维空间诱导的度量, 我们是否能分辨出来所处的空间并不是$\mathbb{R}^3$而是一个与其不同胚的3维流形? 如果这个流形是紧致的, 情况又会如何呢? 这是一个十分有趣且深刻的问题, 回到游戏开发上, 根据当前所在的位置识别所处的空间(如室内或室外), 可应用于许多场合, 如室内外Level Streaming, 室内外光照环境切换, 空间音频等. 在为游戏世界自动生成若干个室内Volumes后, 如何组织与管理这些Volumes, 亦为一个有趣且有挑战的研发工作.

$\cdot$ Actor密度分布分析: 将每个Actor视为一点, 利用持续同调分析整个游戏世界的Actor密度分布的拓扑特征.

$\cdot$ Significance Manager: 目前使用的Significance Manager会采取一定的策略对游戏世界的Actors进行Tick频率的调整, 后续工作可以考虑根据Actors的拓扑特征(对于StaticMeshActors, 可采用其LOD Group), 采用更具针对性的调整Tick频率的策略.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注