对虚拟形象应用自定义法线
介绍
如果你不曾喜欢你的二次元虚拟形象像在某些光照下的观感,那么你很有可能遇到了可怕的“水桶脸”!二次元脸部在设计之初就没打算以它的模型形状获得合理的阴影关系,而鼻子、嘴唇和眼睛凹陷处的丑陋阴影在无时无刻提醒着你眼前的是一个3D模型,而不是一个地道二次元。
一个模型的照明效果是通过其顶点法线来计算的,顶点法线可以被理解为顶点朝着的方向。当然我们可以通过轻易修改顶点法线来任意改变模型的阴影关系!许多 Booth 模型也使用了这种技术,本指南是针对于如何修改那些没有使用技术的模型的,一个快速、轻松地在模型上应用“足够漂亮”的自定义法线的速成课程。
本指南预设你已拥有并且知道如何使用Blender(不算熟练也没关系)。因为这并不是一个可以直接在Unity中完成的工作(据我所知)。
"Torahime",自定义法线
准备
此方法只能在 Blender 2.8 或以上版本中使用。我们要使用的附加组件“Abnormal”不支持 2.79。如果你仍在使用 Blender 2.79,请尝试使用 Blender 3.0!它有着很大的改进,学习曲线应该不会比以前更加陡峭。
这是来自 Blender NPR(非真实感渲染)社区的 Blender 官方法线编辑插件。它有着一个有点奇奇怪怪的界面,但我们只会用到几个按钮。请先从 Release 页面下载一个.zip文件。
请注意,当我写这个教程的时候,我正在使用 Abnormal 1.1。自那时起,界面已完全改变。我还没有时间为新界面更新教程。
github.com/bnpr/Abnormal/releases
找到 Edit -> Preferences,然后转到 Add-ons 面板。
点击“Install”按钮,找到您下载的.zip文件并选择它。在安装插件之后它应该会自动出现。选中“Abnormal”插件。
如果“Abnormal”已正确安装,它将会出现在右侧的面板中(用鼠标单击或点击N键以打开)。
现在你只需要一个模型用以实践。如果你走运的话,这个模型可能就会附带一个易于打开的 .blend 文件。如果你正在使用 Booth 模型或其他不是 .blend 格式的模型,请直接导入文件!此类模型通常会是 .fbx 格式,Blender 可以很顺滑地导入这些格式。
速成课:顶点组绘制
我们需要告诉 Abnormal 哪些顶点需要受到影响,哪些不受影响。Abnormal 使用顶点组来实现这一功能。顶点组通常用于模型的绑定和蒙皮,这是一个被称为“权重绘制”的过程,但这也可以被用于其他任何目的,在当前的情况下,我们不需要它们进行过于复杂的处理。
如果您的模型已经被分成了几个部分,请隐藏那些遮挡头部和面部的部分,以使其更容易被处理。在编辑模式下,使用“选择相连元素”选择头部网格,您可以通过选择单个顶点并点击“选择->选择相连元素->相连元素”或通过将鼠标悬停在模型的一部分上并按下“L”来实现。
使用“Ctrl+I”或通过选项栏“选择->反向”来进行反选。我们不打算应用自定义法线的模型部分(如睫毛、瞳孔、眉毛等)现在应该是被选中了的,如果没有,您可以通过多次点击“L”以选择更多链接部分或通过使用“Shift+L”取消选择您不想隐藏的部分来细化选择。在视频中我还隐藏了嘴巴连着的内部部分。
使用“H”(或“网格 -> 隐藏”)来隐藏这些选定的部分。
现在您需要切换到“权重绘制”模式。创建一个新的顶点组,并将其命名为“Custom Normals”。请确保“X轴镜像”已启用而“顶点组镜像”处在未启用状态,这就让我们只需完成一半的工作。在这之前请确保“自动法向”已关闭。
启用模式选择框旁边的“绘制遮罩”复选框。您在编辑模式下选择隐藏的所有内容现在都应被隐藏。按A键选择所有可见内容。
绘制脸部的前部,并小心不要绘制到头部的其他部分。如果您的模型有凹入的眼睛(动漫模型通常如此),您还可以绘制巩膜,因为我们倾向于将巩膜与脸部以相同的方式照亮,以呈现二维外观。
使用模糊工具来平滑您刚刚绘制的边缘。对于处理顶点组和权重绘画来说,模糊工具是您最好的朋友。工作完成后,它应该看起来像这样:
自定义法线1:“平”面
将自定义法线应用于面的最简单方法是将其展平,使表面看起来像一个均匀照明的平面。
选择您的头部/面部网格,打开右侧面板(按N)。在“Abnormal”界面中有一个下拉框,此界面会显示您的网格顶点组列表。选择我们之前创建的“Custom Normals”顶点组。
点击“Start Normal Editor”以开始使用 Abnormal。每个顶点此时都应在被选中状态,您会看到代表法线方向的长粉色线条朝着各个方向发散。
在“Align to Axis”下,点击-Y按钮。这将使面的法线一次性地沿Y轴负方向(向前)对齐。现在,您的脸部的着色应该看起来完全平坦。在大多数情况下这其实已经相当不错了,但我们可以做得更多。
自定义法线2:圆柱面
对脸部进行圆柱形着色要稍微高级一些,但仍然是一个简单易上手的流程。
选择你的头部/脸部网格,打开右侧面板(按N)。在“Abnormal”界面中有一个下拉框,此界面会显示你的网格顶点组列表。选择我们之前创建的“Custom Normals”顶点组。
点击“Start Normal Editor”以开始使用 Abnormal。每个顶点此时都应在被选中状态,您会看到代表法线方向的长粉色线条朝着各个方向发散。
选择“Sphereize Normals”,然后选择“Confirm Sphereize”以应用设置。脸部的法线现在看起来会是球形的。在“Flatten Normals on Axis”选项栏中按Z选项。点击“Finish Modal”面板下的“Confirm Changes”。脸部的着色现在已经是圆柱形的,而我们需要进一步细化它。
选择你创建的“Custom Normals”顶点组并复制它。在权重绘制模式下启用“绘制遮罩”并再次选择所有内容。使用“权重->级别”工具,将增益值调整为0.5,以此将复制顶点组的影响减半。
回到对象模式,再次打开 Abnormal 面板,并使用下拉栏选择你复制的 Custom Normals 组。进入 Abnormal,并在“Flatten Normals on Axis”下点击X选项。由于复制的顶点组影响,此操作只会对选定的法线产生一半的影响,而这会将它们沿X轴扁平化一点。
脸部的着色现在看起来会像一个更大的圆柱体,表面更宽。
自定义法线3:"两个半"面
选择你的头部/脸部网格,打开右侧面板(按N)。在“Abnormal”界面中有一个下拉框,此界面会显示你的网格顶点组列表。选择我们之前创建的“Custom Normals”顶点组。
点击“Start Normal Editor”以开始使用 Abnormal。每个顶点此时都应在被选中状态,您会看到代表法线方向的长粉色线条朝着各个方向发散。这会让我们有点难以看到到底发生了什么,所以这次让我们把“Normals Length”(在右侧面板)减少到合理的大小,比如 0.03-0.04。
在“Align to Axis”下,点击-Y按钮。现在你的脸部的着色应该看起来完全平坦。我们需要选择脸部的一半,为了做到这一点,我们需要一个很好的视野。通过点击右上角相应的轴(-Y)获得一个正交前视图。现在取消选择所有内容(Alt+A),然后使用“框选”(B)选择脸部的一半。不要选择中间一排的顶点列。在X轴上启用“镜像轴”。当选择脸部的一半时,使用 Gizmo 将脸部的一侧沿Z轴(蓝色)旋转远离。
现在脸部应该有两个平坦的半面着色。禁用镜像轴。您会发现中间的折痕有点尖锐,但我们可以简单地选择所有内容(A),然后使用您所满意i的的Smooth Strength 和 Smooth Iterations 加以应用“Smooth Selected Normals”。通常1.0的 Strength 和默认5次 Iterations 就足够了。