添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
呐喊的小蝌蚪  ·  PageModel.PhysicalFile ...·  3 月前    · 
不拘小节的太阳  ·  ntext, text, and ...·  5 月前    · 
痴情的弓箭  ·  Troubleshooting 502 ...·  1 年前    · 

最近三年,基本上做的都是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反射的效果。

Laya 3d 换装,从unity导出模型。 Laya AirUnityPlugin: 2.2版本之前会导出avatar,可以这样挂点动画: var role= Laya .Loader.getRes("role.lh") as Laya .Sprite 3D ; var weapon = Laya .Loader.getRes("weapon.lh") as Laya .Sprite 3D ; scene.addChild(role); actor.addChild(weapon); var animator = role
最近有个需求,需要把物体的影子投影在某一个平面上,类似这样的效果: 打开光照阴影之后,发现在小米测试机上只有45帧,于是决定使用自定义 shader ,增加一个pass通道渲染阴影。在实现前,有两点需要事先说明的的: 1、这里预设接受投影得平面是已知的,并且平行于由x轴和z轴构成的平面,因此阴影的y坐标是已知的。如果想了解投影到任意平面的办法,可以参考https://zhuanlan.zhihu.com/p/97267754,本文不做讨论。 2、上图中,超出平面的阴影是不显示的。但因为 laya 目前不支持Ste
自己提升,学习,接触到图形学、 shader ,希望研究一下,进一步提升自己。 这边会持续学习 shader 相关方向,由于使用的引擎是 Laya ,所以……这边就用 Laya 引擎研究、学习了。 今后会学习研究下面的点: 1、 3D shader 效果 2 、2D shader 效果 3、后期处理效果 4、实例化渲染应用 5、……其他的 这个账号会持续更新。 上面都是官方文档有得,[2] 好像不多,得自己研究哈……所以说道路还是非常长滴。 //以后应该会 因为工作需要,要在游戏中自定义 Shader ,去翻论坛的时候发现2.0已经没有官方支持自定义 Shader 了。 只好研究研究自定义 Shader 如何实现。这个方法会涉及修改 laya .core.js中源代码。如果对 Laya 2D渲染感兴趣的也可以去看看具体实现。 之前关于阅读 Laya 源代码的文章提到过, Laya 核心帧循环逻辑在Render中的render函数。我们的自定义 Shader 就要跟l... export class WaterMaterial extends Laya .Material { public readonly MAIN_TEX: number = Laya . Shader 3D .propertyNameToID("u_AlbedoTexture"); constructor() { 游戏世界的眼睛,通过摄像机玩家才可以看到游戏中的场景等,所以每个场景有最少要有一台摄像机 摄像机的成像效果,可分为透视与正交。 laya Air引起的 3d 摄像机默认是透视模式,这是模拟了人眼的视觉效果,近处大远处小 正交没有透视感,常用于一些2d与 3d 混合的游戏或者模型查看器等 当我们在写 3D 游戏的代码时,要先在舞台中添加 3D 场景,添加 3D 摄像机。再写其它代码 坐标系与坐标 坐标是 3d 5. 在微信 开发 者工具中打开云 开发 控制台,创建一个名为“db”的数据库集合。 6. 在 Laya 项目中使用wx.cloud API连接到云 开发 环境并访问数据库。例如: ```js wx.cloud.init({ env: 'your-environment-id' const db = wx.cloud.database(); const collection = db.collection('db'); // 使用collection对象进行数据库操作 这些步骤应该能够帮助您将使用 Laya 开发 的抖音 小游戏 适配到微信云 开发 中。 qq_26867055: ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index System.ThrowHelper.ThrowArgumentOutOfRangeException (System.ExceptionArgument argument, System.ExceptionResource resource) (at <fb001e01371b4adca20013e0ac763896>:0) System.ThrowHelper.ThrowArgumentOutOfRangeException () (at <fb001e01371b4adca20013e0ac763896>:0) EffectDelay.Update () (at Assets/EffectDelay.cs:67) unity1——terrain地形详解 我的是2022版的,也是没有的