在上一期推文中,我们简要介绍了国产3A级大作游戏《黑神话:悟空》中应用的实时渲染技术,同时,还展示了RflySim工具链中基于Unreal Engine虚幻引擎开发的三维可视化显示软件—RflySim3D/UE5。它利用高逼真度的仿真技术,结合工具链集成开发的各种场景、模型和交互接口,使得用户能够快速开发出自定义的无人系统仿真环境。本期我们将重点解析一下该款游戏中另一个核心的关键技术—三维建模技术。
三维建模技术分类
三维建模技术随着不同行业应用需求的发展,根据不同的标准和依据可划分为多种类别,其中,按三维空间复杂度可分为:基于面模型、基于规则体元模型、基于不规则体元模型。
基于面元模型构模方法:边界表示法、线框表示法、小平米方法、扫描表示法等;
基于规则体元模型构模方法:实体几何构造法、规则块构模法、空间位置枚举法、八叉树表示法等;
基于不规则体元的模型构模方法:四面体表示法、三棱柱构模法、广义三棱柱构模法、不规则块体构模法等。
但在众多建模方法分类中通俗易懂的应属于按照原理分类:人工CAD(几何造型)建模、设备扫描点云数据建模、基于图形图像建模等几种方法。
人工CAD建模
人工CAD建模是使用软件创建三维模型的过程,常见的软件有3DMAX、CATIA、Maya、Rhino、Pro/E等。3DMAX、Maya、Rhino适合全流程建模和渲染,而CATIA、Pro/E更适合特定行业,如航空、汽车、工业设计等。这些软件通过基本几何元素和操作(如移动、旋转、拉伸等)来构建复杂模型,但这种建模需要专业知识,操作复杂、耗时长、成本高,且模型真实感可能不足。
RflySim工具链中大多数例程均是采用此类方式来实现虚实结合仿真,但对于较为复杂的场景构建一般是基于Unreal Engine引擎进行开发,用户可以购买虚幻商城中的场景作为自己的仿真,也可在UE中自行搭建不同的场景来进行仿真,对于模型的建模可使用上述CAD类软件进行建模。
设备扫描点云数据建模
设备扫描点云建模是一种利用三维扫描仪获取物体表面点云数据,并通过点云处理、网格化、修补和简化等步骤构建高精度三维模型的技术,具有操作简便、效率高、成本低和真实感强的优点,广泛应用于城市重建、文物修复和工业逆向工程等领域。《黑神话:悟空》中则是大量采用了本方式来扫描国内名胜古迹作为游戏中的场景或者人物。如下图所示,游戏中亢金龙形象就是来源于山西晋城府城玉皇庙中的二十八星宿殿内的亢金龙彩塑。
图片来源于网络
RflySim工具链同样支持该方式生成的场景导入到三维可视化显示软件(RflySim3D/RflySimUE5)中,但针对该方式存在的问题,如前期处理是需要进行占用较多计算机性能进行渲染,同时,扫描设备通常也是比较昂贵的,用户可使用部分手机(如IPhone 12 Pro及后期发的Pro系列)上集成的激光雷达LiDAR传感器来扫描用户所需的场景或者模型,将扫描后的模型导入Unreal Engine中进行二次加工处理,再烘焙导入三维可视化显示软件(RflySim3D/RflySimUE5)中,即可进行其它的相关工作开发,如下图所示。
图|实景
图|激光雷达
图|导入RflySim3D/RflySimUE5中
图形图像建模
图形图像建模是指利用采集到的图形图像数据,通过图形中的信息(纹理、轮廓、色彩、阴影光照等信息)完成三维建模。图形图像的三维建模技术受图像信息影响较大,尤其是对图像中光照信息要求比较苛刻。图形图像建模过程较比点云数据建模效率低,但优于人工CAD建模。图像图形建模真实度高、成本低,但是较比于设备扫描点云建模,图形图像建模过程中数据采集和数据处理比较繁琐。图形图像建模多应用于3D打印(3D展示相关)、影视媒体、广告制作、虚拟现实等领域。此类方法可以使用基于NeRF算法的衍生AI算法,最为常用是Luma AI,它是在原NeRF算法的基础上,做了很多改进和优化,对于小物件、人物、大风景等复杂场景,Luma AI 都能够精准还原,甚至还能还原光照环境等细节,支持自动调整焦距、视角和画面比例调整等功能。
同样,用户可将需要建模的物体或场景通过图片或视频的方式扫描出来,利用Luma AI 直接生成模型文件在Unreal Engine中进行二次加工处理,再烘焙导入三维可视化显示软件(RflySim3D/RflySimUE5)中,即可进行其他的相关工作开发。
RflySim工具链通过集成Unreal Engine虚幻引擎开发的三维可视化显示软件RflySim3D/UE5,利用高逼真度的仿真技术,结合了工具链集成开发的各种场景、模型和交互接口,使得用户能够快速开发出自定义的无人系统仿真环境。支持人工CAD建模、设备扫描点云数据建模和图形图像建模等多种建模方式,具有操作简便、效率高、成本低和真实感强的优点,广泛应用于城市重建、文物修复、工业逆向工程等领域,同时支持将扫描或建模后的场景和模型导入Unreal Engine进行二次加工处理,再导入三维可视化显示软件中,极大地提高了开发效率和仿真的真实度。