Blender中通过修改法线获得圆滑头发阴影

前情提要

最近在研究怎么获得圆滑的头发阴影,发现可以通过修复法线的方式轻松实现该效果,于是赶紧写篇博文记下来免得以后忘记...
如果你能顺利掌握这篇文章中的奥义,你就可以将不规则的头发阴影:

变成这样圆滑好看的头发阴影:

前期调研
(此部分记录调研历程,不想看的同学可以直接跳到后面的具体实现)
之前看大佬们教程的时候,头发阴影这一块总是轻描淡写地就过去了,然而作为一只萌新小白只能表示一脸懵逼。直到最近在B站上看到IOchair大佬在Blender里用到Abnormal插件进行法线修复,于是又仔细搜了搜。最后发现这篇英文教程讲得十分细致,值得借鉴。

具体实现
以下是俺的大致实现流程:
(1)
到github上下载Abnormal-master.zip文件并安装,装好后记得启用该插件:

(2)
用MMD插件导入一个原神模型(例如托马),把模型按材质炸开(如果要导入MMD动作最好先导入动作再炸开,不然我的模型不会动不知道为啥):

(3)
添加一个日光,设置好角度,可以看到头发阴影比较不规整:

(4)
选中头发,点击Start Normal Editor按钮:

(5)
可以看到面板里有很多功能,想有更深入的了解可以参考后面的参考资料。觉得法线太长的话可以调整Normals Length降低其显示长度。这里先按下A键全选所有头发顶点(没分离面片的话就可以按下C键慢慢刷了),然后面板中找到Sphereize Normals按钮,这个表示将球体法线传递到模型顶点上(应该是这样理解吧):

(6)
然后可以看到一个橙色的球体,半径应该没啥关系,只需把球体中心平移到使得阴影看上去平滑的位置(按下G键然后x键/y键/z键拖拽)。如果不想太圆滑也可以设置Sphereize Strength大小调整混合比例。最后记得先按下Confirm Sphereize再按下Confirm Changes来保存当前法线修改(如果不需要进一步编辑也可以直接按Confirm Changes):

(7)
然后把模型导出成FBX再导入到Unity中(记得在导入选项中把Normals改为Import),替换成之前的材质就完成了,是不是超级简单:

其它部位也可以用类似方法调整阴影形状,不过有时候调整法线是很tricky的事情...而且由于调整了法线,所以可能导致跟法线计算相关的轮廓线以及边缘光的效果发生变化,这些都是需要考虑的。比如上图直接把头发边缘光给关了,不然会出现大片不正常的边缘光:

不过人家原神里面有的时候头发也没边缘光嘛(终于给自己偷懒找到了借口233):

当然也可以狂按Smooth selected normals直到满意为止:

参考资料
Normal Spherizing using Abnormal
Abnormal Installation & Explanation (In 3 Minutes!!)
abnormal-wiki
腾讯TA大咖分享,做卡通渲染时对风格和影视化的探索
网易TA大咖带你走近卡通渲染,讲解关于Trick的两三事
blender中使用原神mmd模型附带的ramp贴图过程录屏

posted @ 2022-03-24 21:57  菜鸟少侠  阅读(1327)  评论(0编辑  收藏  举报