##零、效果展示
麒麟子Cocos Creator 3D研究笔记之材质IBL与天空盒动态切换
在线演示地址: https://showcase.ukylin.net/skybox/
天空盒对于3D渲染场景来说,有着不个忽视的地位。天空盒决定了整个场景的氛围。
晴天、雨夜、黄昏、黎明等场景,只要换上一个天空盒,瞬间达到60%的效果。
Cocos Creator 3D作为一款高端引擎,这东西自然是要提供的。官方文档如下:https://docs.cocos.com/creator3d/manual/zh/concepts/scene/skybox.html
本文介绍了Cocos Creator 3D中天空盒的使用,以及各项参数的含义。并提供了十套可直接用于项目的天空盒素材。文末有获取链接
由于 官方文档讲得比较全了,并且这个东西的使用也比较简单。我就来说一下文档中没有讲到的部分。
##一、动态切换天空盒
动态切换天空盒是一个多场景游戏或者天气系统所必须拥有的能力。它将用在以下几种情况。
时段变换,比如魔兽世界里面的时间就是和现实对应的,你是白天,它就是白天。你是黄昏,它就是黄昏。你是黑夜它就是黑夜。
PS:麒麟子一开始玩魔兽世界的时候,都是晚上玩,我一直以为魔兽世界里面都是黑夜呢。哈哈。
动态切换天空盒代码示例:
loader.loadRes('skybox/cubemap_sky' + skyboxName, TextureCube, (err, cubemap: TextureCube) => {
director.getScene().globals.skybox.envmap = cubemap;
});
不要小看这行代码,我把文档翻了个遍,最后在引擎组大神提点下才找到
值得说明的是,下图里面所有的参数,都可以通过** director.getScene().globals**进行修改,如果你要实现一个动态的天气系统,那里面的参数可能都得动。不仅是更换天空盒图片。
有的朋友发现,运行后看不到天空盒,是因为Camera默认是不使用天空盒的。请按下图设置即可:
##二、UseIBL开关
IBL是Image Based Lighting的缩写,就是基于图像的光照。当这个开关打开后,你会发现,物体表面会映射出天空盒的样子。至于映射强度,就需要调节PBR材质的各项参数,如粗糙度,金属度等。 如果要细节控制不同位置的反射强度,则需要制作 PBR贴图。
关于Image Based Lighting我找到了一篇文章供大家进阶:https://blog.csdn.net/i_dovelemon/article/details/79091105
##三、IsRGBE开关
这个开关在别的引擎中叫 IsHDR 。 用于标记你所给的立方体纹理是不是采用了HDR贴图。
但HDR贴图不止一种格式,常见的有两种。RadianceRGBE(.hdr) 或 OpenEXR(.exr)格式。RadianceRGBE是 32位格式,而OpenEXR是48位格式。
这个开关不叫IsHDR的原因,我想可能是只支持.hdr这种格式的文件吧。具体是什么原因,有待考证。目前大家只要明白是啥意思就行。
关于HDR相关内容,我也给大家找了一篇 文章:http://www.zf3d.com/news.asp?Id=23189
##四、本文总结
天空盒比较简单,但配合各项参数和漂亮的天空盒素材,能让场景氛围和画面带入感增强不少。
如果想要动态天空盒,分层天空盒,目前需要自己使用引擎接口来处理。
源码获取链接(内含10套可商用天空盒素材):https://gitee.com/qilinzi/creator3ddemos/tree/master/skybox
##五、文末广告位(此位置长期招商)
-
有一些备忘类型的贴子不会发到论坛,大家可移步到我的博客 https://qilinzi.blog.csdn.net
-
有一些与技术无关的贴子,麒麟子以后会尽量不发到论坛,毕竟论坛是一个讨论技术的地方,大家可关注我的微信公众号:麒麟子TM
-
麒麟子拥有10多年的3D游戏引擎和游戏开发经验,经过深思熟虑后,决定回归到3D领域。接下来决定与Cocos Creator 3D共同成长。欢迎大家加入 Cocos第一野生社区大本营-Cocos Creator 3D研究院,再多华丽的拉客姿势在实力面前都显得苍白无力,大家点开看看管理员阵容再决定要不要加入。