在 ZBrush、Maya、Substance 和 UE4 中创建喜怒无常的树屋场景
介绍
自从上一篇 80 级文章以来,我走了一些弯路,决定尝试根据Joris Dewolf 的这个很酷的概念制作一个角色:一个矮人。这与我平时的日常工作完全不同,我将其视为个人挑战。这很有趣,在前几次锁定期间进行的一个不错的项目,我对结果很满意。??一旦这超出了我的系统,我就回到了环境中。在完全爱上Even Amundsen的概念之前,我在三个项目之间来回奔波。其中两个基于我最喜欢的一些概念艺术家Andreas Rocha和Hamish Frater 的艺术作品。第三个是灵感来自最近一次不那么近的旅行的原始场景。
手指交叉,他们设法看到了曙光!
决定Сoncept
几个月前,我在浏览 ArtStation 上的概念艺术频道时发现了 Even Amundsen 的概念。每天都会发布如此多令人惊叹的艺术作品,很快就会遇到一些鼓舞人心的东西。我在 ArtStation 和 Instagram 上关注了他一段时间。他的大部分作品都是人物,但这是我从他那里看到的第一个环境。
我一直钦佩他的作品的是他在每件作品中的所有故事和阐述,立即赋予它们深度和地方感,这在构建场景时真的很有帮助。
报名参加导师制
大约在我开始这个项目的同时,我觉得我的技能有点停滞不前,我决定参加Kyle Bromley和导师联盟的环境艺术导师。我想要关注的一些关键领域是使用 ZBrush 和 Substance Designer 创建平铺纹理。凯尔在植被和有机物方面拥有丰富的经验,因此我们决定采用这个概念并将其作为指导的重点会很棒。
收集参考
我首先收集了一些岩石(尤其是靠近河流的)、苔藓和长满苔藓的老树的照片参考,只是为了了解需要制作的东西。我还看了一些当前的游戏,尤其是恶魔之魂重制版(当时我正试图摆脱它!),并且该游戏中的一些树使用了类似的技术,这些技术将被使用在此场景中,例如烘烤时铺有瓷砖树皮、苔藓混合物和顶部的树叶卡片以提供额外支撑。
创建资产列表
我使用 Trello 创建资产列表,记下场景所需的所有内容,例如岩石、石阶、大树、草/泥/苔藓砖、水等。每个资产都有一个子列表需要多少着色器/纹理,最后,制作它们需要多长时间。
然后将它们分为三列,“开始”、“审查”和“完成”,当我在它们取得进展时,我将在这些列之间移动资产。这可能不符合每个人的口味,但它提高了我的工作效率,迫使我更批判地看待自己的工作,并且以某种方式将事情称为“半成品”意味着总有改进的空间,这有助于我提高整体质量在末尾。每个资产的时间安排并不完全准确,但我发现只要有目标就很有用。
作品
在开始画布之前,我想首先分析和理解艺术品的构成,以便我将其很好地转换为 3D。
我需要保留几个强大的元素。红门是这个概念的焦点。这是一个温暖而饱和的细节,与环境的冷色调和低色调形成高对比度。构图和周围环境都朝着门口流动。树木、树枝、河流、楼梯,都将视线引向画面的焦点。
封锁
考虑到这些要点,我转向了 Maya 中的初始封锁通道。这包括球体、立方体和非常粗糙的树版本(使用 ZBrush 中的 ZSpheres 快速制作)。用来代替场景主要部分的基本形状只是为了使比例正确。
在这个阶段,我在封锁上画了一些草图,以便尽早解决问题并确保我不会偏离概念太远。例如,框架右手边的树枝需要被推到离房子更远的地方,并且在巨石和树之间必须有一个小间隙,以确保两个资产的轮廓没有“不要迷路和困惑。我还在树上绘制了快速拓扑草图,以尝试了解模型将如何流动。
一旦规模看起来不错,一切都被带到ZBrush。我发现在这个早期阶段在 ZBrush 中工作很棒!它通常是我在后期使用的东西,一旦所有资产都制作完成,但在指导之后,我真的很欣赏早期使用它的好处,尤其是对于有机布景。一开始把所有东西放在一起给了我更多的自由,并防止我陷入组织文件和分裂事物的困境。这种方法有助于为场景奠定基础,让一切都更好地结合在一起,并在开始时给出一个确切需要构建的想法。如果场景适合它,这绝对是我将来会更经常使用的工作流程。
我花了一些时间在 UE4 和 ZBrush 之间来回切换,确保构图与概念相匹配。在这个阶段,我也开始在地面上进行更多的工作,给人的印象是房子位于山上,有一条小路向上,河流向下。
地面成形后,我将其替换为 Unreal 地形,以便我可以即时对其进行编辑。当需要放置地面资产时,这将消除每次我进行更改时不断重新导出地面网格的需要。
雕刻大树
一旦我在高级阶段进行了封锁,接下来的事情就是更多地关注单个对象并进一步研究它们。首先要建造的是树。在接受指导之前,我的计划是制作一个具有相当数量几何形状的平铺树皮,以便我可以创建详细的轮廓。在与 Kyle 讨论后,我们决定最好雕刻、烘烤,然后添加平铺纹理作为细节混合。这棵树是场景的核心,不会在其他地方重复使用。
使用 ZSphere blockout 网格作为基础,我开始处理轮廓,使用移动笔刷使其看起来更加有机和粗糙。对于雕刻,使用的主要画笔为 Clay Buildup、Dam Standard 和 Standard,首先使用 Clay Buildup 画笔添加粗笔画,然后使用 Standard 和 Dam Standard 在树皮中创建更多方向。
这个过程重复了几次,从大到小,直到有足够的细节。
过去,我发现我的雕刻并不总是能很好地从 ZBrush 转换为最终的游戏资产。许多细节在雕刻中丢失或不够明显。解决这个问题的方法之一是凯尔向我展示的一种绝妙的方法。
我使用具有大笔刷尺寸和低强度(大约 6 或 7)的 Flake 笔刷在网格上雕刻。这有助于给事物带来更多的“流行”感,为可能会在最终烘焙中丢失的小表面细节增加更多深度。在项目后期,在房屋的岩石和原木上使用了类似的技术。您可以在下面的 gif 中看到它对雕刻的影响。
对于低多边形网格,我在第一遍使用了 Decimation Master。它对有机物体非常有效,并且在保留轮廓方面做得很好,尽管它可能会变得有点凌乱!因此,在将网格抽取到合理数量后,它们被带到 Maya 进行清理和 UV。
所有的烘焙都是在 Marmoset Toolbag 中完成的。过去,我主要用它来做演示,但凯尔把我介绍给了面包师,它立刻成了我的最爱。它速度快,非常易于使用,结果令人惊叹。对于尚未有机会使用它的任何人来说,非常值得一试。
这是树在进行任何树叶或顶点绘制之前在 Maya 中的外观。
现在这棵树已经烤好并准备好了,是时候把它放在一边,专注于其他物体了。
创造岩石
一开始,雕刻岩石很棘手。由于过度使用修剪动态和硬波兰画笔,最初的几次尝试过于棱角分明和风格化。它们看起来过于崎岖和尖锐,而在参考文献中,它们更光滑,因为靠近水而被侵蚀。那是一种需要保留的样子,所以需要很大的克制才能让它们保持简单,同时也让它们看起来足够有趣!
摇滚阿尔法在这里真的很有帮助。我使用Dannie Carlone的辉煌包开始获得一些具有里程碑意义的裂缝,然后使用标准和 Clay Buildup 画笔的组合从那里逐渐分层细节,然后使用上述相同的薄片画笔技术。
之后,它只是使用 Decimation Master 来处理低点,在 Maya 中清理它们,UVing,然后将它们放入 Marmoset 进行烘烤。Substance Painter 用于最终纹理。
在这里,我开始使用我收集的参考资料和我最近一次跋涉中拍摄的一些照片将基本颜色和粗糙度贴图放在一起。我使用Josh Lynch 创建的惊人的蒙版生成器将它们混合在一起。
此生成器将法线贴图作为输入,您可以从中选择各种蒙版类型,然后根据需要调整它们的范围。这是一个非常强大的工具,我强烈推荐。
这是我在对树皮图块进行纹理处理时在 Designer 中使用的生成器的另一个示例。
现在我已经准备好了几个对象,我迫不及待地开始使用平铺纹理进行混合!
使用 NanoMesh 创建平铺纹理
从资产列表中,场景需要三种地面瓷砖材料。草、苔藓和森林地面。对于这些,我将使用 NanoMesh 创建高多边形,在 Marmoset 中烘烤它们,然后最后将它们交给 Substance Designer 来完成它们。
首先,这是在 ZBrush 中使用的设置。
主要雕刻平面是高几何体所在的位置。下面的基础瓷砖平面将用于烘焙上面雕刻平面的细节(它们在 ZBrush 中确实靠得更近。我将它们移得更远只是为了拍照)。这两个 Unreal 角色网格将为纹素密度提供参考。值得注意的是,主雕刻平面更大。这是为了提供一个径流,以确保当它烘烤到下面的基础瓷砖平面时,烘烤中没有可见的接缝。
我首先将主雕刻平面细分了几次(大约 120 万个),然后从textures.com获取了一个微妙的置换贴图,以获得一些小的基础细节。我发现创建这些材料最困难的事情之一是开始,所以在那里已经有一架飞机,有一些不错的表面噪音提供了一个很好的画布。
接下来,使用标准画笔在平面上雕刻出一些起伏(确保在画笔 > 曲线设置中将包裹模式设置为 1)。这是必不可少的,因为它有助于避免烘焙看起来太平,标准画笔的好处之一是它可以保留每个笔划的细节,因此无需担心丢失任何置换贴图。
下一个任务是创建一个小型资源库,其中包括用于填充瓷砖的树枝、树叶、岩石和苔藓丛(这些都带有稍后用于 alpha 卡的额外好处)。我在这里没有做任何太花哨的事情。只需使用 Clay Buildup、Dam Standard 和大量 DynaMesh 进行更多工作!
在使用 NanoMesh 之前,至少在不影响其外观的情况下尽可能多地抽取对象也是值得的,因为使用这种方法,多边形数可以非常快地飙升,在我的情况下它做了很多次,导致很多崩溃。如果您的机器在几年内没有像我一样进步,那么这应该不是什么大问题。
下一步是复制主雕刻平面并将其抽取到大约 2-3k 多边形。这是我将在其中绘制 NanoMesh 的地方。这样做的原因是因为 NanoMesh 要在每个面上创建对象,而雕刻平面太密集了。
选择子工具(在这种情况下是树枝之一),我进入画笔设置并点击“创建插入网格”,然后点击“创建纳米网格刷”。然后使用 ZModeler,我可以单击并拖动到平面上以添加树枝。在这个阶段,NanoMesh 在每一个面上都创建了子工具,所以首先要做的是进入 NanoMesh 设置并使用随机分布滑块,这减少了实例的数量并将它们分散。较高的值会增加更多的实例和更多的密度,但最好保持数量相对较少,因为需要添加更多的子工具。
一旦第一根树枝进入,在 NanoMesh 设置中启用冻结放置,并使用与上述相同的步骤将另一个树枝子工具添加到平面。启用冻结放置可确保先前添加的树枝不会被新树枝覆盖。
我继续添加更多子工具,使用随机分布和旋转/长度/宽度变化,直到有相当数量的随机性。也可以在这里循环索引并调整每组实例的设置。禁用 Show Placement 在这里也很方便隐藏被抽取的平面。
这是添加所有子工具后 NanoMesh 的外观。绿松石框代表将要烘焙的瓷砖的边界。值得注意的是,这些也代表位于下方的基础瓷砖平面的角落。
一旦所有子工具都在(此时也值得保存 ZTool 的备份!),下一步是进入几何设置并单击“Convert BPR to Geo”,将 NanoMesh 对象转换为普通子工具。然后我将瓷砖复制了 8 次,使用变形 > 偏移将每个子工具围绕主中心移动。这确保了 NanoMesh 在两个轴上平铺。完成后,我将对象合并在一起,然后将雕刻平面周围的位屏蔽掉。最后,我在 Geometry > Modify Topology 设置中点击了 delete hidden,将多边形数降低到合理的水平。
正如您可能在这里看到的那样,我在开始时遇到了这种方法的问题,即瓷砖的外边缘比中心密集得多。这是因为相邻的图块彼此重叠,添加了越来越多的对象。其中大部分不会在最终烘焙中看到,因为它们中的大多数都位于瓷砖边界之外,但它们仍然很明显。
为了解决这个问题,边缘周围的物体数量减少了,这样在复制时,其他瓷砖就会填补空白。如果碰巧在某些区域仍然过于密集,我在飞机上使用了标准画笔覆盖了一些树枝。
要创建具有大量变化的基色,需要使用颜色蒙版在 Substance Designer 中选择不同的对象。为此,我在 ZBrush 中使用了 polypaint。
这个工作流程的美妙之处在于 NanoMesh 保留了您放置的每组实例的多边形组,因此可以使用 Ctrl+Shift 自动选择每个组并为其分配不同的颜色。对于已经涂漆的对象,例如后来制作的苔藓瓷砖,这有点棘手。在那种情况下,我需要基色的 polypaint,因此需要保存两个版本并分别导出基色的 polypaint 和 ID 贴图。
我选择了每组子工具并使用颜色 > 填充对象分配了一个随机颜色。然后将 NanoMesh geo 和下方的高平面导出到 Marmoset 进行烘焙。在这里,我保存了法线、AO、曲率、高度和顶点颜色贴图。
完成这些后,Substance Designer 就可以创建最终的贴图了!
在这次指导期间,我真正喜欢的一件事是纹理的方法。Kyle 教会我将 Substance Designer 视为纹理管道的补充,而不是替代品,与 ZBrush 结合使用,这是我在做这个项目后真正欣赏的工作流程。
下面是森林地面图表完成后的外观。
该图的大部分由混合节点组成,这些节点用于组合不同的统一颜色节点,以垂直颜色图作为掩码。对于这些,我使用了“Color to Mask”节点,它非常适合为每组对象选择颜色。
在查看了 ref 之后,虽然感觉纹理整体上并不像它们本来的那样密集。因此,为了避免返回到原始 NanoMesh,我在 ZBrush 中使用 GrabDoc 来快速从我已经雕刻的树枝中导出 alpha。这些像其他纹理一样作为位图被带入 Substance Designer。
Tile Sampler 节点用于将这些散布在一些较小的树枝周围,使用与以前相同的垂直颜色贴图将它们添加到烘焙树枝下方。
这些是使用我上面描述的方法在 Marmoset 中渲染的最终材料。
创造草
对于树叶纹理表,我想包括几个草丛、一些苔藓来装饰资产,以及各种植物/花卉以获得更多变化。
对于草,我需要大约 3 个不同大小的草丛才能获得相当数量的品种。对于这些,我使用了 FiberMesh。开始时制作了一个快速平面,它将代表纹理表。然后我添加了一些较小的平面,与主平面成 90 度角,有点像墙上的架子。
接下来,我在这些区域上使用了蒙版,我希望草出现的区域。FiberMesh 的预览是基于相机的,因此网格需要面向前方才能让草自然发芽。
上述相同的方法也用于植物。叶子和花头是手工雕刻的,但茎是用 FiberMesh 生成的。您可以在下图中看到烘焙前的完整纹理表。
创建苔藓阿尔法
对于苔藓卡片,用于苔藓平铺纹理的网格被重新利用。它们也已经被多漆了,所以没有必要担心它们的纹理。这将确保它们在游戏中也与平铺纹理一起坐在一起。
其他部分的树叶是使用我用于草丛的相同 FiberMesh 方法制作的。使用 Clay Buildup 和 Dam Standard 刷子和 DynaMesh 雕刻各种叶子和花头。
创建散落的岩石和树叶
很快就很明显需要一些较小的岩石和鹅卵石散布在场景周围,但我不想花太长时间回去烘烤它们,尤其是如果它们只是很小的话。
Kyle 向我介绍了一个很棒的布尔脚本 DCBool??Manager,可以在这里免费下载。
使用它,可以使用我已经制作的岩石并从中创造更多的岩石(我决定在大约六点后停止)。您可以看到我在下面录制的快速演示。
这个脚本的美妙之处在于,当使用相交创建新的岩石形状时,它将 UV 映射投影到相交的部分。这会导致纹理出现接缝,但由于场景中的岩石很小,因此无需过多担心。
这不仅节省了很多时间,并且可以快速创建更多的岩石变化,而且它也超级便宜,因为所有东西都使用相同的纹理!
创建地面树枝和树叶模板
凯尔对我说的一个重要建议,在整个项目中一直困扰着我,是“不要让任何事情变得平坦”。意思是,不要仅仅依靠平铺纹理来完成繁重的工作。拥有这种心态确实有助于在可信度方面进一步推动场景。
考虑到这一点,我决定创建一些地面 alpha 对象来支持平铺材料。地砖上的树枝和树叶已经制作完成,所以这只是为模板创建面具的一个例子。
Substance Designer 也用于创建这些。使用之前使用的相同顶点颜色贴图,我添加了一个 Color to Mask 节点以仅屏蔽所需的位(一些树枝和树叶),然后将其与垃圾贴图结合起来。垃圾贴图设置中的画笔图案设置为 0.75 左右,并使用 Levels 节点使其纯白色。为这些导出了两种变体,一种用于树枝和叶子,另一种用于单独的叶子。
这是 Maya 中的地面 Alpha。我决定在这里也添加一些我为树制作的分支 alpha 以进行一些额外的变化。
以下是它们在虚幻引擎中的外观。
把它放在一起
现在大部分材料和资产都接近最后阶段了,下一步是开始将它们组合成预制件。我在这里查看了许多 Megascans 资产以获取灵感,特别是带有岩石和草等的地面部分。
根据 Kyle 的建议,我决定对我的地面资产使用类似的方法,将每个资产都视为自己的小布景环境。
这个过程的大部分是在 Maya 中完成的。我首先为地面制作了一个粗略的形状,然后将其细分以获得更高的密度。Maya 的雕刻工具在这里也派上用场,可以创建一些表面噪声。我不经常使用它们,但对于这样的事情,它比选择顶点要快得多。
加入地面网格后,添加岩石,然后为材料混合将出现的位置绘制垂直涂料。
最后,我添加了树叶和小石头。
这种方法用于场景中的大多数资产,从一块地面开始,逐渐向其添加越来越多的对象,将其分层,并使用顶点绘制作为设置苔藓、草和岩石。我也对大树使用了相同的工作流程,减去地面。
当资产开始放置在虚幻引擎中时,这个工作流程的好处很快就显现出来了。设置它们涉及很多准备工作,但是一旦完成,场景就很快聚集在一起。能够填充场景并且已经准备好所有东西真是太好了。这样做的另一个重要优势是能够对资产进行更改,然后查看整个场景的效果!
使用 TharleVFX 的着色器创建河流
在最初的过程中,我使用的是 Unreal 水系统,但我在 Unreal 市场上遇到了TharleVFX令人惊叹的水着色器,它拥有我需要的一切,所以我决定在最终演示中使用它。它还捆绑了一些粒子效果,非常适合在岩石周围!
创建河流的第一个阶段是从虚幻引擎导出地形并将其引入 Maya。我用它作为指导来模拟和创建河流的形状。我将它细分了几次以获得更好的垂直绘制效果,并确保 UV 在弯曲时不会扭曲太多。
这是虚幻引擎中的结果。
在这个阶段,我还在岩石材质上添加了额外的粗糙度混合,用于那些坐在河边的岩石。
为此,将一个简单的标量参数与粗糙度贴图相乘,然后使用绿色顶点通道作为 alpha 将其输入到 lerp 中。还添加了一个常量 3 以稍微使基色变暗。
照明设置
我决定最好在这个场景中坚持使用动态光照,因为我不想在光照贴图 UV 上浪费太多时间,而且我很享受能够在不重新光照的情况下动态移动资产的自由。首先,我添加了一个定向光和一个天光。在这个场景中,这两个人承担了大部分的重任。概念中的灯光看起来很阴暗,有幽闭恐惧症,就好像它坐落在茂密的森林中间。为了尝试模仿这一点,Directional 需要非常微妙,而 Skylight 则更具优势。
在这个阶段有很多测试和反复试验,但最终,我决定将方向强度设为 2.0,因为它在挑选资产细节但又不过分强硬之间似乎是一个很好的平衡。
我从HDRI Haven下载了多个 HDR 贴图,这是一个很棒的资源。最后,经过大量测试,Skylight 最终使用了捕获的场景本身而不是自定义的立方体贴图。
这是我对天光和高度雾的设置。
天光的强度提高到 1.5 以补偿较弱的定向,我将颜色着色为浅蓝色以尝试模仿概念的蓝色氛围。
另外,这里值得注意的是,天空距离阈值设置为 1。如果您不沿着 HDRI 路线走,这是捕捉场景的绝对必要条件,因为默认值不考虑天光演员周围的直接区域. William Faucher 在他的视频中很好地解释了这一点。也值得一看他频道的其余部分,他有一些关于虚幻引擎中灯光和过场动画的精彩视频。
我也禁用了“下半球是纯色”。虽然它可以产生很好的遮挡效果,但感觉这里丢失了太多的立方体贴图,保留它很重要,特别是方向如此微妙。
经过大量调整后,我将高度雾调回了很多,以确保它不会过多地淹没场景,这很容易做到!对于最终渲染,它保持在 0.04 只是为了给场景添加一些微妙的深度。
除了定向和天窗之外,还有几个聚光灯位于树的后面。与主灯不同的是,这些灯确实被放大以发出边缘高光,这似乎很重要,可以通过微妙的照明来强调。
场景周围也有几个小点光源,阴影投射被禁用。这些被用来在事情似乎变得有点太暗的地方给气氛带来一点提升。
试图弄清楚这个场景的照明导致了几个替代的照明场景,这些场景最终被包含在最终项目中。黄昏版本的灯光设置与主版本几乎相同。唯一的区别是天光和定向的色调和强度。
然而,夜间设置有点不同。为此,我将定向灯的位置移到了树的后面,以捕捉树枝上树叶的边缘,并在前面为房子中的橙色灯光提供额外的对比度。所有的点光源都关闭了,但是,捕捉下方边缘的聚光灯仍然在那里,但具有不同的色调。天光被调低到 0.6 并具有更深的蓝色色调。
这是体积雾也略微增加的地方,以创建来自窗户的光线。
再看一遍这个概念后,灯光似乎很不饱和,我觉得好像我在最后失去了焦点。为了解决这个问题,我决定将全局饱和度降低到 0.75 并提高门基色的饱和度以再次强调它。
除此之外,我将全局对比度提高到 1.5,并为最终镜头添加了微妙的色差。我还在最后的镜头中将脚趾值略微增加到 0.6,以增加对比度。
最后的话
总体而言,该项目耗时约 3 个月完成。可以肯定的是,其中最困难的部分是正确地开始,然后知道什么时候结束。了解需要制作哪些资产以及如何将所有资产组合在一起是导师真正帮助解决的问题。即使在开始时拥有最原始的资产也是朝着正确方向迈出的一步,在过去之后,该项目确实获得了动力。
下一个绊脚石出现在项目的最后阶段,尤其是最后的照明。我花了几个晚上为最好的照明设置而苦恼,不断进行微小的调整,然后在第二天完全改变了我的想法。在我最终确定我喜欢的东西之前,它是很多截图之后!
但我必须说,工作是一种绝对的乐趣,这要归功于我的指导。凯尔真的帮助我把自己推得比我想象的更进一步。一个月的时间,我学到了很多。这是令人兴奋的,有时甚至是压倒性的。我会敦促任何正在考虑做导师的人去争取。这是非常值得的,能得到像凯尔这样的伟大艺术家的直接反馈是非常宝贵的!