MMD联动Unity学习笔记 Vol.42 UTS2进阶(慎入长篇多图预警)

前言
今天我们还是继续共同研究UTS2的功能,主要内容有初始项目设置和UTS2自定义检查器,内容来自UTS2手册,UP进行了简单的校对翻译。

初始项目设置
在Edit(编辑)>Project Settings(项目设置)>Player设置中...
渲染路径⇒
Forward
。颜色Space⇒
Linear
。
推荐使用。(需要注意的是新版的Renderer Path已经移至相机的属性设置里面)

UTS2设置菜单:UTS2自定义检查器
从这里,您将了解用户界面UTS 2自定义检查器的功能,该检查器设置UTS2的每个功能。
关于属性列表类型的功能描述会在后面的专栏陆续发布出来。
您可以使用Change CustomUI
按钮恢复Inspector的UI样式。
1. UTS2的“基本着色器设置”菜单

在此菜单中,除了执行UTS2的基本设置外,还可以指定模板缓冲区的参考编号,设置剔除方法,并指定为每个剪切着色器设置的掩码类型。
※提示:剔除公式适用于每个着色器,但模板和剪切设置仅适用于使用这些设置的着色器。
菜单中的项目将根据着色器的类型(功能)自动扩展为以下最大格式。



TransClipping
着色器具有与着色器相同的一般特征Clipping
,但也可以使用剪切蒙版灰度级作为α值。
这些着色器通常用于使用引用alpha的面具来切割长而直的头发的末端,或者用于从角色头部的顶部伸出的诸如头发之类的东西。
使用Tweak_transparency
滑块调整透明度级别。
VRChat用户的有用功能
UTS2是一个通用的卡通着色器,可用于Unity中的各种项目。如果您喜欢VRChat上的UTS2,您可以使用以下便捷功能,在各种环境中享受VRChat的稳定功能,同时利用UTS2的高级功能。

在上图中,红色框中的按钮对应于它。有两个时间来使用这些按钮。
“在UTS2上设置材料时”
在UTS2中设置每种材质时,请执行VRChat Recommendation
基本着色器设置>选项菜单中的按钮。
通过执行此命令,UTS2将熟悉各种VRChat照明环境。
如果你在VRChat上传你的头像并且感觉与你的意图不同,你应该先尝试这个命令。
●如果要在黑暗世界中照亮角色的外观
执行VRChat Recommendation
按钮后,您可能希望在黑暗世界中调整角色的外观,这个世界中只有点光源,更加明亮。
在这种情况下,您可以通过调整Unlit Intensity
“环境光照贡献设置”菜单中的滑块来提高黑暗世界的亮度。

※提示:Unlit Intensity是一种在考虑环境亮度的同时提高暗处材料亮度的功能,因此在原始环境照明设置为暗的世界中它不能非常明亮。
然而,在黑暗的世界中,后期效果的释放通常也会变得强烈。
在这样的世界中,如果Unlit Intensity的值设置为超过1(默认值),它也容易出现释放,所以要小心它。
“在发布UTS2中设置的头像时”
在将UTS2中设置的每种材料的头像发布到VRChat之前,请执行Remove Unused Keywords / Properties from Material
基本着色器设置>选项菜单中的按钮。
通过执行此命令,您可以组织和删除在Unity中工作时在每个材料文件中累积的未使用的属性设置和着色器关键字。
例如,从最初分配标准着色器的材质中,即使将着色器更改为UTS2的着色器,这些未使用的值也会累积。这些未使用的值是Unity在下次将着色器切换回标准着色器时要记住的,但是使用已完成的材质发布化身和模型并应用它们当您这样做时,它就变得不必要了。
如果这些未使用的值保留在每个材料中,则可能会对系统施加不必要的负载,因此建议在发布头像时对其进行组织。
构建自己的项目时也应该使用此命令。

执行该命令时,对于UTS2材质,其余着色器关键字将优化为_EMISSIVE_SIMPLE
/ _EMISSIVE_ANIMATION
和_OUTLINE_NML
/之一 _OUTLINE_POS
。在着色器编译期间需要这些,因此请保持原样。
2.“基本三色和控制地图设置”菜单

此菜单定义UTS2使用的基本颜色:BaseColor(基色),第一阴影颜色和第二阴影颜色。
这些颜色按照光源的方向,基本颜色⇒第一阴影颜色⇒第二阴影颜色的顺序排列。
通过将纹理中的每个像素乘以每种颜色,然后乘以浅色来确定每种颜色。
※提示:阴影颜色不必比基色更暗,并且使第二阴影颜色比第一阴影颜色更亮也没有错。事实上,这样做可以给人以反射环境光线的印象。。
※提示:内容的设计决定是否使用第二个阴影颜色。如果没有使用,也没有必要指定一个。。
从子菜单中,您还可以为基本三种颜色,法线贴图,阴影控制贴图设置纹理的共享设置。


“法线贴图设置”子菜单
此块是执行法线贴图设置的位置。

法线贴图通常在UTS2中用于阴影颜色渐变。。
使用法线贴图和标准着色可以实现更复杂的渐变效果。在上图中,左侧反射法线贴图,右侧不反映。
此外,法线贴图用于通过将其与刻度一起使用来调整皮肤纹理。此外,通过为MatCap准备法线贴图,它用于表达头发纹理。


通过使用法线贴图,您可以使用各种表达式。



※提示:法线贴图也可用于像凸起一样的伪固体效果。但是,法线贴图实际上不会使对象几何体的表面凹凸不平,而是会使照明产生凸起的外观。因此,需要设置基色/第一阴影颜色/第二阴影颜色步骤,以便光更容易产生这种效果。在上面的示例中,“基本颜色”步骤设置为0.8,“阴影颜色”步骤设置为0.5,使用稍暗的Hi-Color将对象强调为实体。
“阴影控制贴图”子菜单
指定位置贴图和着色等级贴图以调整阴影下降条件。
根据您使用的着色器,子菜单中的项目将更改。
●DoubleShadeWithFeather着色器


【什么是Position Map(位置图)?】

无论光照如何,“位置图”都指定要投射的阴影。
除了您需要在每个场景中显示特定阴影或有导致添加阴影的原因时,它还可以添加到除光照之外的材质中。
※提示:使用像Substance Painter等3D画家直接绘制阴影可能更容易。
【第1和第2阴影颜色位置图如何交互】

为了显示与光照无关的第二个阴影颜色,请务必填写第一个和第二个阴影颜色位置贴图重叠的位置。
这样,即使其他灯光的阴影落在第二个阴影颜色区域,它也会继续显示。
另一方面,对于未显示第二个阴影颜色的区域(由第二个阴影颜色位置图指定的区域,而不是第一个阴影颜色位置图),第二个阴影颜色仅在由阴影创建的阴影覆盖时显示照明。
●ShadingGradeMap着色器


【什么是Shading Grade Map?】
Toon_DoubleShadeWithFeather.shader
是UTS2中的基本着色器,该着色器基于着色等级图,这是一个着色灰度图。该Toon_ShadingGradeMap
着色进一步扩大使用UV点控制阴影。

添加Shading Grade Map
到普通的香椿着色器允许将第一和/或第二阴影颜色控制在UV点水平。
这张地图的精确控制水平使得“ 光线照射时可以将衣服上的皱纹隐藏”成为可能。
图像的黑色部分由第二阴影颜色处理Shading Grade Map
,并且阴影下降的方式基于灰色部分而改变,灰度部分取决于黑色部分的密度。
灰色越浓,阴影就越容易落下,因此阴影也会落在两个灰色区域之间。
将阴影遮挡贴图等阴影贴图应用到阴影等级贴图可以使阴影更容易根据光照下降。这对于创造跟随头发刘海或衣服凹陷部分的阴影之类的东西很有用。
3.“基本Lookdevs:着色步骤和羽化设置”菜单

此块是设置基色/第一阴影颜色/第二阴影颜色步长和羽化强度的位置。除了实时定向灯设置外,这些是UTS2中最重要的设置。这些设置将决定您的内容的基本外观。此菜单是收集制作Cel和插图样式的基本项目的地方。
可以在Unity中实时重复检查这些设置。
无需渲染和确认每个属性更改的效果,从而更容易有意设计和组合内容。
调整“阶梯”和“羽化”参数以创建完全不同的外观,而无需更改光源的方向。
【使用阶梯/羽毛滑块的基础知识】

这包括使用控制颜色级别的“ 步骤”滑块和“ 颜色”滑块的基础知识,该滑块控制颜色之间边界的渐变。
●DoubleShadeWithFeather着色器
DoubleShadeWithFeather着色器中有常见项目,UST2中的标准着色器。
这些着色器可以具有2个位置贴图,这是一种特殊功能,无论光线如何,都可以将第一和第二阴影颜色固定到模型上。


●ShadingGradeMap着色器
这些项在UTS2的高规格ShadingGradeMap着色器中很常见。
具有阴影等级地图的着色器可以控制与照明相关的阴影的锐度和强度。
这些贴图允许您设置任何形状的阴影和任何您喜欢的位置,无论几何形状或向量。
与点地图相比,除了放置阴影之外,阴影等级地图还可以根据光线照射它们的方式调整阴影的外观。


“System Shadows :Self Shadow Receving(系统阴影:自我阴影接收)”项目
这些是调整项目,使Unity的阴影系统和卡通阴影很熟悉。
在卡通阴影的情况下,系统提供的阴影是表达角色的自我阴影(自己的阴影)所必需的。
在使用“基本外观:着色步骤和羽化设置”子菜单项确定着色级别后,如果要进行进一步的微调,请使用此选项,并希望微调ReceiveShadow退出的方式,例如自阴影。



使用Unity的系统阴影并调整“Step”滑块时,阴影颜色区域可能会出现噪点。这些噪音在Cel-look风格中很麻烦,因此我将向您展示如何使用System Shadows Level
滑块和改进它们 Tessellation
。
还有其他方法可以消除噪音,因此请参阅本手册中的附加说明。
“Additional Settings(其他设置)”子菜单
这些是主要用于在ForwardAdd路径中处理的实时点光组的调整项。
此子菜单在Mobile / Light版本中不可用。


【调整点光源的不同颜色:Step Offset,PointLights Hi-Cut Filter】

在UTS2 v.2.0.5中,我们改进了不使用羽化的cel-style中的实时点光源的反应。因此,我们可以通过点光源创建一个带有阴影的外观。
这可以通过调整基色/第一阴影颜色,第一阴影颜色/第二阴影颜色的步进滑块来完成。通过点光源,与定向照明相比,移动时阴影的变化更加明显。
为了使其不那么明显,请使用“Step_Offset”进行更精细的调整。

通过使用“Step Offset”,您可以调整实时灯光Step(渐变级别),例如将添加到ForwardAdd路径的点光源。
“BaseColor_Step”上的调整将决定主灯的渐变,但您也可以使用它来调整点光源设置。
通过同时使用“Step Offset”,您可以调整点光源的更精细细节。特别是,在表达机器相关艺术的亮点时,这很实用。
照明的亮度取决于物体的接近程度,因此在某些情况下高光可能太亮,尤其是基色(亮色)。
发生这种情况时,您可以打开“PointLights Hi-Cut Filter”使高光变暗,并使其与cel-look融为一体。
如果您希望高光更亮,请关闭“PointLights Hi-Cut Filter”。
4.“HighColor设置”菜单

高光彩色也称为高光或窥镜照明。
它用于反射主要的定向光。当光移动时,反射也相应地移动。在UTS2中,您可以调整高显色性。


※提示:如果要启用高色彩的实时点光源,请设置PointLights Hi-Cut Filter
为 Off
。

通过使用HighColorMask,您可以根据角度调暗反射太多的光(在皮肤等上)。
这在突出脸颊和胸部的肤色时非常有用。


您还可以使用HighColorMask作为反射曲面的镜面反射贴图。所以它也可以用于金属质感。
正如Akatsuki Yuki(@AkatsukiWorks)的作品中所见,通过使用HighColorMask和RimLightMask,您可以创建看起来像插图的艺术,但也可以渲染每种材质的纹理。
5.“RimLight设置”菜单

在逼真的风格中,RimLight 是一种将光线设置在物体边缘上的技术。
在包含Toon Shader的非照片级真实样式中,高光也放置在对象的边缘以使其更加可见,它也被称为RimLight。
您可以在UTS2中使用这些RimLight选项。




RimLight也可以像HighColor一样过曝,具体取决于相机的角度。
在UTS2中,您可以调整RimLight的蒙版以使其更暗。
在上图中,RimLight在光源方向上的颜色和光线反射的方向发生了变化。边缘灯也被遮住腋下,以防止不必要的高光。



通过遮盖RimLight,您还可以强调与其他材料相比的金属质感,或调整衣服上的偶然光线以在天鹅绒上产生皱纹。
6.“MatCap:纹理投影设置”菜单

MatCap是一个基于相机的球体贴图,可以粘贴到对象上。它用于ZBrush纹理渲染。
当您使用Google图片搜索Matcap时,您可以找到很多示例。在基于物理的着色器很常见之前,它被用于创建金属反射。
除了金属纹理之外,您还可以使用Matcap创建各种纹理。
在UTS2中,您可以使用添加模式以及乘法模式来享受MatCap。
※建议:UTS2 v.2.0.5及更高版本,将对相机造成的失真进行适当调整。因此,即使物体在相机边缘处开启,Matcap也不会失真。。



在上面的示例中,Matcap用作类似的环境贴图。
通过使用MatCap,您可以创建光滑表面的光反射,同时保持插图样式。

在上面的示例中,MatCap,MatMap用法线贴图和MatcapMask用于表示头发上的光反射。
MatCap_Sampler:用于倍增的浅圆圈。
NormalMapForMatCap:如果仅使用MatCap,它将按原样渲染,但通过重复使用NormalMapForMatCap,可以创建新月形光反射。这被称为窥镜掩蔽。此处使用的法线贴图不用于凹凸纹理。
MatcapMask:调整显示MatCap的范围。通过垂直设置渐变蒙版,并调整“遮罩遮罩级别”滑块,可以轻松控制所显示的MatCap的范围。

您也可以使用MatcapMask表达这样的Light Cookie。
7.“AngelRing投影设置”菜单

天使环是一个突出显示,始终从相机的角度显示在固定的位置。它用于头发的亮点。具有Angel Ring功能的着色器可以在AngelRing文件夹中找到。

天使环受到投射的网格的UV2的影响。因此,您必须事先设置DCC工具的UV2,如Maya,3ds Max,Blender等。


●为Angel Ring制作材料。
首先,设置第二个UV,它将应用于头发网格的Angel Ring功能。
AngelRing的UV与头发纹理的UV分开,并从角色的正面正交创建。

这里的步骤,包括创建UV2,是使用Maya,3ds Max,Blender等DCC工具完成的。
通过使用AngelWing的UV作为指导,绘制高光的纹理。高光的颜色将添加到原始颜色。
将创建的纹理注册为AngelRing_Sampler。
您可以使用白色绘制高光并在AngelRing_Color中添加颜色。

如果使用Active
with Use α channel as Clipping Mask
,您可以使用AngelRing纹理中包含的α通道作为剪贴蒙版,如下所示。
您可以直接设置AngelRing的颜色,而不是添加它。

8.“Emissive:Self-luminescene Setings”菜单

发光意味着物体发光。
通过为“Emissive” 定义HDR颜色,您可以创建比其他颜色更亮的部分。

通过将其附加到相机上的后期效果(如后处理栈中的Bloom),您可以使部件有效地发光。





这是@einz_zwei的一个例子,其中非常有效地使用了发射部分。
通过组合彩色地图和发射地图,可根据灯光的亮度添加细节。
●如何使用Alpha通道创建纹理
使用Photoshop等DCC工具创建带alpha通道的纹理。
您可以通过从通道选项卡添加新通道并在创建的通道上粘贴灰度图像,将其用作Alpha通道。如果您使用具有Alpha通道(如Targa格式)的图像格式,则可以保存原样。

要在Unity上启用Alpha通道,Alpha Source
请 Input Texture Alpha
在每个纹理的“导入设置”中设置。
在PNG格式的情况下,不能直接在图像规范中使用Alpha通道,因此在Photoshop中将Alpha通道加载为选择范围后,指定“图层蒙版>选择范围外的蒙版”,PNG保存格式。


然后将其导入到统一,并在导入设置,设置Alpha Source
到 Input Texture Alpha
和Alpha Is Transparency
到 ON
。

●设置目标颜色的提示
使用色移功能时,将其设置Destination Color
为目标,但如果原始颜色和目标颜色具有相同的色调,则可能会在帧中混入意外颜色。例如,如果从箭头左侧显示的颜色切换到右侧看起来相似的两种颜色之一,则箭头右侧的第一种颜色会在相同的色调范围内移动颜色。第二种颜色是蓝色框架的混合物。

这是因为混合蓝色帧的颜色具有与原始颜色的RGB相比具有更高值的B通道。
以这种方式,当以这种方式将具有相同色调的不同亮度的颜色移位到目标时,通过对准每个RGB的变化方向,可以防止意外的颜色进入帧。

↑同一色调内的色移示例。目标颜色RGB值均小于原始颜色。

↑色调外的帧混合的示例。目标颜色的B值高于原始颜色,并且G值的变化非常大。
9.“Outline设置”菜单

我们对轮廓函数使用基于材质的对象的倒置轮廓方法。
简单地说,这种方法使用着色器产生比原始对象略大的倒置表面法线。
产生对象轮廓的对象是使用前剔除绘制的,因此当它被原始对象覆盖时,不适合的部分将成为轮廓。
这种方法轻巧,易于调整,长期以来一直被用于游戏大纲。
请注意,不会在对象周围绘制实际线条。
参考:您也可以在对象周围绘制线条,但这主要用作后期处理(后期效果)轮廓。。
后处理中使用的轮廓类型会影响速度和质量。在游戏中,使用倒置对象方法和轻度后处理方法进行调整。


“高级轮廓线设置”子菜单
此子菜单中的项目可以进一步增强轮廓功能。


●调整轮廓强度:轮廓采样器

黑色表示“无线”,白色表示宽度为100%。
**提示:提示:当您使用Outline Sampler处理多个字符时,通过统一每个字符部分的UV位置,您可以更轻松地调整轮廓的开始和结束。**
●补充对象的反转轮廓:UTS_EdgeDetection
在UTS2中使用的反转对象轮廓是一种已经使用了很长时间但仍然用于实时敏感的游戏的技术。
另一方面,今天的机器性能要好得多,因此它也可用于附加在相机上的基于材料的轮廓和后处理效果轮廓。

UTS2还有一个名为UTS_EdgeDetection的后效应 ,它与倒置的对象轮廓一起使用。
通过将UTS_EdgeDetection附加到主摄像机,UTS2的倒置物体轮廓看起来更好。

UTS_EdgeDetection在UTS2的项目路线UTS_EdgeDetection.unitypackage中提供。
您可以通过将其拖放到Unity来安装此软件包。ToonShader_CelLook.unity
是示例场景所以请检查附加到场景主摄像头的UTS_EdgeDetection组件。
●UTS_EdgeDetection.unitypackage

这是一种后效边缘提取滤波器。
除了通过修改统一的所做的三个过滤器标准的资产,索贝尔彩色滤光片已被添加。
通过使用Sobel彩色滤光片,您可以有效地强调线条边缘,并再现细胞图纸的色彩效果。
●跟踪烘焙顶点法线:为轮廓线烘焙法线
现在,您可以在设置反转轮廓时,另外读取具有顶点法线的法线贴图。通过使用此功能,您可以根据烘焙法线贴图为硬边对象提供软边轮廓。
使用烘焙法线贴图时,请将UTS2的轮廓设置属性设置为。
轮廓模式为“法线方向”
使用Baked Normal for Outline(为轮廓线烘焙法线)作为“Active”
将要使用的贴图应用于Baked Normal for Outline
可用作大纲的烘焙正常的法线贴图如下。
不与要应用的对象的UV重叠。这意味着UV扩展和所有法线贴图不会重叠是至关重要的。
正常的地图基于OpenGL,就像Unity一样。
法线贴图的纹理设置如下:
·将纹理类型设置为 “默认”。注意:请勿将其设置为“法线贴图”。
•确保将sRGB(颜色纹理)设置为“关闭”。
有关更多信息,请检查示例项目的Baked Normal文件夹中的资源。
注意:这种顶点法线调整是由顶点着色器完成的,因此它将取决于它将应用于的顶点数量。这意味着它不像像素着色器那样校正顶点法线,所以请小心。

通过输入值Offset Outline with Camera Z-axis
,可以在Z方向上偏移轮廓。
当你的模特有spikey头发来调整尖刺的轮廓时,你可以使用它。
在正常情况下,请将其设置为0。
10.“DX11 Phong Tessellation Settings”菜单
您只能在Windows / DX11的 UTS2上使用Tessellation 。


我们使用Nora的https://github.com/Stereoarts/UnityChanToonShaderVer2_Tess 作为处理此问题的代码的参考。
每个平台都没有Tessellation,也需要良好的PC环境,因此请考虑到这一点。
它可以与具有功能强大的GPU用于视觉和VR的Windows10 / DX11机器一起使用。
Light版本是一个只有一个方向灯照亮的版本。
11.“LightColor对材料的贡献”菜单
该菜单收集可以在场景中为每种颜色单独打开/关闭“实时光的颜色的影响”(LightColor Contribution)的开关。
在这种情况下Active
,实时光的颜色对每种颜色的影响是有效的,并且在这种情况下Off
,当强度= 1时,每种颜色的设定颜色按原样显示。

从此菜单中,您可以集中管理每种颜色的亮色促成的存在/不存在。
在实际使用场景中使用的角色灯时,您可以实时查看每种颜色的效果在有/无光促成的情况下如何变化。用它来完成look-dev是个好主意。


※提示:关闭任何颜色开关都会使该颜色的光强度设置为1,浅色为白色,无论环境中其他灯光的强度如何。
12.“环境照明促成设置”菜单

在此菜单中,将UTS 2的响应调整为“环境光设置”(环境光照,包括天空盒,渐变和颜色)和场景中的光探测器,并调整启动的着色器内置灯的亮度在没有实时定向灯的环境中包括项目。此菜单
还可以控制像SceneLights Hi-Cut Filter这样的白色防跳功能的ON / OFF ,这对VRChat用户来说是一个很有用的功能。


●确定光探头的亮度:GI强度

↑左:GI强度= 0,右:GI强度= 1.当GI强度值上升时,光探针的颜色将添加到材质颜色。

↑这是一个烘焙点光源和一个位于舞台上的光探测器的示例。每个范围内的烘烤灯重叠都没有问题。从Unity-chan的顶部到底部的线光探测器。
通过将“GI强度”设置为0及以上,它将与光探针等GI系统兼容。
在具有其他烘焙灯的场景中烘焙的光探针将作为补色添加到材料颜色中。当为1时,加入光探针的颜色加100%。当它设置为0时,它是材质颜色的颜色。
●调整环境混合:熄灭强度
环境光设置现在反映在浅色中。定向光的最小强度是场景的环境光的设置。
在VRChat中,可以使用Unlit_Intensity滑块调整环境光的亮度。
Unlit_Intensity可提高环境光的亮度。
默认值为1。
如果场景中没有方向光,则使用着色器中包含的默认光源,方向始终根据摄像机的位置。
因此,照相机指向的地方总是很好。
当环境光混合时,此灯将起作用。
●当场景中有多个亮灯时,防止过度曝光:SceneLights Hi-Cut Filter
SceneLights Hi-Cut Filter是VRChat用户非常有用的功能。
●添加内置灯光方向作为高级功能
作为有经验用户的高级功能,您现在可以设置着色器中内置的光线方向向量。激活了内置光方向的材质可以有自己的光方向矢量用于着色目的,这与网格对象的坐标无关。这意味着它具有与专用固定灯相同的效果。
此部件的阴影将用于场景中的方向光,因此您还可以更改阴影和阴影的外观。要设置内置灯光方向的灯光颜色,请使用场景的主要方向灯设置。

这期内容非常之长,本来想分开来一点点研究,但是感觉内容会有割裂感,就全部一起写了。另外,还有一些内容,我们在后面再进行研究。至于为什么要深入研究UTS,主要是因为它是Unity卡通渲染插件里效果非常不错的一个,而且还是免费的。另外因为内容特别多,所以如果有疏漏和错误请同学们指出。