《Unity开发实战》——3.6节使用cookie纹理模拟多云的户外环境

简介:

本节书摘来自华章社区《Unity开发实战》一书中的第3章,第3.6节使用cookie纹理模拟多云的户外环境,作者 (爱尔兰)Matt Smith (巴西)Chico Queiroz,更多章节内容可以访问云栖社区“华章社区”公众号查看

3.6 使用cookie纹理模拟多云的户外环境
在很多第一人称射击和恐怖逃生游戏中,光照和阴影可以使场影变得很复杂,有助于营造游戏气氛。本节中,将使用cookie纹理创建多云的户外环境。

3.6.1 准备工作
如果没有图片编辑器软件,或者想跳过自己制作图片的步骤,而把精力放在实现上,可以直接用0423_03_05文件夹中cloudCookie.tga图片。

3.6.2 操作步骤
请按照下面的步骤模拟多云的户外环境:
1)在图片编辑器中,创建一张512×512的图片。
2)使用黑色作为前景色,白色作为背景色,打开Render Clouds过滤器(通过Photoshop的菜单Filter | Render | Clouds打开):


a92dd4f11c8417f2e3fc5b877b470c0ff11f67e3

7)保存图片,命名为cloudCookie.PSD或cloudCookie.TGA。
8)将图片导入到Unity中,在Project视图中选中。
9)在Inspector视图中,把Texture Type的值设置成Cookie,Light Type的值设置成Directional,如下图所示:


37548efd89d96d1eb2092f68fbaeb75111d92144

14)还需要一个脚本translate灯光和投影。使用Project视图的下拉菜单创建一个C#脚本,命名为MovingShadows。
15)打开脚本,替换成下面的代码:


be33360e5243f57a56efdeda4f2d3bb4821b32e0


b5ceab8c1e4a7cd6d9445f74bbcf27f772a00e78

16)保存脚本,并附加到 Directional Light上。
17)在 Inspector 视图中选择Directional Light,把Wind Speed X 和 Wind Speed Z 参数的值修改成 20 (也可以修改成自己认为合适的值)。 Light Cookie Size 参数的值必须修改成与Cookie Size一样的值 (本例中为80):


ecba33eafdbb37d9d925862a3f84628408ec640d

18)播放场景,阴影会移动。

3.6.3 实现原理
脚本中让 Directional Light通过x轴和z轴移动,从而引起 Light Cookie 纹理的位移。另外,重置light对象到原始位置,而无论其位移的距离大于还是等于Light Cookie Size 参数的值。Light的位置必须重置以阻止其移动得太远,引起实时渲染和光照的问题。Light Cookie Size 参数的值用于确保平滑的过渡。
关闭阴影的原因是light在x轴上的角度必须是90度(否则当light重置到原始位置时会有一个明显的空缺)。如果要在场景中有动态阴影,可以添加第二个方向光。

3.6.4 更多内容
本节中在方向光上应用了cookie纹理,如果用于Spot Light 或 Point Light cookies呢?
1.创建 Spot Light cookies
Unity文档中有一个很好的教程关于如何制作Spot Light cookies。模拟来自投影仪,窗口等的阴影,链接为http://unity3d.com/support/documentation/Manual/HOWTO-LightCookie.html

  1. 创建 Point Light cookies
    如果想使用带有point light 的cookie 纹理,可以在Inspector视图中的Texture Importer 块中修改Light Type 的值。
相关文章
|
4月前
|
缓存 图形学
Unity3D学习笔记12——渲染纹理
Unity3D学习笔记12——渲染纹理
40 2
|
4月前
|
API C# 图形学
Unity3D学习笔记9——加载纹理
Unity3D学习笔记9——加载纹理
43 2
|
3月前
|
图形学 开发者
【独家揭秘】Unity游戏开发秘籍:从基础到进阶,掌握材质与纹理的艺术,打造超现实游戏视效的全过程剖析——案例教你如何让每一面墙都会“说话”
【8月更文挑战第31天】Unity 是全球领先的跨平台游戏开发引擎,以其高效性能和丰富的工具集著称,尤其在提升游戏视觉效果方面表现突出。本文通过具体案例分析,介绍如何利用 Unity 中的材质与纹理技术打造逼真且具艺术感的游戏世界。材质定义物体表面属性,如颜色、光滑度等;纹理则用于模拟真实细节。结合使用两者可显著增强场景真实感。以 FPS 游戏为例,通过调整材质参数和编写脚本动态改变属性,可实现自然视觉效果。此外,Unity 还提供了多种高级技术和优化方法供开发者探索。
54 0
|
4月前
|
测试技术 C# 图形学
Unity3D学习笔记10——纹理数组
Unity3D学习笔记10——纹理数组
50 0
|
4月前
|
存储 算法 C#
Unity3D学习笔记2——绘制一个带纹理的面
Unity3D学习笔记2——绘制一个带纹理的面
33 0
|
6月前
|
存储 图形学
【unity小技巧】unity中导入下载的3D模型及albedo/baseColor、normal 、AO/Occlus、metallic、roughness贴图纹理设置
【unity小技巧】unity中导入下载的3D模型及albedo/baseColor、normal 、AO/Occlus、metallic、roughness贴图纹理设置
111 0
|
6月前
|
图形学
【unity小技巧】unity3d环境带雾的昼夜系统变化
【unity小技巧】unity3d环境带雾的昼夜系统变化
44 0
|
7月前
|
存储 缓存 JSON
【Web开发】会话管理与无 Cookie 环境下的实现策略
【Web开发】会话管理与无 Cookie 环境下的实现策略
|
编解码 图形学 Android开发
Unity环境下实现Camera高帧率RTMP推送
Unity下RTMP直播背景方面不再赘述,今天主要讨论的是,Unity环境下,如何实现Camera高帧率RTMP推送,这里提到的高帧率,不再局限于常规环境下的30帧,以VR头显为例,更高的帧率(比如50帧),体验会更好。
129 1
Unity环境下实现Camera高帧率RTMP推送
|
编解码 开发工具 图形学
Unity环境下RTMP推流+RTMP播放低延迟解决方案
在本文之前,我们发布了Unity环境下的RTMP推流(Windows平台+Android平台)和RTMP|RTSP拉流(Windows平台+Android平台+iOS平台)低延迟的解决方案,今天做个整体汇总,权当抛砖引玉。
564 0
下一篇
无影云桌面