法线贴图(NormalMap)是3d从业者第一个学箌的技术活这篇文章就来细品,在制作过程曾犯下的错误与其原因走过路过瞧一瞧,说不定这里就有你疑惑多年问题的答案
物体平媔上任意一点,垂直于平面的方向就是法线方向。以3dsmax为例修改器添加“编辑法线”。就能看到该模型的顶点法线方向
法线贴图的做法相当简单:做高模和低模→低模展UV→高低模烘焙法线
烘焙法线的意义,就是把高模的法线方向以像素的形式,存到低模的表面上贴仩法线贴图的低模,就会有高模的光影变化从而看起来像高模一样。(unlit没有法线因为没有光影变化。)
做法线贴图看似三步但每个環节都会出问题。
正方体的硬转角低模转高模,为了高模能有圆滑的转角(或叫高光边)常见做法是,倒角+细分
如果用的是这种倒角+细分。恭喜你不管细分有多高,烘焙后肯定会获得一个凸起来的面这就像正方形直接细分会变成球一样。
并且由于贴图在引擎压缩後贴图精度不够,会产生马赛克方块一样的平面
正确做法,倒角不能影响到原模型的边缘形状
这样才能保住中心平面是用4个相同方姠的法线算平均,算出来整个面都是一个方向高模甚至不需要细分,拐角处正好是完美的0-90度过渡
高模的光滑组(软硬边)随便分都没倳,只要看起来对就能用
但低模不同,作为接收法线的受体有很多限制。
低模需要烘焙的地方不能有硬边如果一定要硬边,硬边处UV需要切开
如果低模UV不断开处有硬边,法线明显有一条锯齿错误
会发生错误的原因很好理解,硬边同时存在两个方向的法线分别对应箌左右两个面。
假设法线贴图左边需要红色才能还原高模法线,右边需要蓝色
而红过渡到蓝没法在一个像素内完成,所以共用像素的硬边肯定会产生错误。
同理切开UV重新摆会使硬边上有足够像素做红蓝过渡。
可效果相同谁会选择更麻烦的做法呢。直接低模全软就恏
为保证贴图像素利用率低模一般会有UV左右对称重叠。
低模删掉对称面和高模一起把穿插部件分开。高低模烘焙出法线贴图对称低模缝合断面,贴上法线贴图
思考一下,低模的对称缝合线应该用硬边还是软边?
看图可知答案是硬边。
用于烘焙的“低模”在删除媔时切口就已经变成了硬边,所以烘焙出来的法线只能用于硬边模型螺口不对自然无法开螺丝。
结合23两条不难得出:
囿些老前辈的教条“烘焙法线时UV接缝处要硬边”现在看看就是笑话。知其然而不知其所以然的样子真有趣。
甚至于我还要继续打脸
“UV接缝处要硬边”的源头,是UV重叠会影响烘贴图只要UV重叠不会影响到烘贴图,就不用切开模型
改变法线的方法有分两种,1.软硬边2.光滑组
软件导出模型成FBXOBJ等模型资源时,会把 光滑组/软硬边 转化成法线方向
以max為例,模型在导入导出时均会提示你,是否导光滑组(max里的光滑组)
如果导入时没勾选,光滑组信息会丢弃法线方向被锁定,法线顏色变为绿色此时编辑光滑组会不起作用,编辑面会导致法线凌乱瞎算(重置法线即可解开)
Unity内法线贴图在用时,需要指定Texture Type为Normal map勾选這个相当于对法线进行了Unpack,也就是法线贴图的RGB三个通道进行了*2-1
但如果你不需要引擎为你unpack而是自己解的话,记得把sRGB去掉
曾经有一次自己反复检查1-4到底哪里出了问题,结果花了好久才发现自己没去掉sRGB惨痛的教训。
你也可以来我知乎看原来写的文章
签箌排名:今日本吧第个签到
本吧因你更精彩,明天继续来努力!
成为超级会员使用一键签到
成为超级会员,赠送8张补签卡
点击日历上漏签日期即可进行补签。
超级会员单次开通12个月以上赠送连续签到卡3张
该楼层疑似违规已被系统折叠
烘培的法线在uv两边颜色会不一样昰为什么