最近三年,基本上做的都是laya小游戏项目。也就是微信小程序,很多业内同行都觉得laya做小游戏不好用,去用了其他平台,甚至还有些做app游戏的,都不来趟laya这个坑。原因有那么以下几点。laya对于unity的辅助开发,仅仅给unity支持了几个效果相对凑合的shader。并且,laya跟unity相比,支持同屏面数,粒子特效等都有比较大的限制。尤其是,粒子特效这块,很多人app游戏上的效果非常好,但是用laya去转H5小游戏的时候,发现原本的粒子特效,变了样子,出现了降级。然后就放弃了。
关于laya粒子篇,之后会在下一篇文章中,会结合近两年开发的游戏来做详细讲解。
这一篇,先解决一下基础方面。3D美术人员,怎么用unity使用laya材质,然后做出类似APP的效果,包含无光手绘材质(mesh)。PBR反射材质(PBRstandar),半受光(blinnphone)等材质的基本运用,还原app游戏中的效果。(忽略中文翻译,按照我自己喜好命名的)
一、手绘的角色模型,采用laya中材质(半受光binnphong或者无光unity)下图为两种shader的选取路径。
根据上图,没啥说的,直接选就行了。
1、 laya3D/mesh/Unilt材质: 如果你的项目,同屏幕出现比较多的角色(战斗9个6000面以上的角色)那么,建议你用这个材质,这个材质不会丢失你角色的手绘细节,唯一的缺点就是。不受光照效果,光源以你的手绘明暗为主。如下图这个二次元角色的头部
参数如上图,并且只有一个挂贴图的部分,不需要法线、AO、遮罩等其他图片。
其中Intensity这个滑块,可以决定你图片的自发光程度。
Tiling:控制你贴图UV的X轴和Y轴的倍数比
Offset:可以控制做单方向的uv动画。受unity中的anim动画控制,并且laya可以调用。
2、laya3D/mesh/BlinnPhong材质:如果你用于做项目的主界面人物待机,并且同屏角色不会超过3个。那么推荐你用这种材质。我之前把他称为“半受光”,是因为它不仅可以收到场景中的光源影响,产生阴影。还可以制作一个假的specular图片(比如黑到白从上到下的渐变图,放进来,模型就会根据图片按照你模型UV的方向产生曝光度的渐变),来做一个假的受光。
如上图。皮肤会比纯手绘的无光材质,增加透气性,并且旋转模型的时候受到场景内光源的限制。
现在这个模型因为考虑包体的问题,没有增加法线图片,和粗糙度图片,有需要的朋友,也可以在如下图对应位置增加图片,用滑块或者数值添加自己喜欢的效果。
除此之外。其他参数与之前介绍的使用方法一致。
如果有需要给模型增加描边效果的。需要去另外一篇文章(laya3D,第三篇,后续会更新),拷贝描边代码,提供给程序使用。
二、写实材质PBR的shader运用。
下面上图片
laya的写实材质PBRSpecular或者Standar选取一种使用,这两种参数都差不多,但是不管使用那种,都不建议用场景内的实时太阳,而是采取图片光源,制作一个材质球,来影响模型表面的粗糙度跟漫反射。
下面我会参考近两年做第《七装甲师》的优化项目,也就是laya官方主页推荐写实效果的游戏。来给朋友们讲解这两个材质球的具体使用。
1、在讲解之前,先科普一下基础知识点。我们3D美术在做3D渲染的时候,不管是maya或者max或者blender也好,我们都跑不了四张图、就算不用这四张图、那么我们也会调整对应三个参数来制作出不同材质的效果。
分别为: BasColor(漫反射贴图) 、Roughness(粗糙度)、Metallic(金属度)、Normal(法线)这四张图。
因此要想有好的效果,至少要包含这四张图里的两种,在+上滑块,才能控制出好的反射效果。下面上干货。
如上图,(用laya还原的效果)我们要模拟这种实时光照,但是又不想用太阳或者灯光,并且还不想用上述那么多图(为了节省资源),那么我们改怎么做呢?
我们需要给场景制作一个假的环境光(不是太阳也不是灯,而是在灯光菜单选项里,制作一个漫反射材质球来带动PBR的反射,从而降低光源产生的阴影计算消耗)相当于你maya软件里的圆球背景,或者max里的穹顶灯。
如下图
2注意如上图的选项,给材质球换成laya支持的材质,并且富裕你想要的反射灯光图。然后再把这个材质球,放在Lighting中代替天空meterial。
3如上图,给你的模型赋予laya的PBR材质球,并且输出一张贴图和一张金属度的图片,(金属度可根据需要压缩的很小)。然找箭头贴到相应位置,那么你就得到了模型PBR环境反射的效果(注意一定要关闭场景中的任何灯,因为完全不需要灯。调整效果参数的时候也要在无光环境下进行)
4如上如。最后根据你的车的造型,给你的模型底部,做一个假的阴影片,最后就实现了laya材质做出app反射的效果。