Introduction

原版文档地址:Visual Engine Document

Unity 商店页面:Visual Engine

Visual Engine 支持场景的动态季节变化、草的交互视觉反馈。

Getting Started

Installation And Manager

欢迎!快速入门教程将介绍 Visual Engine 的基础知识。查看文档以了解更深入的工作流程和提示!

导入资产后,将出现用于安装渲染管道支持的 Hub 界面。如果这是第一次安装,Hub 将自动选择项目中使用的管道!单击 Choose Render Pipeline 按钮,然后单击 Material Upgrader 中的 Upgrade Materials 按钮以完成当前渲染管道的安装。要更改或重新启动渲染管道支持,请点击 Show Advanced Settings

安装完成后,从工程中找到 BOXOPHOBIC > Visual Engine > Learn 文件夹,并打开 Learn 场景,您需要在场景中创建一个 BOXOPHOBIC > The Visual Engine > Manager 对象,管理器(Manager)保存了着色器和系统运行所需的所有全局变量。

创建管理器

CONVERTING THE ASSETS

虽然可以通过更改每种单独材质的着色器来手动转换资产,但 Visual Engine 包含一键式非破坏性解决方案,可将网格、材质和纹理转换为统一格式。资产转换器(Asset Converter)通过转换选定的预制件一次处理多个资产,并将存储备份以便于还原或重新转换。请注意,转换后的材质可能与原始材质不完全匹配!

要打开转换器,请打开 Window > BOXOPHOBIC > The Visual Engine > Asset Converter。转换预制件时,转换器将在名为 Prefabs Data 的新文件夹中创建新的网格、材质、纹理和预制件备份,该文件夹与预制件位于同一文件夹中。如果多个预制件中的材质相同,转换器允许共享通用材质

资产转换基于 conversion presets(简单文本文件)完成,默认情况下,包中仅包含一些预设。单击 Download All Conversion Presets 按钮,从 Unity Asset Store 获取第三方资产的预设。

资产转换

CONVERTING THE TREE

打开转换器后,选择 Tree (Made with TreeIt) 预制件。转换器会以蓝色显示所选的预制件,它会检测到树是使用 Tree It 工具制作的,并会自动选择正确的预设,但您需要手动选择 Conversion Option(预制件类型)。大多数资产商店预设都提供自动检测功能!如果您使用了错误的预设或选项进行转换,则可以选择正确的预设或选项,然后再次点击转换按钮。重新转换时,您可以选择保留转换后的材料(Keep the Converted Materials) 或使用应用的新转换选项替换(Replace)它们。

按下转换(Convert)按钮,几秒钟后,树将转换为 Visual Engine 着色器,并以黄色显示预制件。这时,如果您检查新创建的材质,则会发现树皮的材质已经替换成了通用标准光照着色器(General Standard Lit),树叶的材质则替换成了具有高级光散射的通用次表面光照(General Subsurface Lit)。

转换树

审视材质参数!对于树叶材质,降低次表面强度(Subsurface Intensity),然后将主色模式(Main Color Mode)设置为双色(Dual Colors),并更改主色 A (Main ColorA) 以仅影响树叶颜色。调整 主多重蒙版(Main Multi Mask) 滑块来重新映射存储在蒙版贴图蓝色通道中的叶子蒙版。

叶子的 Shader 面板

CONVERTING THE GRASS

打开转换器后,选择场景中所有的 Grass (Unknown Source) 预制件。如果多次选择同一个预制件实例,转换器将仅显示来自项目的根预制件!如果资源商店资源没有可用的预设,您可以随时尝试使用自动预设(Automatic)。如果着色器来自 Unity,或者内部属性与 Unity 着色器相似,则纹理将正确传输,但可能需要进行额外调整!

选择 Automatic > Grass 预设并转换。根据所选选项,转换器将为网格分配不同的风罩,以适合所选的预制件类型。草网格通常在法线向上时看起来更好,尤其是对于风格化的草。选择 Normals > Make the Normals Flat (Full) 覆盖以更改法线转换。覆盖是修改或向现有预设添加功能的好方法,可以将它们设置为 Global(锁定的图标),以便每次打开转换器时都会自动分配它们。再次转换并选择保留转换后的材料。

转换草

选择草材质,将 Render Normals 设置为 Same,这样正面和背面都会以相同的方式发光,然后减少 Main Alpha 以使草更浓密。启用 Occlusion 并将 ColorB 设置为较深的颜色,以在底部添加遮挡并使草更接地气。

下图是调整 Main Alpha 的面板,以及调整后,草地的效果(更浓密了):

草的 Shader 面板

草的效果

CONVERTING THE ROCKS

岩石材质已分配默认的反照率和法线贴图,并且根据您使用的管道,AO、平滑度和高度蒙版是分开的或打包在一起的。使用 Automatic > Props 预设转换岩石预制件。转换后,岩石的材质将会被替换成通用标准光照着色器(General Standard Lit),并打包着色器贴图以减少着色器使用的纹理。查看【文档中的材质纹理解剖】以了解更多详细信息!

让我们添加一些顶部投影的苔藓!将 图层强度(Layer Intensity) 设置为 1,并将包含的苔藓纹理分配给正确的插槽。图层功能允许您添加用于苔藓混合或其他特殊效果的新纹理层。根据您的喜好调整颜色、法线强度和平滑度,下面是调整岩石苔藓的一些基本选项。

岩石添加苔藓

图层通道使用适合不同用途的蒙版组合。要启用顶部投影(Top Projection),请设置 Layer ProjY Mask 滑块并重新使用 Layer Shader 贴图作为 Layer Mask 贴图以使用存储在纹理蓝色通道中的蒙版。单独调整每种蒙版类型的重映射滑块,或调整 图层混合重映射(Layer Blend Remap) 滑块以重新映射整个混合的蒙版!要反转蒙版,请使用 重映射(Remap) 下拉菜单并选择 反转(Invert) 选项。

CONVERTING THE BARREL (NOT SUPPORTED)

尝试转换桶时,您会注意到的第一件事是转换按钮被禁用,因为转换器只能与预制件一起使用,而桶是一个模型。要使其成为预制件,只需将其拖到项目窗口即可。SpeedtreeTree Creator 资源需要执行相同的操作!

如果您检查桶材质,它会像许多资源商店材质一样使用自定义着色器。由于没有特殊的预设,请尝试 Automatic > Props 预设并转换。但这么做,你会发现,阴影出问题了。由于着色器对纹理使用了非常规的命名,因此预设未设置为将它们传输到视觉引擎材质。您必须手动重新分配缺失的纹理,并将主金属和平滑度设置为 1。

手动设置整个资产非常耗时!自动转换的更好方法当然是使用预设。预设是可在任何文本编辑器中编辑的简单文本文件,它们带有全面的 API,用于转换网格和材质、打包纹理、设置纹理格式、更改着色器或更改保存路径。使用 Utility > Template 预设再次转换桶,现在将复制所有纹理。要创建自己的预设,只需复制位于 Core > Presets > Converter 文件夹下的模板预设。打开预设以查看如何复制和设置材质纹理和属性以及如何打包纹理的示例。您可以在预设部分找到完整的预设 API。

桶的 Shader 面板

MULTI-MATERIAL EDITING

使用 LOD 或运动设置调整预制件的材质时,您需要确保材质之间的参数匹配。要一次为多个预制件或材质设置相同的设置,请从 Window > BOXOPHOBIC > The Visual Engine > Material Manager 打开材质管理器。

材质管理器将显示所选预制件或项目中所选材质中包含的所有材质,您可以在此处切换材质管理器是否可以覆盖材质。为了防止单个属性受到材质管理器的影响,使用 Unity 2022.3 LTS 或更高版本,您可以锁定材质属性。如果材质之间的属性不同,管理器将显示这些属性的混合值。对于运动设置,将显示一个风控滑块,以测试各种风况下的运动设置,从微风到强风。

最后,您可以通过预设(与转换器相同)更改材质设置或着色器,并且可以将当前设置或所有材质设置保存到预设中,以供其他材质重复使用。如果需要,可以使用任何文本编辑器修改预设。

材质管理器

GLOBAL TINTING CONTROL

让我们全局地为预制件着色!选择 Nature 游戏对象,打开 材质管理器(Material Manager) ,并将 材质设置(Material Settings) 设置为 ColoringAll。搜索 着色(Tinting) 并启用该功能。着色功能非常适合季节,可添加颜色变化或将草地与地形混合。由于启用了 Paint Globals/Elements ,因此材质需要从 Paint 设置全局设置值。转到 Visual Engine Manager > Global Settings,将 Global Paint Data > Tinting 更改为浅橙色,并将着色强度(Tinting Intensity)设置为 1 以创建秋天的风景。

请注意,对于道具,着色始终处于锁定状态,材质管理器不会影响它。您需要手动设置道具的着色强度或解锁属性!

您可以使用各种蒙版控制如何为每种材质应用特定功能。Multi Mask 使用 Shader Map Blue 通道,可用于过滤掉叶子部分,以便仅对叶子应用着色(如果可用)。 Luma Mask 使用根据反照率计算的亮度蒙版,它非常适合为着色添加更多细节。

对于多层着色,例如带有苔藓的岩石的情况,我们可能希望在苔藓层上着色,但不包括岩石本身。对于这些情况,您可以单独控制用于每个层着色的多重蒙版(Multi Mask)。将 主多重蒙版重映射(Main Multi Mask Remap) 滑块设置为 1-1(这将使多重蒙版变黑),并将 层多重蒙版(Layer Multi Mask) 设置为 0-0(这将使多重蒙版变白)。现在只有苔藓受到影响。

岩石青苔的效果

注意:以下截图是翻译者的补充说明。

岩石着色的特殊处理

最终,岩石上的苔藓也变成了黄色,这是因为我们在Layer Settings 中的 设置了 Layer Color (参考上图)。

岩石着色的特殊处理效果

TINTING WITH ELEMENTS

Visual Engine Manager > Global Settings 部分下的设置也可以使用 Elements 进行本地控制。元素是 Visual Engine 的重要组成部分,它们的工作方式类似于从顶部投射的贴花。类型范围从着色(季节着色)预制件到添加运动交互(触摸弯曲)再到控制 alpha(冬天剪叶子)或大小(生长或隐藏草)。

要创建元素,请在场景结构中右键依次点击 BOXOPHOBIC > The Visual Engine > Element,在场景中创建一个可以移动、旋转或缩放的常规游戏对象,默认情况下,元素材质使用 Paint Tinting 着色器,用于为预制件着色。元素基本上只是全局值的本地覆盖。当多个元素彼此叠放时,它们会像 Photoshop 图层一样从上到下渲染。要更改元素类型,您需要从 BOXOPHOBIC > The Visual Engine > Elements 类别中选择元素材质着色器。

当元素材质保存到磁盘时,该元素可以在预制件内使用,您可以启用 GPU 实例化,在 1 次绘制调用中使用相同材质渲染所有元素!您可以使用元素组件上的 Save Material To Disk 按钮保存元素材质,也可以在项目中创建材质并将其分配给元素游戏对象渲染器。

元素

SEASONS WITH ELEMENTS

让我们为我们的场景创建一个动态的季节控制!Visual Engine Manager 下的 Season Control 滑块旨在与元素配合使用。在之前创建的 Paint Tinting 元素上(上一节创建的Element),将材质 Render Mode 选项更改为 Seasons。现在您可以分别更改每个季节的颜色。如果您不希望季节颜色影响预制件,只需将颜色 alpha 设置为 0!现在移动 Season Control 滑块以查看更改。

Winter Value R: 144, G: 122, B: 103, A: 255

Spring Value R: 166, G: 163, B: 52, A: 172

Summer Value R: 128, G: 128, B: 128, A: 0

Autumn Value R: 195, G: 133, B: 80, A: 255

季节设置

此时,拖动 The Visual Engine Manager 里的 Season Control 滑块,可以看到场景的颜色会随着季节的变化而变化。

季节的变化效果

元素还可以使用图层,因此不同的元素可以分别控制不同的材质。在元素材质上,您可以更改 Render Layers 选项,然后在 prefab material > Global Settings 部分下根据元素类型选择使用哪个图层。可以按照 BOXOPHOBIC > The Visual Engine > Core > Resources > Internal Layers 文件中的说明重命名图层以获得更好的可见性。当您需要以一种方式为树木着色但想要对草地使用噪声着色或将草地与地形混合以进行风格化的草地渲染时,这很有用。

Internal Layers 文件中的说明:

Default 0 Vegetation 1 Grass 2 Props 3 Character 4 Flowers 5 Mountains 6 Houses 7 My_Unused_Layer 8

Use this template to rename the TVE layers using the format from abowe. Copy this file to a local Resources folder and rename the file as follows:
- TVEColorsLayers for colors element layers
- TVEExtrasLayers for extras element layers
- TVEMotionLayers for motion element layers
- TVEVertexLayers for vertex element layers

现在颜色已经设置好了,让我们将雪添加到场景中。在材质上启用叠加功能并创建一个新元素来控制叠加效果。叠加功能使用 Atmo 全局变量和元素作为全局控制,因此创建一个新的 Element 并将着色器更改为 Atmo 叠加,然后将 Winter Value 设置为 1。调整每个预制件的材质参数,道具在投影和树叶的帮助下看起来会更好,只需使用 Luma 遮罩即可。

雪的效果

雪的配置

重点是需要关注几个地方: 1. 雪的效果是通过创建一个新的 Element 来实现的,这个 Element 的着色器是 Atmo Overlay。 2. 草上控制雪的效果,需要通过 Overlay Luma Mask 来设置雪线。

草上雪的效果设置

此外,在冬天的时候,可以用 Element Size 元素来控制草的高度,让冬天更荒凉一些,需要添加 Element Size 元素,如下图哦所示:

冬天的草的高度

同时设置草的 Size Shader,如下图所示:

草的 Size Shader