以上是测试过程某一帧的截图,比较含蓄,动态效果在http://v.youku.com/v_show/id_XMzEyNDM2OTgw.html
说一下制作wetmap的思路。
在maya中比较常见的是使用fluidTexture,3D or 2D,作为纹理,因为这两个纹理是唯一能用mel直接修改的纹理。总体就是粒子发射流体,造成的效果就是粒子在经过物体时会将对应位置改变着色,造成打湿效果。
这方法的弊端也显而易见了,不管是3D还是2D,对形变的物体的贴图的匹配都是个问题,而且最不堪的是voxel级的流体贴图质量不能和pixel级的文件贴图相比。
现在的这种方法就是直接使用了类似Realflow的文件贴图的生成。
(Maya除了lightmap等是不能写纹理的,但有了python就high了,知道我已经说过N遍了,但还是要说python太爽了,太high了~)
嗯。思路是这样的:
def init():
global bg,blood,fg,wet
bg = _pi.open(kBG);
blood = _pi.open(kBlood );
fg = _pi.new('RGBA',bg.size,(0,0,0,0));
def addDrop(color,bg,drop_mask,x,y,rotate,size):
sizew,sizeh = bg.size
x*=sizew
y*=sizeh
bbox = (int(x-0.5*size),
int(y-0.5*size),
int(x-0.5*size)+int(size),
int(y-0.5*size)+int(size))
drop_mask = drop_mask.rotate(rotate,_pi.BICUBIC)
drop_mask = drop_mask.resize((size,size),1)
fg = _pi.new('RGB',(size,size),(color[0],color[1],color[2]))
bg.paste(fg,bbox,drop_mask)
return bg