MAYA中如何应用法线贴图教程.docx

上传人:b****3 文档编号:4628860 上传时间:2022-12-07 格式:DOCX 页数:22 大小:3.39MB
下载 相关 举报
MAYA中如何应用法线贴图教程.docx_第1页
第1页 / 共22页
MAYA中如何应用法线贴图教程.docx_第2页
第2页 / 共22页
MAYA中如何应用法线贴图教程.docx_第3页
第3页 / 共22页
MAYA中如何应用法线贴图教程.docx_第4页
第4页 / 共22页
MAYA中如何应用法线贴图教程.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

MAYA中如何应用法线贴图教程.docx

《MAYA中如何应用法线贴图教程.docx》由会员分享,可在线阅读,更多相关《MAYA中如何应用法线贴图教程.docx(22页珍藏版)》请在冰豆网上搜索。

MAYA中如何应用法线贴图教程.docx

MAYA中如何应用法线贴图教程

MAYA中如何应用法线贴图教程

法线贴图(NORMALMAP)是一种较新的贴图技术,类似于BUMPMAP,通过对模型表面的法线的矫正来用以表现模型的细节与纹理,其效果比后者要好,能达到BUMPMAP所达不到的效果,但是其并不能真正的在模型表面产生细节,相对于DISPLACEMENTMAP而言,又不如其满意。

而且其制作和应用很麻烦,问题也很多,所以这种技术CG中并不常用,不过,在游戏中却有相当的发展空间。

其他不多说了,先来看个图

为什么同一个模型(10*10段的多边形球体)会出来两种效果,我使用了SOFTEN/HARDENEDGE命令来柔化了右边的模型边,这样看起来就圆滑了很多!

我现在打开了CUSTOMPOLYGONDISPLAYOPTIONS,显示出来法线来看看区别

模型的法线有两种:

点法线和面法线。

面法线是在面中心发出,表示面的方向;而点法线是从点发出的,取决于点周围的面的方向,左右模型的区别说明了SOFTEN/HARDENEDGE命令工作原理。

同时也NORMALMAP的基础。

(其实还有一种:

UVCOODINATENORMAL。

但MAYA中似乎没有这个概念,这个东东是在NORMALMAP应用中许多问题产生的根源,这里暂不讲述)

下面我们开始。

建立一个POLYGON球体,参数如下。

然后再复制出一个隐藏。

打开HYPERSHADE,赋予这个球一个新的LAMBERT材质。

再建立一个SAMPLEINFO和SETRANGE节点,作如下连接:

这样我们把这个球的法线与摄象机信息输入,将其输出到物体材质的COLOR上,这里我的材质选择了SURFACESHADER,这并不重要。

只是为了方便观察效果

调节参数:

我们将法线变量转化为颜色值,需要重新定义取值区间,由[-1,1]转化为[0,1]。

颜色改变,但是你会发现硬件显示的颜色与渲染的颜色不一样!

这可是个问题的关键!

而且不管你如何移动或旋转摄象机和模型,物体的颜色分布都不变化,上面是绿色,左边蓝,右边红。

这可不是我们想要的。

这个问题的原因是因为SAMPLEINFO输出的法线信息是基于摄象机的,所以与摄象机关联,而并非物体本身,这样我们后面的得到的也是不能用的法线信息。

为了解决这个问题,我们断开SAMLPEINFO和SETRANGE之间的联系,新建一个VECTORPRODUCT节点,如下连接。

将透视摄象机的节点拖进,输入其世界矩阵信息到VECTORPRODUCT节点,运算方式为VECTORMATRIXPRODUCT,再将输出值连接到SETRANGE的

VALUE上。

这样做是矢量与矩阵运算,把摄象机坐标系转换为世界坐标系,这样摄象机的变化不在影响物体的颜色分布了,但是如果我们转动物体,问题仍然出现。

所以要把物体的变化的信息也要加进去,将世界坐标系转换为物体坐标系。

如果将此时的颜色转换为贴图,我们就叫它World-spacenormalmap。

(后面在介绍这些分类)

如图再加入如下类似的节点,注意这次选择的是WORLDINVERSEMATRIX。

图中COLORBALL就是这个球体的模型节点,你可以在OUTLINER中找到它,拖到HYPERSHADE里。

这样,我们看到颜色显示与渲染的一致了,以渲染出来的为准,这样移动摄象机或物体,颜色分布就正确的象贴在物体上一样。

选中球体和其材质,使用CONVERTTOFILETEXTUREOPTIONS将颜色转化为贴图,参数如下,分辨率和自行设置。

此时生成的贴图,颜色以红,绿,蓝分布类似彩虹,就叫做

Object-或Local-spacenormalmap。

这个与上面的World-spacenormalmap看上去会很类似。

显示出原来的复制出的那个低精度的球体,命名为NORMALBALL。

赋予一个材质,然后连接。

使用这样的贴图相当于一次逆运算。

我想不用多说了吧。

注意此时的SETRANGE节点参数,同样是逆转区间。

看看效果,我这里用的SOFTWARE渲染。

细节正确,但是光影却完全错误,阴影也象贴图一样“粘”在模型上,与灯光的位置毫无关系了,这可是不允许的!

所以,我们还要把NORMBALL的节点引入,再次逆运算。

这样,模型细节和光影都正常了,旋转模型和镜头都没有问题,可以用于构建场景了。

但是,这样就完了吗?

我们先来看看在HARDWARE渲染和HIGHQUALITYRENDING渲染结果。

这是什么玩意的一坨啊?

显然,在即时运算更新时显示是不正常的,这意味着对于游戏的设计显然是不可用的,同样,MENTALRAY渲染也是不行的!

而且后面还有更大的问题存在呢!

按F9进入点元素模式,对这个球随意进行一些变形。

再转回物体模式,渲染看。

注意场景中只有一盏灯。

发现了吗,光影还是错误的,又是这个讨厌的问题!

这就意味着如果要在物体以下的级别变形,比如蒙皮,绑定等,就会出现严重的问题。

在MAYA7以后有这样一组工具:

SURFACESAMPLER(相当于MAYA6中

TRANSFERSURFACEOPTIONS),这个工具里面包含了很多有用的工具。

当MAPSPACE选中OBJECTSPACE时,那么TRANSFERINWORLDSPACE

/OBJECTSPACE所生成的NORMALMAP就相当于World-spacenormalmap

和Object-或Local-spacenormalmap。

那么还有个TANGENTSPACE是什么呢?

TANGENTSPACE就是切线坐标,即与法线垂直正交的方向,其有个很重要的特性就是它是针对模型上的每个点的坐标,而不是整个物体,这正是我们需要的特性。

这个工具的用法我以前的帖子里讲过的,很简单的。

文件格式常用TIF的,有很多优势。

生成的贴图就是所谓的Tangent-spacenormalmap,其明显不同,颜色是以兰色为基调的。

这个应该说是比较完美的,不会出现前面的问题。

来看看。

MAYA中没有直接的NORMALMAP的通道,使用麻烦,不象3DMAX或LIGHTWAVE,所以这方面的文章才比较少,不过MAYA7以后加入了,它是隐藏在

BUMP2D的节点中,使用和BUMPMAP一样简单。

打开HIGHQUALITYRENDERING,这样我们终于看到了期望的结果。

而且各个角度都正常。

有时硬件即时显示并不能很正确,如果看不到正确结果,可以用

HARDWARE渲染一下看。

不过遗憾的是,MAYA中这个节点只能被硬件渲染,同样不支持在SOFTWARE和MENTALRAY渲染。

但是也是,本来MAYA中这个节点就是为了制作游戏而生的,针对的多是游戏中的渲染引擎。

还有人用这样的方法连接:

 

这种直接连接的方法可得到同样的硬件渲染效果,也可以软件渲染,但是光影失真;不支持MENTALRAY。

最大的问题就是:

如果要与其他BUMPMAP联合使用就会很困难。

至此我们可以先总结一下,以便有更好的理解和应用。

World-spacenormalmap

1.彩色.

2.使用后物体不能旋转和以点为基础的变形,否则材质和阴影会乱掉

3.适用于不动的物体(比如建筑物).

4.计算快

Object-orLocal-spacenormalmap

1.和World-spacenormalmap一样,不同的只是针对了部分元素游戏编码

2.物体可以旋转,但是不能在物体以下级别变形.

3.适用于某些简单机械运动中的元素(门,车辆,机械等)

4.计算较快

Tangent-spacenormalmap

1.以兰色为基调

2.物体可以旋转和变形

3.适用于变形物体(角色,水面,布料等)

3.计算最慢(并不经常).

如果我们要在软件渲染或MENTALRAY渲染中也应用该则呢们办呢?

一般来说,在MAYA中或第三方的渲染器渲染NORMALMAP,需要建立一定的节点来模拟,这可不是一件愉快的事情。

我这里用MAYA的节点软件渲染,看看效果:

还不错,但是它的节点却是比较复杂的。

这个节点来自于headus(metamorphosis)PtyLtd。

但是原节点的坐标并不适用MAYA(针对的是ZBRUSH),我将其修改重新连接。

总的来说就是要把摄象机的NORMALCAMERA和TANGENTU,V的信息都输出,与NORMALMAP输出的信息进行点乘运算,连接到物体材质的

NORMALCAMERA。

这样软件渲染时就可以收集到相应信息。

如果需要,我在后面共享了这个节点,耐心读完我的帖子,你可以找到它。

适用与任何版本的SOFTWARE渲染,速度较慢,不支持硬件渲染。

但是MENTALRAY就比较麻烦,目前我试验的节点如下:

相当于在软件渲染节点上再与透视摄象机进行矢量矩阵运算,输出到材质。

遗憾的是,只支持MAYA6.5以下的MENTALRAY版本,MAYA7中的MENTALRAY由于更新了渲染方式和代码,无效!

你也可以使用JanSandstrom的JS_Normalmapper的MENTALRAY节点。

但是同样是不支持MAYA7。

同时,在MENTALRAY渲染中可以使用GLOBALILLUMINATION,但开启FINALGATHER渲染无效!

这是由于FG的运算方式决定的,目前尚未有办法解决!

下来我们介绍一下NORMALMAP与BUMPMAP的联合使用。

从本质来说,NORMALMAP更接近BUMPMAP而不是DISPLACEMENTMAP。

但是也就是说NORMALMAP要和BUMPMAP合用,是很难发现区别的,所以会产生错觉,在应用中较难发现错误,这是在游戏运用中比较麻烦的,往往不能及时更正,导致计划拖延。

先来介绍硬件即时渲染中的合用。

BUMPMAP分为BUMP3D和BUMP2D,曾经有位介绍过了这两种

BUMP效果的合用,你可以在以前的帖子里找到。

但是在试验中发现,如果合用的话,其效果只能在软件渲染中体现,硬件渲染是无效的。

这样NORMALMAP和BUMPMAP直接采用这种合用,即时显示是无法正确的。

而我们需要在游戏制作中能即时浏览到。

所以我采用了层纹理(LAYEREDTEXTURE)来混合。

这里用了个BUMP3D的节点。

在层纹理中混合方式选择OVER,NORMALMAP在上层。

控制其ALPHA值调节凸凹效果(或BUMPDEPTH)。

注意!

这样做会其实是削弱了NORMALMAP的效果,所以ALPHA不能太低。

其实在后面的SETRANGE节点的用途是可以输入表达式通过与ALPHA值相关联的矫正削弱现象。

你也可以将BUMP3D层放在上层混合,你看看会有什么结果?

即时显示的效果出现,但是似乎哪里不对劲。

我前面提到了,这个区别是很难看出来,因为我们用的BUMP纹理并不是法线贴图,但是用法是直接连入,但仍有效,是因为其是3D纹理,这点视觉差别是几乎可以忽略的。

那么实际的用法该如何呢?

这里我们要用到一个小插件:

TranSpace(你可以在网上很容易找到)

它的作用是把BUMP信息转化为TANGENTNORMAL信息,可以用来

BAKENORMALMAP。

AsColorOutput:

确保颜色值区间。

应当钩选。

InvertY(V):

对于某些ATI和某些其他软件,要反转Y(V)方向。

选择钩选

NormalizeOutput:

确保法线值区间。

选择钩选。

这个插件可以用我前面的方法模拟,不过很麻烦。

下面是HRADWARE渲染后效果。

BUMP2D的纹理或文件纹理就比较麻烦了。

因为大多数时候,他们并不能被正确的硬件显示!

采用与BUMP3D相同的连接。

解决这个很简单,只要把BUMP纹理转换成一张法线贴图就可以了,然后混合。

在软件渲染中就比较容易,和BUMP嵌套是一样的,2D和3D纹理都一样的可以得到满意的效果。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1