原文地址:http://bbs.9ria.com/thread-186942-1-1.html

作者:江湖风云

六年前第一次接触《魔兽世界》的时候,被其绚丽的画面所折服,一个叫做贫瘠之地的地方,深深印在我的脑海里。当时在艾泽拉斯大陆还不能使用飞行坐骑,试想一下孤身一人在银色的月光下赶路,可能还有你的战斗小伙伴,静谧的夜晚,皎洁的月光,一起走过了六年……即便是现在回想起来,浮现在脑海中的不是T123456S123456,而是十字路口的夜空。

回到正题,在Unity中要创建这样的效果并不困难,用专业一点的术语讲就是只需要创建一个天空盒,并给予它天空纹理即可。通俗一点来讲,就是在我们的前面几章创建的地形四周罩上一个立方体盒,并把盒子上面添上星空的照片就搞定了。有软件可以将魔兽世界的素材提取出来,然后加以利用到我们自己的游戏中。

不过这一章我并不准备讲述这些,因为主题是为了把天空盒和镜头光晕的知识点整理一下,如果有时间,我会另写一篇关于如何使用强大的”Wow Model Viewer”来导出魔兽世界的模型、贴图等素材,并导入到Unity中。其实具体操作并不困难,心急的朋友们可以去google code下载这个软件:http://code.google.com/p/wowmodelviewer/downloads/list

Unity自带了好几种天空盒,从白天到黄昏再到夜晚,拿来做场景练习已经完全够用了。要使用天空盒素材,只需要导入Skyboxes素材包即可(至于如何导入可以参考我之前的笔记,每次都重复一遍略显蛋疼^_^)。导入成功后可以在项目资源面板的“Standard Assets->Skyboxes”目录下看到好多天空盒素材,Unity已经把盒子都造好了,我们直接拿来用就OK,非常人性化。

接下来要把天空盒素材添加到游戏场景里,有两种添加天空盒的方法,这里先写比较容易理解的一种,另外一种将在以后写预设和组件的时候再解释。

点击主菜单“Edit(编辑)->Render Settings(渲染设置)”,检视面板视图里就会出现渲染设置选项了,注意有个Skybox Material(天空盒材质)选项,点击它右边的小圆圈,就会弹出选择天空盒材质的对话框。单击任意一个材质球,设计视图中会立即提供预览,双击则表示确认使用,相当便捷。

光这样是不够的,还记得之前添加的”线性光”吗?没错,就是那个“无限远、无限大类似于太阳的手电筒”^_^。它现在正静静地躺在层次面板中默默地燃烧自己,照亮世界,它不叫雷锋,它的名字叫做Directional light。这个名字有点拗口,选中它并按快捷键F2修改,换成Sun,就把它当作游戏里的太阳。细心的朋友会发现,太阳光的方向和天空盒上那个假的太阳的方向不一定会一致,可能导致太阳的位置和影子的位置有悖现实,所以必须手动调整,让它们重合。

这里提供一种便捷的方法,首先在设计视图中拖动视角,让镜头中心对准天空盒上的太阳,然后在渲染设置中临时将天空盒设置为无(为了方便调整Sun的角度,否则天空盒太亮看不清楚)。然后选中Sun并使用旋转工具(快捷键E),将光线的方向正对自己,然后再将天空盒恢复即可。这样一来就不会闹太阳和影子在同一个方向的笑话了。

玩过摄影的朋友应该都有这么个常识,当把镜头着阳光时,可能会出现一个或者多个七彩光环的光晕现象。百度一下光晕,发现全是关于某个游戏的@_@,好不容易找到张照片,就委屈一下大妈您嘞。右上角就是传说中的光晕啦。导入Unity自带的素材包“Light Flares(闪光)”,选中线性光“Sun”,在Sun的检视面板中找到Flare属性,选择一个光晕图片(我选的是50 mm Zoom),当当当当~看看天上的太阳,是不是耀眼多了?

完成光晕之后顺便把迷雾之类的设置也了解一下吧,所谓“欲穷千里目,更上一层楼”,放在当今城市里已经不太合适了。因为污染呀,各种细小的粉尘漂浮在空气中,平时可能难以察觉,但是当举目远眺的时候就会发现远处根本就是一片迷茫嘛,跟大雾天一样的。在Unity的渲染设置中可以方便地调节这种迷雾的效果,甚至可以改变颜色和浓度等等:

      • Fog(是否启用迷雾效果)
      • Fog Color(迷雾的颜色)
      • Fog Mode(迷雾模式) 可以选择“Linear(线性)”、“Exponential(指数性)”、“Exp2(指数性2)”三种渲染模式,具体动手尝试一下即可,差别不是很大。
      • Fog Density(迷雾浓度)
      • Linear Fog Start(线性迷雾起始距离)
      • Linear Fog End(线性迷雾终止距离) 当选择线性的迷雾模式时,这两个参数表示了相对于镜头的迷雾的范围。在这个范围内迷雾的浓度会被平均化,也就是说当范围很小的时候,远处的物体会很清晰,近处的物体反倒一点都看不见。
      • Ambient Light(环境光) 调节这个颜色会影响到整个游戏场景的光线,比如调成粉红色的话……就好暧昧啊 哈哈。
      • Skybox Material(天空盒材质)
      • Halo Strength(光环强度,没弄明白)
      • Flare Strength(光晕强度)
      • Halo Textrue(光环贴图,没弄明白)
      • Spot Cookie(光斑?没弄明白) 

最后上张效果图,骄阳似火闷得慌啊哈哈~看来下一章非得加点水不可了:)

[转]Unity3D学习笔记(四)天空、光晕和迷雾的更多相关文章

  1. Unity3D学习笔记2——绘制一个带纹理的面

    目录 1. 概述 2. 详论 2.1. 网格(Mesh) 2.1.1. 顶点 2.1.2. 顶点索引 2.2. 材质(Material) 2.2.1. 创建材质 2.2.2. 使用材质 2.3. 光照 ...

  2. Unity3D学习笔记8——GPU实例化(3)

    目录 1. 概述 2. 详论 2.1. 自动实例化 2.2. MaterialPropertyBlock 3. 参考 1. 概述 在前两篇文章<Unity3D学习笔记6--GPU实例化(1)&g ...

  3. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  4. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  5. java之jvm学习笔记四(安全管理器)

    java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...

  6. Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  7. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  8. ES6学习笔记<四> default、rest、Multi-line Strings

    default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...

  9. muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制

    目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...

  10. python3.4学习笔记(四) 3.x和2.x的区别,持续更新

    python3.4学习笔记(四) 3.x和2.x的区别 在2.x中:print html,3.x中必须改成:print(html) import urllib2ImportError: No modu ...

随机推荐

  1. 京东android面试题(2018 顶级互联网公司面试题系列)

    以下来自于北京的一个兄弟的面试题 1.静态内部类和非静态内部类有什么区别  2.谈谈你对java多态的理解  3.如何开启线程,run和runnable有什么区别  4.线程池的好处  5.说一下你知 ...

  2. 阿里云修改centos7主机名

    为了玩Docker,买个阿里云主机也是够拼的了. [root@iZ284olvkmjZ ~]# 不过主机名中怎么好DT,无奈,修改. 我们需要的是永久生效,阿里云提供了两种方法: 方法(1). 输入h ...

  3. css 分析

    .important.warning {background:silver;} .important .warning {background:silver;} //上面有什么区别? //1.2个选择 ...

  4. leetcode 900. RLE Iterator

    Write an iterator that iterates through a run-length encoded sequence. The iterator is initialized b ...

  5. 0417 封装 property、classmethod、staricmethod

    一.封装 把一堆东西装在一个容器里 函数和属性装到了一个非全局的命名空间 class A: __N = 123 # 静态变量 def func(self): print(A.__N) # 在类的内部使 ...

  6. HDFS常见问题

    在HDFS里面,data node上的块大小默认是64MB(或者是128MB或256MB) 问题: 为什么64MB(或128MB或256MB)是最优选择? 为什么不能远少于64MB(或128MB或25 ...

  7. 《python基础教程(第二版)》学习笔记 基础部分(第1章)

    <python基础教程(第二版)>学习笔记 基础部分(第1章)python常用的IDE:Windows: IDLE(gui), Eclipse+PyDev; Python(command ...

  8. Jquery的load()

    我一直认为jquery的load函数是以GET方式请求另一个文件并加载到当前DOM里的.当我带参数加载一个ASP脚本时是这样做: $("#showData").load(" ...

  9. 学习docker可能会用到的参考

    局域网部署Docker--从无到有创建自己的Docker私有仓库 http://lib.csdn.net/base/docker 正在刷(学习)一遍官方文档,上面是一些其他可能用到的资料,是在解决自己 ...

  10. Native App vs Web App 以及 Hybrid App的实现原理

    移动应用基本的三种类型 1)  Native 应用程序 2)  Web 应用程序 3)  混合应用程序(Hybrid: Native应用和web应用结合) Native 应用 直接运行在电脑上或者智能 ...