点击上方蓝字
CG世界
关注我们
“ 感知技术 · 感触CG · 感受艺术 · 感悟心灵 ”
中国很有影响力影视特效CG动画领域自媒体
《黑神话:悟空》的大火,让它背后功臣之一的UE5狠狠刷了一波存在感(虽然之前就已经充满存在感
)。
眼看着UE5势头越来越旺,隔壁的Unity坐不住了。这不,在不久前的Unite2024大会上,拉出了自家最新版本游戏引擎Unity6来炸场。
整场大会干货满满,最炸裂的极大场面之一,就是Unity6的技术能力展示。一段名为《
Time Ghost
》的4分钟短片,呈现的是一名貌似从蒸汽朋克风格的一战战壕中逃脱出来的士兵,在一个看起来巨大且空旷的山地中探险的情景。
《Time Ghost》是由
《铁匠》、《亚当》、《死亡之书》、《叛教者》和《敌人》等项目背后的团队开发的最新 Unity 原创实时电影演示,
使用了Unity6早些时候发布的预览版中引入的一些新特性。
这段影片当天是实时运行在一个
GeForce RTX 4090显卡上,重点突出了Unity6在视觉质量、项目复杂度方面的进步以及机器学习工作流程的实际应用。
全方位展示了Unity 6引擎在光照、毛发处理以及大规模环境方面的强大实力。
除了展示这段名为《
Time Ghost
》的短片,当天幕后团队还从如何
创建大型环境、高保真视觉特效、灯光设计以及构建角色等几个大方面做了技术分享。
推广↓↓↓
废话不多说,赶快跟着编编一起来看下吧:
首先从地形生成开始,这里提到的地形,指主要的水平和垂直地标,也就是角色站立、奔跑、垂死或执行其他动作的地方,如山脉、巨石、甚至是洞穴等大的垂直元素。
这里使用了两种不同的方式进行地形创建:完全从零开始创造环境和基于现实世界地点建造环境。
第一种情况下,团队决定使用
Houdini
来从零开始建立地形,选择Houdini的原因是它不仅是一个地形生成工具,用户同时还能使用其中的任何其他工具。另外Houdini与Unity交互得很好,可以
在两者之间轻松切换,进行创作和修改,整个迭代无比灵活。
整个短片中,大约有一个半的环境是从零开始创建的。比如下面我们看到的非常平坦的战争场景环境,团队从零开始,创建了一个2*2公里的环境。首先确定环境中的主要建筑地标,加入一些地形变化以增加环境的层次感。然后将创建的地形导入Unity,继续进行微调。
在Unity中,团队会对地形进行基础的纹理测试,并通过摄像机检查效果。如果战壕的高度不对,就再进行调整,继续添加更多细节(如处理着色器),使用
Shader Graph
确保从近景到远景的视觉效果都令人满意。
确定了地形和基础纹理后,团队从资产库中选取适合环境的道具(如建筑物、车辆等)进行布置,继续不断通过摄像机视角检查效果。
最后一步,是散布植被、鹅卵石等小元素,增加环境的真实感,当然这一过程也是通过摄像机视角反复测试,确保视觉效果最佳。
而对于那些基于现实世界位置构建的环境,方法略有不同,但流程基本相似。首先选定一个适合故事发展的地方,然后带着无人机进行现场勘景,
用无人机进行摄影测量,通过软件处理分析无人机从不同角度拍摄的照片,获取真实世界地形的数据,以便创建更逼真的环境。
另一方面,团队还大量依赖于
LiDAR数据来创建地形,LiDAR数据提供了高精度的高度信息,这对于创建真实的地形至关重要。
每个环境块包含五千万个点,这样的大数据量使得处理起来非常困难。处理如此庞大数据集几乎不可能,为了简化处理,团队选择将数据“平面化”:存储每个点的高度信息,并重新投影成体素
(voxel)形式,以便更容易处理数据。在这一形势下,可以执行清理、修改数据等任何操作。
为确保数据可以在软件之间顺畅传输,团队建立了从Houdini到Unity的高效工作流,将处理后的体素(voxel)数据导入Unity的地形系统,直接在编辑器中进行进一步的调整和迭代。
在Unity中,团队可以通过放置摄像机来预览环境,并在此基础上进行迭代。还能够从点云数据中导出颜色信息、法线贴图等,用于增加地形的高频细节。同时使用拼贴图来增强纹理,或者用于散布等任务。
在创建虚拟环境时,可以根据项目的具体需求进行选择,无论是从零开始创建还是基于现实世界数据创建环境,关键是建立一个灵活且允许迭代的稳健工作流程。
另外的一大挑战是资产构建,团队没有使用任何在线资产库,从一片草叶到一块石头,再到一座山、一处悬崖,都是专门为了这个项目从零开始构建的。
摄影测量
:使用标准的
交叉极化设备来扫描小型到中型资产;
SpeedTree
:创建草、植物、树木和一般植被;
手工建模
:用于创建建筑物等非程序化资产。
处理完这些工作之后,导入Unity,根据环境分类(每个环境有一个资产库),
另外团队还建立了一个庞大的植被库,
方便艺术家在工作时可以快速选择资产使用。
团队使用了程序化建模工具
SpeedTree来创建了短片中的树木,将附带纹理的树木资产导入到
Unity,再用基于扫描的材质来增强树木的纹理。稍微远一点的背景树木,则可以
一键生成假象(imposters)资产。
最后,团队还制作了一个程序化工具来布置根系系统。
通过在地形上分布各种资产(如植被、岩石等),可以提升环境的真实感和生动性。
团队在Houdini中进行分布规则的设置,同时开发了一个用户界面,暴露了一些参数给用户,以便艺术家可以轻松调整资产分布规则。从Houdini导出含点信息的数据集,由于点云
(point cloud)数据非常轻量,可以轻松传入Unity。
在Unity中,每个点携带有关放置何种资产的信息,点云数据转换为实际资产,每个点包含资产应放置的位置及其属性信息。Unity
会根据点云数据在指定位置放置预置体,并转换为点实体。不仅提高了效率,还可以与风系统以及角色互动结合起来,使环境更具动态性。
具体示例如下,使用Houdini中的工具来分析环境,创建分布规则。自动生成遮罩,根据规则散布点云数据,当然也可以手动绘制遮罩。
至于植被资产,可以将相关信息输入到Houdini中,设置比例、旋转等变化来增加自然感。这里提供了如密度、聚类等多种控制选项(
但大多数时候保持简单的随机化设置),可以选择使用一个或多个散布系统来增加灵活性。
通过使用Unity的实例化功能,可以高效渲染许多相同资产的副本。
LOD(
Level of Detail)
系统,还能确保远处的资产以较低的细节级别渲染,减轻GPU的压力。
在创建短片中的战争场景时,团队使用了大量视效。
团队利用了Unity的VFX Graph和粒子系统,以及Houdini/Blender中的六向光照和Flipbooks等技术,创造了大量视觉效果。在增强场景真实性的同时,也注意到了性能的平衡。
地面模拟
:
RBD模拟:用于模拟刚体动力学,如地形破坏、建筑物倒塌等。
虚拟动画纹理:用于模拟动态效果,如燃烧的余烬、闪烁的火焰等。
爆炸效果
:
六向光照:虽然不是完全的体积光,但在调整和与光照互动方面表现良好。
Flipbooks:用于模拟火焰、烟雾组件。
点光源:添加在每个爆炸上,以控制爆炸的冲击波及互动光照。
碎片和脚印
:
粒子系统:用于模拟碎片喷射,如土壤、灰尘和鹅卵石飞散。
视觉效果图(VFX Graph):用于创建脚印,使角色与环境互动更加自然。
烟雾和雾气
:
视觉效果图、
Flipbooks
:用于模拟背景中的火焰。
其他次要视觉效果
:
RBD模拟:低分辨率模拟,但通过纹理和二级视觉效果(如碎片、尘土等)增强了真实感。
团队创建了多个可以随意调整和组合的子组件,虽然在短片中有些细节可能不是很容易被看到,但这些特效确实为增加最终画面的真实感做出了很大贡献。
在实时渲染的战争场景时,团队使用了自适应探针体积(APVs)以及其他照明技术来达到所需的视觉质量,同时保持实时性能。
1.
自适应探针体积(APVs):
在场景内多个点和方向采样照明环境(样本用于插值采样点间的照明),提供了一种近似全局光照的自然高效场景照明。
能够在性能和质量之间提供良好的平衡,同时允许在没有完整光线追踪
计算开销的情况下进行动态照明变化。
自动化的设置过程,只需要点击按钮,Unity就会完成配置;当自动设置不起作用,也可手动调节。
流式传输对性能友好,不需要额外的光照贴图、UBO或纹理。
2.屏幕空间反射(SSR):
SSR可以为特定反射表面提供反射,但在处理遮挡时表现不佳,缺乏APVs提供的全局光照效果。团队选择性地在某些反射表面使用了SSR,在不影响性能的情况下增强真实性。
主照明:
点光源
:用于爆炸等特定效果。
APVs
:用于模拟主光源引起的间接照明,增添场景的整体氛围和真实性。
交互式的照明设置,允许光照效果
随着场景中角色/物体等动态因素与环境的互动而实时调整,看起来更加真实自然。
在爆炸中的照明还要考虑到光和粒子的相互作用。爆炸中的粒子系统不仅要模拟碎片和烟雾,还需要与爆炸产生的光源互动。此外,爆炸发生时,动态生成的光照也需要与场景中的其他光源协调,以确保光照的一致性和自然性。这里团队还通过六向光照(
Hexagonal Light)来实现近似的体积效果,以增强爆炸的视觉冲击力。