新浪博客

简单谈一下maya中的法线贴图

2015-11-20 12:02阅读:
这两天有人问我怎么在maya中调整法线贴图的强度。

我一直记得maya软件中的bump depth属性,只可以调节bump的强度,如果把bump的计算类型改成tangent space normal或者 object space normal,那么bump depth的值将完全不起作用。也就是说在maya软件中无法直接调整一个法线贴图的强度。


所以就需要手动来调整。如果不要求那么精确的话,思路是:保持B通道不动,同时倍增R和G通道的强度。
简单谈一下maya中的法线贴图



那么按照这个思路来做的话,很简单了,就是把normal的 out color 连入到一个multiply 节点里面去,R和G乘以一个相同的倍增值,而B乘以1。最后再把结果输入到bump节点里面去。


然而让我没想到的是,我有一个细节从来没注意过:maya中的bump节点,接受法线贴图信息时,接受的是out alpha这一个通道,而不是我以为的out color!
简单谈一下maya中的法线贴图
这实在太令人匪夷所思了,一般情况下,如果图片自己不带alpha通道,out alpha通道记录的信息是RGB通道的明度信息。而法线贴图因为技术问题,肯定是要三个通道一起起作用的,一个alpha灰度通道的结果不可能取代法线贴图三个通道的作用。


查了半天没有具体的资料,不过也有一些人法线了这个问题。 简单谈一下maya中的法线贴图这个很厉害的写插件的家伙也说了,maya里把bump2d 节点设置成法线贴图模式的时候,bump节点肯定从连入的法线贴图里获取了它需要的信息,但肯定不是通过alpha传入的,在这个连接过程中,有一些猫腻。


那具体这背后到底发生了些什么事情,只有写这个功能的程序员清楚了。


那么我还是想到了解决方法,既然bump节点想要输入的是alpha,那么我就找一点能产生alpha的节点来作为中间的桥梁好了。于是我连了这一套节点:
简单谈一下maya中的法线贴图
我使用了一个layerTexture节点作为中间的桥梁,把multiply节点倍增的结果,输入到layerTexture节点里面去,这个layerTexutre节点本身不起任何实际作用,仅仅为bump2d节点提供alpha的,毕竟multiply节点上没有out alpha啊,只好拿你来当中间人了。
这套节点起了作用。




最后要说的:
1)该问题实际上只在maya2014以及之前的maya版本中才有,maya2015以及之后的版本,已经可以直接通过bump2d节点的bump depth参数直接调整法线贴图的强度了。应该是程序员优化了。那么升级软件是解决这个问题最好的方法。


2)关于法线的问题都比较复杂,文中介绍的方法只是调整法线贴图强度的一种不精确的做法,调整了以后可能会出现各种瑕疵。正确的做法是修改了RG通道的强度以后,要根据这两个通道修改的信息再来求B通道。不过大部分时候我们不需要做到那种程度。


最后再安利一下我的新教程:http://www.vhxsd.cn/course/129

我的更多文章

下载客户端阅读体验更佳

APP专享