好几周没写博客了,这几周要不是回家要不就是有好久不见的朋友过来看自己。回家、有朋友过来看自己的确很开心,但是几周下来自己变得懒惰了,要放纵自己的确是很容易的一件事。就像布尔费墨说“旅游是件很廉价的事”一样,放纵自己也是很廉价的,只要你想,立马就能实现。永远不要放纵自己!

说了这么多,现在进入主题吧。接下来我会写Unity3D渲染相关的一个系列教程。教程参考了擅码网猴哥的《Unity3D虚拟现实(VR)之渲染基础篇》,当时看这个教程还是两年前,这个教程对自己的帮助很大,大大加深了自己对Unity3D渲染的认识,推荐给大家。

接下来,正式进入天空盒。

1.天空盒是什么

(嗯,刚刚中断了,去看了《哪吒之魔童降世》,国产动画电影也能做到国外那种水准了,啥时候自己用Unity3D也能渲染出那种作品的话就牛逼了,哈哈。继续吧。)

天空盒子(Skybox)实质上是一个立方体纹理,如果不知到什么立方体纹理,别急,后面会告诉你。天空盒有什么作用呢?作用就是给场景一个大的背景,当视野没被物体挡住时,你所看到的就是天空盒,另外还有个作用是给物体添加一点光(这一点本片文后面部分会专门讲解)。

Unity3D新建一个场景的话,会带有一个默认天空盒。见下图。看到的地平线、灰色、蓝色都是天空盒。

2.如何设置天空盒

按照以下路径打开LightingSetting面板。

Lighting设置面板如下。图中勾选的位置即是天空盒的位置。以后这个面板会专门讲解,这里只需知道天空盒在哪儿设置即可。

这里你可以删除也可以设置为自定义的天空盒。

3.如何制作天空盒

首先创建一个材质球,然后设置Shder如下。Skybox的Shader选择哪一个(如选择6 Sided还是 Cubemap要根据你的纹理来定,6 Sided需要前后左右上下6张图,Cubemap只需要一张图但要求这张图是HDR模式的,什么是HDR,这里不说,涉及的东西太多了,聪明的你若想知道一定知道如何了解,不懂也不要紧,知道图要这样做就行了)。

3.1 6 Sided天空盒

我们先选择6 Sided这个Shader,6个面的天空盒的素材可从这里下载。

然后上下左右前后分别指定上对应的图就行了。

然后直接将做好的天空盒材质球拖拽到Scene视图中或者在LightingSetting面板处设置。

设置完后立马能看到效果。

3.2 HDR天空盒

另外新建一个材质球,设置Shader为Cubemap。再重复一次,这种Shader只需要一张图,但必须保证该图是HDR模式的。(Unity3D官方也推荐使用这种方式制作天空盒)

导入一张HDR图片,然后在该图片的纹理设置面板处,将纹理类型设置为Cube,如图。(免费的HDR天空盒)

设置完毕后将该纹理赋给之前新建的天空盒材质球,再拖到Scene视图中就可以看到效果。

设置完的效果,是不是比默认天空盒漂亮很多呢。

4.天空盒的光源作用(环境光)

天空盒除了用来作为背景外还有一个作用就是充当光源(环境光)。下面来看看具体是怎么回事。

现在新建一个场景,在此场景内新建一个Cube物体,然后删除场景中默认带有的平行光。

现在场景中没有任何一个光源了,但是Cube物体仍然看得清楚,不是黑的。在现实世界,如果一个物体没有灯(包括太阳)照到,我们仍然能看见它,原因就是有环境光。(ps:标准光照模型描述一个物体的光照强度=环境光+漫反射+高光反射+自发光)

在Unity3D中这个环境光就来自于场景的天空盒。我们试着把默认天空盒删除掉。删除掉之后下面会添加一个设置环境颜色的选项,此时这个环境颜色就是环境光,因为没天空盒了就用一种单一的颜色来指定,我们把它设置为全黑(就是没有任何环境光了)。

这时我们再看Scene视图,Cube是不是全黑啦?!

这就是天空盒的光源作用。

5.天空盒Shader其他参数

Tint Color  用来设置天空的颜色,会和图片的颜色叠加

Exposure  曝光强度,值越大,天空盒越亮(环境光越强)

Rotation    旋转角度,可以用来模拟太阳的位置(仅仅是用来展示太阳的位置,太阳光用平行光来模拟与天空盒无关,让玩家认为太阳光就是从那个太阳所在的方向射过来的)

大家可以试着调整这几个参数,看看效果。

一不小心三个小时就过去了,时间过得真快啊。希望自己能朝着自己心中的星辰大海一步一步走下去。加油吧。

项目上传到GitHub上了,见04.Rendering-1-Skybox,下次再会!

Unity3D渲染系列之SkyBox天空盒相关推荐

  1. Unity3D Shader系列之描边

    目录 1 引言 2 顶点沿法线外拓方式 2.1 法线外拓+ZTest Always 2.1.1 代码 2.1.2 问题点 2.2 法线外拓+Cull Front 2.2.1 代码 2.2.2 改进点 ...

  2. 【Unity3D 教程系列第 10 篇】Unity 脚本中的生命周期流程图

    这是[Unity3D 教程系列第 10 篇],如果觉得有用的话,欢迎关注专栏. 文章目录 一:生命周期流程图 二:常用的生命周期函数 三:脚本初始化和销毁 四:脚本的动态添加与静态添加 五:Awake ...

  3. Unity3D Shader系列之全息投影

    1 效果展示 2 实现原理 全息投影其实是几个效果的叠加:①半透明效果②上下条纹的扫描效果③边缘光效果④模拟信号传输不稳定的顶点偏移效果. 咱们依次来看看这几个效果背后的原理. ①半透明效果 在Uni ...

  4. 如何将一个字典转换为玲阶矩阵_基础渲染系列(一)图形学的基石——矩阵

    本文重点内容: 1.创建一个立方体构建的Grid网格 2.支持缩放.位移.旋转 3.变换矩阵 4.创建简单的相机投影 译注:从原创作者博客转为公众号文章非常复杂,我需要先将原文翻译一遍,然后在公众号再 ...

  5. Unity3D 渲染统计窗口

    看到很多开发者习惯性的会打开Game视窗的Stats去查看渲染统计的信息, 但只会看一下Draw Calls数值,其他的信息也并没有什么体会: 其实里面的每一项都很重要,并值得学习和了解. 游戏开发优 ...

  6. viewpager初始化fragment没有绘制_NDK OpenGL ES渲染系列 之 绘制三角形

    前言 新的知识学习都是循序渐进的,从基础到复杂.前面OpenGL ES概念 已经介绍了OpenGL ES的相关概念,这篇文章开始我们就正式开始OpenGL ES渲染系列第一站---绘制三角形.绘制三角 ...

  7. 【Unity3D 教程系列第 15 篇】本地数据持久化之 Playerprefs 类

    这是[Unity3D 教程系列第 15 篇],如果觉得有用的话,欢迎关注专栏. 文章目录 一:什么是 PlayerPrefs 类 二:PlayerPrefs 类中的静态方法 1:写入数据 2:读取数据 ...

  8. 【Unity3D 教程系列第 12 篇】如何用Unity写一个简易的计时器工具?

    这是[Unity3D 教程系列第 12 篇],如果觉得有用的话,欢迎关注专栏. 平常关于延时的处理很多人都喜欢用携程去处理,但是在 Unity 里,并不建议大家用过多的携程,因为会出现一些莫名其妙的 ...

  9. 【Unity3D 教程系列第 16 篇】Scene视图很清楚,但是Game视图却很模糊的解决方案

    这是[Unity3D 教程系列第 16 篇],如果觉得有用的话,欢迎关注专栏. 如果你用 Unity 时,Scene 视图上很清楚,但是 Game 视图却很模糊,恭喜你,你的问题即将被解决了,继续看- ...

  10. 【Unity3D 教程系列第 19 篇】Unity 中根据长方体模型的尺寸添加碰撞盒 BoxCollider

    这是[Unity3D 教程系列第 19 篇],如果觉得有用的话,欢迎关注专栏. 前言: 给一个长方体模型添加碰撞盒 BoxCollider,即使手动拖拽也费不了多长时间,但手动拖动不仅显得 Low , ...

最新文章

  1. Consul入门06 - 键/值对数据
  2. LeetCode 数据库 182. 查找重复的电子邮箱
  3. [蓝桥杯]算法提高 天天向上(记忆化搜索)
  4. 鹰眼系统原理_山东首家露天焚烧鹰眼监控系统在我镇投入使用
  5. mongoose换成mysql_如何将MongoDB数据库的数据迁移到MySQL数据库中
  6. c语言如何存储已编译内容,二级C语言教程章节测试13.编译预处理和动态存储分配...
  7. spark学习-43-Spark的BlockManager
  8. c++禁止进程被结束_第四章 进程管理
  9. 开启线下2.0广告新趋势 详解LED透明屏
  10. Qt开发的超轻量http server
  11. Agilent函数发生器编程(Agilent IO Suite使用)
  12. SDN 交换机迁移1
  13. 三行代码爬取京东数据
  14. 工厂机器安排(贪心算法)
  15. 信息化知识-信息与信息化
  16. 用于调用的参数太少/写入位置时发生冲突/检测到无效的异常处理程序例程
  17. perl中grep用法总结
  18. 组合导航(二):导航参考坐标系
  19. python 内建排序 HOW TO
  20. java 操作 cfs_Lucene 打开cfs文件 并获取数据

热门文章

  1. 电话号码本的快速查找
  2. HCIP 2020 8月 自考题库全解析附题库2种版本+练习软件
  3. matlab2016a打开为响应,MATLAB2016a启动慢
  4. 算法竞赛入门经典习题
  5. table导出excel php_php导出excel表格的方法分享(代码)
  6. Win10企业版安装应用商店
  7. c语言使用CodeBlocks软件,使用CodeBlocks学习C语言
  8. 表单构建html的页面代码,网页设计表单制作代码 制作一个很简单网页表单代码...
  9. HackerRank Word Order
  10. 将图片从AutoCAD导出到Word