本次LayaAir 2.11.0beta版是鼠年的最后一个版本,同时也是2021年的第一个版本。所以本次的更新内容也是干货满满,再次大幅提升了3D渲染能力。本文将逐个详细介绍。
提示:
1、本文中涉及的代码,均会省略大量代码,仅为介绍功能使用的核心代码,
2、代码的API使用方式为基于引擎源码的使用方式,与开放下载版本的Laya.xxx的写法不同,
3、各不同语言引擎版本API的使用方式、以及完整的示例代码请前往Layabox官网示例栏目查看。
Blinnphong支持光透射功能
从LayaAir2.11 beta版本开始,Blinnphong材质支持了光线透射功能,也就是当光线射入半透明材质,会产生光线透射的效果。例如下图的效果:
(来自官网BlinnPhong_Transmission示例截图)
或者查看视频动态效果:
(视频画质已被压缩,仅用于效果预览)
当我们想使用Blinnphong的光线透射效果时,将Blinnphong的 enableTransmission 属性设置为true即可。
示例代码为:
//打开兔子材质的次表面散射功能
this.rabbitMaterial.enableTransmission = true;
//打开猴子材质的次表面散射功能
this.monkeyMaterial.enableTransmission = true;
(点击代码,左右滑动查看全文)
下面我们继续介绍一下Blinnphong材质光线透射功能相关的其它属性,
厚度图属性thinknessTexture用于加载一张描述物体厚度信息的贴图,这是一张会描述物体各个地方透光比例的材质贴图。例如兔子的耳朵比较薄,透光会强一些,兔子的身体比较厚,透光会弱一些。
厚度图并非普通的贴图,需要找3D美术同学生成
有无厚度图的对比效果如下图所示:
示例代码为:
this.rabbitMaterial.enableTransmission = true;
//为兔子材质添加厚度贴图
this.rabbitMaterial.thinknessTexture = Loader.getRes("xxx/xxx.jpg");
(点击代码,左右滑动查看全文)
由于入射光分为透射部分和反射部分,透射率属性transmissionRate用于描述透射光占总光量的比例,该属性同时也会影响反射光部分的强度。
透射率属性值分别为0、0.5、1的对比效果如下图所示:
示例代码为:
this.rabbitMaterial.enableTransmission = true;
this.rabbitMaterial.thinknessTexture = Loader.getRes("xxx/xxx.jpg");
//设置兔子材质的透射率为0.1
this.rabbitMaterial.transmissionRata = 0.1;
(点击代码,左右滑动查看全文)
backDiffuse属性用于设置透射扩散范围系数,系数的范围是1-10,值越大范围越小,1是最大扩散范围值,10是最小扩散范围值。效果如下图所示:
示例代码为:
this.rabbitMaterial.enableTransmission = true;
this.rabbitMaterial.thinknessTexture = Loader.getRes("xxx/xxx.jpg");
this.rabbitMaterial.transmissionRata = 0.1;
//设置透射扩散范围系数为3.88
this.rabbitMaterial.backDiffuse = 3.88;
(点击代码,左右滑动查看全文)
transMissionColor是透射颜色