目标
首先,我致力于打造一个独特且引人注目的作品,它应该是一个自然光线下的大自然外景。其次,我希望通过这个项目,将我多年来学习的各种技能和技巧融合到一个高效的工作流程中,以适应4K分辨率的实时渲染。但最重要的是,我想要挑战自我,测试我的极限,在艺术创作和项目管理方面,我能走多远,能实现什么。
软件
在渲染和材质创建方面,我选择了Unreal Engine 5,因为它在质量和性能上的卓越表现是向前迈出的自然之选。我使用3ds Max进行建模,并大量依赖修改器堆栈,以便快速调整模型。在Substance Painter中,我创建了网格遮罩,以便与Unreal的分层材质工作流程相匹配。
参考资料、灵感与叙事
最初,我很难找到一幅真正想要改编的概念艺术作品,但当我看到Michael Xu的艺术作品时,我知道那就是我想要创造的场景。我首先需要确认这一点,所以我收集了一些图片,并与同行讨论。我选择这幅作品,因为它包含了我在寻找的所有元素:独特的创意、室外场景、出色的构图,最重要的是,它看起来重建起来会非常有趣。某人发现一架坠毁的飞机并围绕它建造堡垒的想法真的吸引了我,或者这可能是坠机的幸存者?
如果你对尺度有敏锐的洞察力,你会注意到飞机比现实世界中的要大得多,这给人一种神秘感,我不想改变如此美丽的构图。
初步模型与建模
我开始进行初步模型制作,以匹配比例,并有一个大致的了解需要多少工作,形状看起来如何,尝试一些相机角度,看看结构如何与地形互动。我将这个过程分为两个步骤:首先是“预初步模型”,我只是进入Unreal并开始放置立方体并转换它们以获得正确的整体尺寸。当我对此满意后,我合并了整个东西并将其导出到Max中,在那里我开始实际的初步模型制作过程。此时,我想要决定我要创建什么,并找出需要多少工作。
雕刻与硬表面
在我之前的一些项目中,我一直在尝试不同的技术,使模型看起来更真实,尤其是建筑、木材、混凝土等。我从中学到的一件事是,没有什么是完全直的,总是有凸起或不规则的线条,我想要探索这一点,甚至夸大它。这就是Max的修改器堆栈最有用的的地方,我可以像平常一样建模各个部分,并在顶部以程序化的方式添加不规则性。例如,我有这个木梁,只是一个普通的立方体网格。我会添加一个噪声修改器,置换顶点,而我只需要在这里和那里添加一些边环,以创建非常不同和有趣的形状。在其上方,添加倒角修改器使我能够拥有圆角边缘而不改变几何体,同时还能使用面加权法线,最终,这些倒角仍然是轻的。
UV展开
在我开始UV展开之前,我已经想到了我想要有烘焙的网格遮罩来分隔我的材质层,这需要“独特”的UV(它们不能重叠,并且必须包含在0-1 UV空间内)。问题是,我想要我的材质层使用平铺纹理,而没有设定特定的Texel密度会使得保持一致的外观变得困难。我首先想到的是拥有两套UV,一套独特的和一套平铺的;但我很快放弃了这个想法,因为这比简单地调整每个材质实例的纹理平铺要耗时得多。最终,我没有对我的UV做任何特别的事情,只是常规的不重叠和0-1包含的,以便于遮罩烘焙。
烘焙
我想要尽快制作这些遮罩并导出一个文件。原因是,如果我不得不花费太多时间在这上面,那么使用这个工作流程就没有时间优势了;我使用的文件越多,制作Unreal中的纹理就没有那么多好处。
我避免了为每个通道设定特定的目的(例如红色代表污垢,蓝色代表锈迹等),而是专注于那种表面需要艺术指导的细节,根据具体情况设置材质。
例如,木材材质,大多数都有一个用于刮掉的边缘的通道,一个用于污垢的通道,以及一个用于积累沙子的通道。对于这些,我按顺序使用了凸度遮罩、AO + 凹度遮罩和向上向量遮罩。
但更复杂的材质,如飞机机身,使用了所有RGBA通道。这个和其他一些特殊情况还使用了一个独特的法线贴图,不是从高多边形烘焙的,只是用一些非常特定的东西进行艺术指导。
机身材质使用了一个通道用于通用的扭曲金属,一个通道用于污渍,一个通道用于锈迹,最后还有一个用于螺栓和划痕。
我将烘焙的贴图,如环境光遮蔽和曲率,与污垢遮罩结合起来,以获得一些有趣的变化和可信的外观。
最终,我使用的这些网格遮罩的分辨率非常低,大多数是256×256。在Unreal中,我会将这些与其它纹理结合起来,以获得近距离的更多细节。
材质
我想要这个项目在4K下看起来很棒,我需要非常清晰的外观和定义良好的表面,但我并不想简单地使用大纹理。
在开始这个项目前几周,我玩了《生化危机8》,我完全被他们的材质工作所震撼,我想要制作一些达到那种细节水平的东西,并在游戏里做了一些研究。
我不确定具体细节,但我知道他们正在使用分层材质工作流程;我可以看到层的纹理平铺和遮罩,但它是如此复杂和执行得如此出色,以至于看起来像魔法。
我做了很多实验,最终,我对我实现的工作流程非常满意。基本上,它由依赖遮罩决定它们是否出现的各个材质实例组成,全部结合在一个易于使用的Unreal 5本地界面中的一个资产中。
让我们回到我的飞机机身材质:它从一个简单的闪亮金属材质层开始。这个材质实例使用平铺纹理,如果你注意,你可以看到它重复并且看起来很奇怪。所以,我的全新闪亮的飞机,但它的表面看起来太原始了,好像从未离开过工厂。
我在它上面添加了另一个材质实例,这个材质也是金属,但这次它不那么闪亮,带有铜色调。我想让这看起来像污渍,而不仅仅是占据整个表面,所以我加了一个遮罩。这个遮罩分辨率低,看起来模糊,所以我在这个遮罩上方加了一个平铺遮罩,一切看起来都神奇地清晰和独特。
现在我的飞机看起来像是已经飞行过一些航班,金属上有一些污渍或变色,但看起来像是有人刚刚洗过它。
到现在为止,我很想让它变脏,但首先我想通过有均匀颜色来打破整个表面的外观。我添加了一个“颜色变化”层,这只是在整个材质上混合了一个图像,使其更加可信。
我添加了一个只影响材质法线属性的特殊层,我想要在某些区域扭曲这种金属。好的,现在我添加了污垢层,它让我们的飞机看起来像是已经放置了一段时间,没有人洗过它。最后,我在所有上面添加了独特的法线贴图。
这个工作流程让我能够立即知道引擎中的最终结果,虽然我有时会来回使用Painter来为遮罩找到合适的外观,但这种连接就像重新导入一个文件一样快。
我还能够通过更改网格遮罩并仅通过创建一个实例并添加更多层就能快速创建变化,将一个材质用作另一个的基础。
这种分层材质工作流程不仅限于烘焙的网格遮罩,有些我只是使用平铺遮罩来获得随机细节,有些我只是依赖于顶点绘制。这让我能够将时间集中在最重要的事情上,并迅速为不那么重要的资产创建材质。
虽然设置主材质以配合这一系统可能看似繁琐,但在大型项目中最终会收获颇丰。这一系统主要由三种类型的资源构成:主材质、材质层以及混合资产。
主材质基本上是空的,它仅包含了关于如何读取和响应混合资产的层结构配置。当你创建这个主材质的一个实例时,你便可以在其中添加材质层,而这个实例正是你将要应用于网格模型上的东西。
材质层并非普通的材质,它们是以一种非常特殊的方式创建的,并且是一种不同类型的资源(你不能直接将它们应用在网格上,而是需要在一个包含它们的主材质实例内部使用)。尽管如此,它们具备像基础颜色和粗糙度等表面的所有属性。
混合资产是用来生成材质层遮罩的资源,你可以简单地放置一个纹理在其中,并将其输出为遮罩,也可以创建各种复杂的混合行为。例如,将独特的遮罩与平铺遮罩相结合,实现不同的混合效果。
地面、悬崖、地形和植被
对于场景的整体景观,我使用了Megascans资产,主要是与《古代山谷》演示一起发布的那些。这个过程最好的部分是Nanite让我不必担心使场景变得太重,我使用了大约九千个不同的静态网格演员来构建景观,它仍然实时运行。尽管如此,不同的网格并不多,我通过大量旋转和重叠来隐藏重复和重用。
植被也来自Megascans,它与环境完美契合,但我必须小心使用,因为Nanite不支持半透明,也不喜欢薄网格。
我心里想的是,我的地形必须补充场景的中心点,并将观众的目光引向它,但最终,很多人对地形的细节水平印象更深刻(这要归功于Quixel和Epic)。
其他软件
场景中出现的玻璃,我使用了Yutaka的Broken Glass Generator,它可以在Substance Player上运行,并能生成各种破碎玻璃纹理。我使用Pureref来组织我的参考图像和自我反馈。我还使用Photoshop将我的场景与概念艺术进行比较,并编辑我使用的一些平铺纹理。3ds Max的Datasmith插件对我的工作流程也非常重要,因为我节省了无数小时的导出/导入时间,我只需要保存一个文件,然后在Unreal上重新导入一个文件,同时保持本地空间枢轴、变换和材质分配。我无法想象没有这个工具如何处理如此大型的场景。我在Unreal Engine上使用Sam Bonifacio的Tether插件创建了场景中的所有电缆和电线。
纹理、Substance和Megascans
我使用的大多数纹理来自Megascans,但有些来自Poliigon。摄影测量纹理是一个很好的起点,但我总喜欢以某种方式进行编辑,无论是使平铺更难看到,还是从中获取更多信息。例如,我几乎总是编辑粗糙度纹理以获得更多对比度,或者为了得到我想要的表面外观进行艺术指导。有时我还会增加或减少基本颜色纹理的对比度,我认为拥有看起来嘈杂的表面和一些看起来更清晰的表面来达到平衡是很重要的。
对于法线贴图,我总是尽量避免小细节(高频率),这会使表面看起来太崎岖,更多地依赖其他纹理来区分细节,如油漆飞溅。在这场景中,我没有使用烘焙的法线贴图用于诸如圆角等细节。
资产放置
从一开始,我就知道这个项目需要很长时间来执行,我需要使用Datasmith来避免在3ds Max中就地建模然后之后在Unreal中重新定位一切。
我自己创建的所有资产只在Max中定位和放置,实例化的资产在Max中实例化,Datasmith在导入Unreal时保留了这些实例。我还会改变一些部件的规模,这也被保留了。
我来自其他来源的较小资产直接在Unreal中放置。在放置任何东西时,我总是尝试保持良好的构图。即使有时我没有与概念艺术中完全一样的资产,我也会尝试用形状和颜色对场景有类似影响的东西来替换它。
使用外包资产
我的商业项目很大一部分涉及使用外包资产来节省时间,所以我也想在这个项目中探索这一点。我需要找到方法将这些资产与定制件相匹配。
有些很容易适应,比如摄影测量资产,因为即使场景的建模是定制的,纹理也都是摄影测量的。一些建模非常简单的游戏资产,通过一些纹理编辑获得了新的生命。
例如,皮卡车有非常简单的低多边形建模,在场景中一开始看起来完全不搭,所以我使用它自己的纹理在我的定制材质层上创建了一个全新的外观,使其与其它所有东西更加协调。
润色与最终阶段
在我将场景的每个部分都达到“足够好”的水平之后,我收集了所有的自我反馈,并开始对其进行分类,以找出哪些变化会以最低的时间成本产生最大的影响。有些东西我真的很想重新做或编辑,但最终,我为自己设定了一个时间预算,如果我超出了这个预算,就意味着如果这是一个商业项目,我就失败了。不过,我对最终结果非常满意,我不认为如果继续工作,这个场景会变得更好。
照明
照明是我最喜欢的部分之一,也绝对是我研究最多的部分,所以我想让这个场景反映出这一点。我为这个场景创建了4种主要的照明变化,然后我对它们进行了迭代。我将这些变化称为:晴朗、红月亮、粉红日落和灰云。它们相当自我解释的,所以我不会详细说明。
我与同行分享了这些变化及其迭代,并得到了他们的反馈以改进它们。我最初的目标是首先发布晴朗版本,然后发布我随时间发现更有趣的其他版本,它们在不同的电影制作中。
晴朗版本相当简单,有一个定向光和一个天空光。我没有追求基于物理的值,我试图探索更艺术的外观,考虑到太阳照射的位置和只有天空光照射的位置的色调和价值。我测试了无数的太阳位置,然后确定了我认为最能突出材质特性并投射一些有趣阴影的位置。
在构图中考虑阴影也很重要,因为它们可以对构图产生很大的影响,无论是好是坏。粉红日落版本是我找到最有趣的,对于它,我使用定向光和天空光作为起点,然后添加了许多聚光灯和矩形灯来强调环境的特性。
我在虚拟制作中工作时学到了许多老派的灯光技巧,这些技巧在现场制作中会用到,对于这个场景确实很有用。
例如,我把太阳放在一个位置,它的光不会触及一个螺旋桨,但我希望这部分被照亮以获得更好的外观,所以我在那里加了一个与太阳颜色相同的聚光灯,效果很好。几乎不可能让人注意到角度不匹配,只有另一个灯光艺术家才会注意到,即使这样也很困难。
当追求更艺术的照明时,我认为重要的是不要被逻辑所束缚,如果看起来好,它是否有意义并不真的重要。
渲染
这个场景在Rtx 2070s gpu上以1080p实时运行,大约每秒50帧,这对于视频游戏来说是很棒的。我也希望这个场景在4K下对虚拟制作运行良好,但我的gpu只能在这个分辨率下推动大约15帧每秒,所以我不得不使用渲染队列离线渲染它。不过,它仍然非常快;我可以迭代它,并且新版本在5分钟内就能渲染出来。
对于我发布的电影,我使用了24fps的帧率,以赋予它类似电影的感觉,Unreal的优秀运动模糊和景深在这一点上真的帮了大忙。
结论
我对这个场景的接受感到非常满意,这远远超出了我的想象,我非常感激。
我认为在工作过程中最重要的事情是保持自己的组织性并管理好时间。有时候我根本没有动力,但我将最激动人心的任务分开,当我最有动力的时候,我会快速完成无聊的事情,这样我就可以做酷的部分了。
回头看,我认为我主要是在管理自己,尽可能保持动力,以免放慢速度,也从不放弃。明确定义所有下一步,不遵循严格的时间表,即使我想继续工作,也要强迫自己休息,这非常重要。
值得注意的是,从一开始,这个项目就旨在成为我的一个转折点,所以我把它视为一项投资。我拒绝了一些自由职业工作,以便有时间从事这项工作,并记录了我在上面花费的时间。如果不是在这个项目上冒这样的风险,我不认为最终会取得如此好的结果。
我对这个项目取得的成就感到非常满意,我已经期待着我的下一个项目,它将是10倍甚至更大!我要感谢所有在这个过程中帮助我的朋友和同事,没有你们我做不到这一切!
评论留言