朱峰社区表示在遇到normal map上出现接缝时是十分棘手的。它不像diffuse和specular那样,可以直观的在zb或者bodypaint里用投射的方法去修平。这是因为normal map本身原理所致。
在这里我想先再详细讲一下normal map的原理。如果你觉得自己对normalmap已经非常熟悉可以跳过这一节。
● normalmap 原理:
我建议新手在得到一张normalmap时,把red/green/blue三个通道分开来看,因为normalmap的三个通道之间是互相独立的,在r/g/b三个通道中,不同的灰度,表达了低模表面上法线偏移的程度。大家知道,法线在物理中的定义是垂直于物体表面的一条假想的直线。而在maya中,法线的概念并不一样,它不一定要垂直于物体表面,并且具有方向行。我们可以在maya中直观的看到物体上每个顶点的法线的方向。
显示顶点法线后的模型:
我们可以选择顶点,用edit polygons->normals->vertex normal edit tool试着调整顶点法线的偏移。来让模型看起来与现在不同。
经过这样调整法线方向以后,模型表面像增加了一个曲度。这种调整的原理类似于normalmap对法线偏移的调整。只不过normalmap能够调整模型上的每一处细节;但用这种方法,只能调整低模上有限的点。
如果我们建立了如下图的高低模,并烘焙出法线贴图。
那么实际上是把lowpoly表面的法线偏移方向调整成了highpoly表面的法线方向。如下图。
● 结论和规律
我们再做一个简单的实验,测试了三色通道的具体含义,得出后面的结论。
这个是圆环模型
这个是用光照的方法生成的normal
以下是r、g、b三个通道:
red通道
green通道
blue通道
由上图得出以下结论:
在红色通道里:白色表示法线向右偏,黑色表示法线向左偏。
在绿色通道里:白色表示法线向下偏,黑色表示法线向上偏。
在兰色通道里:越黑表示越深。
如果想把某出的nomalmap填平,可以在上面覆盖一层rgb值为128、128、255的颜色,编号为:8080ff
maya里normalmap的绿色通道和max里normalmap的灰度相反。
有了这些研究成果,以后修改normal就方便多了。甚至可以手绘部分细节。
这样就可以得出下面的规律:
所有normal贴图的红色通道,都是在水平方向上有黑白渐变。
所有normal贴图的绿色通道,都是在垂直方向上有黑白渐变。
根据这个现象可以很容易的在通道里判断出哪里的normal不正常,需要红绿通道交换。
|
修理normalmap接缝 在做人物的时候如果遇到下图这样的接缝,最开始做的应该是弄清是哪张贴图产生的接缝,而不要盲目的直接去修diffuse。正确的做法应该是排除其他贴图的干扰,单独贴上diffuse, 修掉diffuse上的接缝,再单独把 specular贴到color上修掉接缝,最后再修normalmap的接缝。 对于diffuse和specular上的接缝,可以很容易的用zbrush的zapplink插件修掉。但对于normal上的接缝,是不能用直观的方法修掉的。因为接缝两边的法线偏移的值并不是相同的,也就是说,颜色是不同的。下面我们就来探讨一下如何去处normalmap上的接缝,而不仅仅是用8080ff的颜色把所有细节涂平。 我们先排除其他贴图的干扰,只贴normalmap,可以看到有一条明显的接缝。现在的法线看起来似乎是图上箭头所表示的趋势。在前一节已经探讨了normalmap的原理。脖子后面接缝的产生也是因为左右两边法线偏移方向不对。我们要想修正这条接缝就是调整要normalmap上的颜色,使接缝两边的法线方向一致。 ↑现在看上去的法线方向 ↑修改后应该达到的法线方向 所以要将左边绿色网格对应区域的法线向左偏,白色网格对应区域的法线向右偏。 根据“在红色通道里:白色表示法线向右偏,黑色表示法线向左偏。”的原则,要在红色通道里把绿色网格那边的normalmap加深,白色网格那边的normalmap减淡。这样就可以把接缝修掉了,而且不会损失normalmap上的细节。如图: 在红色通道里把绿色区域接缝附近的normalmap的减淡(上图),把白色区域附近的normalmap的加深(下图)。 这样就把脖子后面的接缝修掉了。虽然看起来原理很复杂,但只要理解了每个通道所代表的含义,很直接的会想到在通道里用加深减淡的方法修正法线偏移。如果实在弄不清到底是用加深还是减淡,就先随便用加深或者减淡试一下,如果接缝变浅了那就对了。但记住,修接缝的时候一定要排除其他贴图的干扰,只贴一张图去修。最终修好的效果如图: |
评论