麒麟子Cocos Creator 3D研究笔记四:天空盒动态更换与IBL效果

麒麟子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

四、本文总结

天空盒比较简单,但配合各项参数和漂亮的天空盒素材,能让场景氛围和画面带入感增强不少。

如果想要动态天空盒,分层天空盒,目前需要自己使用引擎接口来处理。

源码获取链接:https://gitee.com/qilinzi/creator3ddemos/skybox/

一麒麟子一 CSDN认证博客专家
编程15年,互联网创业者,技术作家。专注技术变现。本博客会输出我经历过的故事、开发教程、从业经验、源码推荐等内容。希望能够对大家有所帮助。
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值