现在很多游戏都设计开发了体积光效果(又称God_Ray),UDK版本从4月也加入了动态体积光,场景效果大幅提升。不过对于一些由于视角或者体积光算法的不同,造成某些场景无光线投下,效果大打折扣; 因此就出现了伪光,伪光不同与程序光,是需要美术来单独实现的,一种做法是制作光线粒子,有点是可变性大,且不容易出现渲染错误;还有就是使用MESH,写SHADER实现光线赋予模型,以下重点介绍此做法。
这是以前做的场景一角,从视频中截出的有失真:
从窗户投下的就是模型制作的效果,制作分以下步骤:
一 在MAX里制作模型,因为窗户是方的,对照窗户制作一个大概的方体,斜向下,模拟光线.
导入UDK,创建材质球模板:
首先创作DIFFUSE的节点簇,通过Mutiply,Lerp等节点调整贴图亮度,最后通过Constant Clamp来控制透明度区间.
之后创建向量部分的节点,使用Ref Vector节点来采样当前反射向量,滤掉G,B通道值,生成单一向量;复制当前簇,滤掉R,G通道, 第一个向量减去第二个向量开平方跟的值,第二个向量减去第一个向量的G通道值,合并;用此二维向量来驱动一张渐变贴图,只要是四周黑,中间白的渐变黑白图就行 以此节点确保向量区间显示.
之后创建像素深度节点,如下:
以前创建的DIFFUSE控制节点簇和向量节点簇都连到一个Switch Param上来实时切换,再将此Switch Param节点和像素深度节点连到一个Switch Param上,复制像素深度节点簇,反相后于第一个深度簇想乘;
将两个像素节点簇相乘后,与DIFFUSE节点簇通过DepthBissedAlpha节点混合,再通过Constant Clamp限定区间大小,赋予透明通道.
设定平移节点,产生动态光线交替效果。
在DIFFUSE通道上随便赋予一个像要的颜色,改变材质混合模式为Additive,光照模型为Unlit,即可看到效果
使用此材质模板创建子模板,通过修改参数达到想要的效果.