CHAPTER 6 Unity3D水系的制作
基于Unity3D的VR海洋探索游戏开发
基于Unity3D的VR海洋探索游戏开发
VR技术的发展使得游戏的沉浸式体验得到了极大的提升,而基于Unity3D的VR海洋探索游戏开发正是一个充满创意和挑战的项目。
在这篇文章中,我们将详细介绍这个游戏的开发过程和一些关键要点。
我们需要确定这个游戏的基本设定和玩法。
在VR海洋探索游戏中,玩家将扮演一个潜水员的角色,探索海洋的奥秘和美丽景色。
玩家可以在水下自由移动,并且可以与海洋生物进行互动。
游戏的目标是收集海洋生物的样本和宝藏,并解开一个关于海洋的秘密。
接下来,我们需要使用Unity3D来开发这个游戏。
创建一个场景,代表一个真实的海洋环境。
这个场景包含海水、沉船、珊瑚礁等元素,以及多样化的海洋生物。
在设计海底环境时,我们可以使用Unity的图形着色器来模拟海洋的光照效果和水波效果,以增加游戏的真实感。
然后,我们需要创建一个潜水员的角色,并实现VR操作。
将一个虚拟身体绑定到玩家的头部,以便跟随玩家的头部运动。
玩家可以使用手柄进行游戏操作,例如游泳、采集样本、与海洋生物互动等。
在实现VR操作时,我们可以使用Unity的VR插件,如SteamVR 或Oculus插件,来辅助实现。
我们可以增加一些额外的功能和效果,以提升游戏的体验。
我们可以实现一个收集系统,玩家可以收集到各种海洋生物的样本,并在游戏中进行展示。
我们可以添加一些特殊的关卡和任务,以增加游戏的挑战性和可玩性。
在图形方面,我们可以增加一些特效,如水母的发光效果、鱼群的动态效果等,以增加游戏的视觉效果。
3DMAX技术制作逼真的水体效果教程
3DMAX技术制作逼真的水体效果教程3DMAX技术制作逼真的水体效果教程在三维建模和动画设计领域,水体效果是一个非常关键的要素。
逼真的水体效果能够增加作品的真实感和吸引力。
本教程将介绍如何使用3DMAX软件来制作逼真的水体效果,帮助读者了解相关技术和步骤。
1. 水体的建模要制作逼真的水体效果,首先需要进行水体的建模。
在3DMAX中,可以使用几何体进行简单的建模,比如使用Box或Sphere等基本几何体来创建基本的水体形状。
然后,通过调整几何体的尺寸和形状,使其符合所需的水体效果。
2. 材质的设置水体的材质对于呈现逼真的效果至关重要。
在3DMAX中,可以通过调整材质的参数来实现这一目标。
首先,选择一个适合的材质类型,比如标准材质或液体材质,并根据实际需要进行调整。
例如,可以调整材质的颜色、反射率、折射率等参数,以便更好地模拟真实的水体外观。
3. 光照的设置逼真的水体效果还需要考虑光照的设置。
在3DMAX中,可以使用光源来模拟自然光照的效果。
可以选择适当的光源类型,比如天光、聚光灯或点光源,并调整其位置、强度和颜色等参数,以便获得所需的光照效果。
需要注意的是,光照的设置应该与水体的材质相匹配,以获得更加逼真的效果。
4. 着色器的应用着色器是实现逼真水体效果的重要工具之一。
在3DMAX中,可以使用流体着色器或透明度贴图来增加水体的真实感。
流体着色器可以产生类似水面的波纹效果,而透明度贴图可以模拟水体的透明度和反射。
通过合理应用这些着色器,可以使水体看起来更加逼真,并且能够反射周围环境的景象。
5. 动画效果的添加在水体效果的制作中,动画效果也是非常重要的一部分。
通过使用3DMAX中的动画功能,可以为水体添加波浪、流动或风吹等效果,使其看起来更加动态和真实。
可以使用3DMAX的动画曲线编辑器,调整动画的速度和幅度,以及水体的起伏和流动的路径。
通过合理的动画设置,可以带给观众更加真实的水体效果。
6. 渲染和后期处理完成水体效果的建模、材质设置、光照设置和动画效果之后,还需要进行渲染和后期处理,以输出最终的效果。
【深圳龙图教育】如何在unity 3d中做出水效、雾效、音效
【深圳龙图教育】如何在unity 3d中做出水效、雾效、音效开启Fog(雾效)将会在场景中渲染出雾的效果,在Unity中,可以对雾的颜色、密度等属性进行调整。
开启雾效通常用于优化性能,开启雾效后远处的物体被雾遮挡,此时便可选择不渲染距离摄像机较远的物体。
这种性能优化方案需要配合摄像机对象的远裁切面设置来使用。
通常先调整雾效得到正确的视觉效果,然后调小摄像机的远裁切面,使场景中的距离摄像机对象较远的游戏对象在雾效变淡前被裁切掉。
在Unity中,开启雾效的方法非常简单,依次打开菜单栏中的Edit->Render Settings,在Inspector视图中会显示出Render Settings的参数面板,勾选Fog复选框即可开启雾效,如下图:Fog Color:雾的颜色Fog Mode:雾效模式,有3项,可以一个个试下,看下效果Fog Density:雾效浓度,取值0-1之间Linear Fog Start:线性雾效开始距离Linear Fog End:线性雾效结束距离效果如下图:标题下面我们来看下水效果,水效果在游戏中频繁使用,游戏中的河流、海洋、湖泊、池塘等都属于水效果,使用unity可以非常方便地创建出逼真的水效果。
Unity提供了两个水资源包,分别使Water(Basic)基本水资源以及Water(Pro Only)高级水资源。
如下图:标题我们先看下Water Basic,导入资源包,如下图:标题资源包被导入后,资源包中包含两个水资源预设体,分别使Daylight Simple Water(日间基本水效果)预设体以及Nighttime Simple Water(夜间基本水效果)预设体,通过两个预设体的名称,可以得知两个预设体分别用于模拟简单的日间水效果以及简单的夜间水效果,将两个预设体依次添加到场景中生成实例,基本水效果预设体不能对游戏场景中的天空盒以及游戏对象等进行反射、折射运算,但使相对高级水效果而言对系统资源占用较小,如下图:标题高级水资源Water Pro和刚才Water Basic导入一样,高级水效果预设体能够对游戏场景中的天空盒以及游戏对象进行反射、折射运算,效果非常真实,但是相对基本水效果而言对系统资源占用较高。
如何在3Dmax中制作逼真的水体效果
如何在3Dmax中制作逼真的水体效果引言:随着计算机技术的不断发展,3D建模和动画制作成为许多从事建筑设计、电影制作和游戏开发的人士日常工作的一部分。
其中,制作逼真的水体效果是一个非常重要的技巧。
本文将详细介绍如何在3Dmax中制作逼真的水体效果的步骤和方法。
一、准备工作:1. 安装3Dmax软件并熟悉其基本操作;2. 学习水体效果的基本原理,理解水的颜色、质感和流动性等特点;3. 收集相关材料和参考资料,包括照片、视频和插图等,以帮助你更好地理解和模拟真实的水体效果。
二、创建模型:1. 创建一个平面面板,并确保其位置符合水体的位置;2. 调整平面的细分程度,以便更好地模拟水的波浪效果;3. 调整平面的大小和比例,以适应场景的需要。
三、添加材质:1. 选择一个合适的水质材质,例如基本的透明材质;2. 调整材质的颜色和透明度,以使其看起来更像真实的水;3. 添加反射和折射效果,以模拟水的反射和折射特性;4. 注意调整材质的光泽和纹理,使其看起来更加自然。
四、添加纹理和细节:1. 使用合适的纹理图片,例如水波纹纹理,给水体表面添加更多细节;2. 调整纹理的缩放和旋转,以适应水体的尺寸和形状;3. 添加适当的凹凸贴图,以模拟水体表面的起伏和纹理。
五、模拟水的动态效果:1. 使用3Dmax中的动画工具,例如位移和变形工具,模拟水的流动效果;2. 调整参数和参数曲线,以实现更逼真的水流动效果;3. 添加涟漪效果和波浪效果,以使水体看起来更加生动。
六、灯光和渲染设置:1. 使用合适的灯光设置,以使水体在场景中得到适当的照明;2. 调整光源的强度和颜色,以获得更真实的效果;3. 设置合适的阴影和反射参数,以使水体的阴影和反射看起来更真实;4. 调整渲染设置,例如分辨率和抗锯齿等,以获得高质量的渲染结果。
七、调整和优化:1. 反复观察和调整水体的各种参数和效果,以使其更加逼真;2. 优化场景中的其他元素和效果,以确保水体与整个场景融为一体;3. 测试和渲染水体效果的不同角度和视角,以确保其在不同视角下都能呈现出逼真的效果。
3Dmax水模拟技巧:制作逼真的水体效果
3Dmax水模拟技巧:制作逼真的水体效果引言:- 3Dmax是一款常用的三维建模软件,可以通过其强大的功能制作逼真的水体效果。
- 制作水体效果需要注意一些技巧和步骤,下面将详细介绍。
步骤1:创建水体模型- 打开3Dmax软件,创建一个新的场景。
- 在“创建”选项卡中选择“几何体”下的“平面”工具,然后点击在视图中拖放创建一个平面。
- 修改平面的大小和细分程度,使其适应你想要创建的水体大小和细节程度。
步骤2:调整水体外观- 选择创建的平面对象,在“修改”选项卡中选择“编辑几何体”下的“顶点”工具,通过调整顶点,使平面凹凸不平,模拟出水体的波浪效果。
- 在“UVW 条件编辑器”中选择“纹理”选项,为水体添加纹理材质,可以选择类似水波纹理的图片。
步骤3:添加水的材质属性- 在“材质编辑器”中创建一个新的材质球。
- 调整材质球的属性,设置颜色为水的特征颜色,增加反射和折射效果,使水体看起来更加逼真。
- 在“渲染”选项卡中选择“环境和折射”,设置折射率和反射率,增加光照效果。
步骤4:添加水的动画效果- 选择水体模型,在“动画”选项卡中选择“动力学模拟”下的“布料”。
步骤5:调整水体的物理属性- 在水体物理属性编辑器中,调整阻力、刚性和重力等参数,使水体的流动看起来更加真实。
- 可以通过调整参数来控制水体的流动速度和形状,实现不同场景下的逼真效果。
步骤6:调整光照效果- 在水体周围添加合适的灯光,使光线照射到水面上产生反射和折射效果。
步骤7:渲染和输出动画- 在“渲染”选项卡中选择“渲染设置”。
- 调整渲染设置中的参数,如分辨率、帧速率和输出格式等。
- 点击“渲染”按钮开始渲染动画,等待渲染完成后保存输出的动画文件。
结论:- 通过上述步骤,我们可以使用3Dmax制作逼真的水体效果。
- 在制作过程中,需要注意调整水体外观、添加材质属性、创建动画效果以及调整光照效果等关键步骤。
- 通过精确调整参数和合适的纹理材质,可以使水体效果看起来更加逼真、流动自然,达到预期的效果。
基于Unity3D的VR海洋探索游戏开发
基于Unity3D的VR海洋探索游戏开发我们需要明确游戏的主题和目标。
在这个游戏中,玩家将扮演一名潜水员,穿上VR设备后就可以身临其境地探索海洋的奇妙世界。
游戏的目标是完成一系列任务,例如拍摄特定的海洋生物、搜集珊瑚礁样本等。
接下来,我们需要创建游戏的场景。
在Unity3D中,可以使用内置的工具来创建虚拟海洋场景。
创建一个大型水域,并添加水面特效以模拟真实的海洋波动。
然后,使用内置的地形编辑器添加海底地形,并添加一些珊瑚、海草等海洋生物的模型。
为了增强游戏的真实感,我们可以使用Unity3D的物理特性添加水下物理效果。
当玩家与海洋生物碰撞时,可以使用碰撞检测功能触发相应的动画或声音效果。
可以利用Unity3D的天气系统来模拟海洋的天气变化,增加游戏的挑战性和环境感。
除了场景和物理特性,游戏的用户界面也是非常重要的一部分。
在VR游戏中,需要设计一个用户友好且适合VR设备的界面。
玩家可以通过手柄或头部追踪设备进行操作,例如选择任务、操控潜水艇等。
为了增加游戏的可玩性,可以通过添加一些道具和升级系统,让玩家可以自由定制自己的潜水装备和潜水艇。
为了增加游戏的趣味性和挑战性,可以设计一些特殊关卡或敌对生物。
设计一个深海洞穴关卡,玩家需要解开谜题和躲避危险物体才能前进。
可以在游戏中添加一些敌对生物,玩家需要与它们进行战斗并保护自己的安全。
基于Unity3D的VR海洋探索游戏开发需要考虑游戏主题和目标、创建场景、添加物理特性、设计用户界面以及增加趣味性和挑战性。
通过合理利用Unity3D提供的功能和工具,可以开发出一款逼真而又有趣的VR海洋探索游戏。
3D水制作方法
3D水制作方法引言随着技术的发展,3D水效果在游戏、电影等领域中被越来越广泛地应用。
制作出逼真的3D水效果可以增强视觉的冲击力,提升作品的品质。
本文将介绍一种基于流体模拟的3D水制作方法,帮助读者了解如何制作出逼真的水效果。
软件要求为了实现3D水效果的制作,我们需要使用以下软件:1.使用3D建模软件,如Blender、Maya或3ds Max,用于建立水面的模型和纹理。
2.使用流体模拟软件,如Houdini、RealFlow或Phoenix FD,用于模拟水的流动效果。
步骤第一步:建立水面模型在3D建模软件中,我们首先需要创建一个水面的模型。
可以通过以下步骤来建立:1.创建一个平面对象,并将其调整为适当的大小和形状。
2.添加细分,使水面模型具有足够的细节。
3.对水面进行适当的形变,以模拟波浪效果。
4.为水面模型添加合适的材质和纹理,以增加逼真感。
第二步:导入模型到流体模拟软件中完成水面模型的建立后,我们需要将其导入到流体模拟软件中进行进一步的模拟和渲染。
以下是具体步骤:1.将水面模型导出为适当的文件格式(如FBX或OBJ)。
2.在流体模拟软件中创建一个新的场景。
3.导入水面模型到场景中。
第三步:进行流体模拟在流体模拟软件中,我们可以使用不同的方法来模拟水的流动效果。
其中一种常用的方法是基于网格粒子模拟(Grid-based Particle Simulation)。
以下是具体步骤:1.在流体模拟软件中选择适当的模拟方法和参数。
2.创建流体发射器(Fluid Emitter)来模拟水的源头。
3.调整发射器的属性和参数,以控制水的流动速度、密度等。
4.运行模拟,并观察水的流动效果。
5.根据需要对模拟参数进行调整,以获得更合适的效果。
第四步:渲染和导出完成流体模拟后,我们需要对模拟结果进行渲染,并导出为适当的文件格式。
以下是具体步骤:1.在流体模拟软件中配置渲染设置,如光照、阴影、反射等。
2.选择适当的渲染器和渲染参数。
3DMAX中的真实水效果制作
3DMAX中的真实水效果制作3DMAX中的真实水效果制作在3DMAX软件中,制作真实的水效果是非常重要的一项技能。
无论是建筑模型、游戏场景还是动画制作,逼真的水面效果都能够提升作品的质量和观赏性。
本文将介绍一些方法和技巧,帮助您在3DMAX 中制作出更加真实的水效果。
一、创建水体首先,在3DMAX中创建一个平面对象作为水体的基础。
可以根据实际需求设置水体的大小和位置。
二、增加材质为了使水体看起来更加真实,我们需要为其增加材质。
可以使用3DMAX中的材质编辑器来创建水材质,并调整其参数。
以下是几个关键的调整项:1. 颜色和透明度:根据需要选择适合的颜色,并调整透明度以达到真实的水面效果。
2. 反射和折射:通过调整反射和折射参数,使水体能够正确地反射和折射周围的环境。
3. 波纹效果:可以通过增加纹理或者使用材质编辑器中的噪波等工具,给水体添加波纹效果,增加真实感。
三、调整光照水体的真实感也受到光照的影响。
通过调整灯光的位置、强度和颜色等参数,可以让水体在不同的光照条件下呈现出更加逼真的效果。
注意光照的方向和角度,以及水体对光的反射和折射等细节。
四、添加纹理为了进一步增加水体的真实感,可以在水面上添加纹理。
可以使用3DMAX中提供的纹理库,或者导入自定义的贴图文件。
选择适合的纹理,并将其映射到水体的表面上,以达到真实的水纹效果。
五、模拟水波为了让水体看起来更加真实,可以模拟水面上的波纹效果。
一种常用的方法是使用3DMAX中的水体模拟工具,通过设置波的运动参数和大小等,使水体呈现出自然的波动效果。
还可以使用动画工具来实现水波效果,使水体呈现出动态的效果。
六、调整渲染设置在完成水体的建模和材质调整后,我们还需要调整渲染设置,以确保最终渲染出的效果更加真实。
可以通过调整渲染器的参数,如抗锯齿、光线追踪等,来提高水体的渲染质量和真实感。
结语通过上述方法和技巧,我们可以在3DMAX中制作出逼真的水体效果。
不同的项目和需求可能需要不同的调整和优化,因此需要不断尝试和实践来提升自己的水效果制作技能。
基于Unity3D的VR海洋探索游戏开发
基于Unity3D的VR海洋探索游戏开发VR技术是一种非常有前景的新型技术,很多游戏厂商都开始尝试利用VR技术开发游戏。
其中,基于Unity3D的VR游戏开发已经成为了业界的一个热门方向。
本文将详细介绍如何利用Unity3D开发一个VR海洋探索游戏。
1. 游戏背景我们的游戏背景是一个海洋世界,玩家可以在海洋里自由探索、观察海洋生物。
除了美丽的海洋环境之外,玩家还可以发现一些海洋中的秘密,并与一些神秘的生物进行互动。
使用Unity3D开发游戏,需要先创建一个场景。
在这个游戏中,我们需要创建一个海洋场景,玩家可以在这个场景中探索。
这个场景需要包含石头、沙子、海草、珊瑚等元素。
这些元素需要使用3D建模软件例如3DS Max或者Maya进行建模。
3. 角色建模在游戏中,我们需要创建一个角色,让玩家可以扮演他。
这个角色需要使用建模软件进行建模。
我们需要设计一个具有科技感的潜水装备,包括鱼雷、水下电视、潜水艇等。
这些都需要进行3D建模。
4. 物理引擎实现一个真实的海洋场景需要使用Unity3D的物理引擎。
在游戏中,海水的流动、鱼群的游动、珊瑚的摇曳等都需要经过物理模拟。
这些模拟需要使用Unity3D的物理引擎进行。
5. 动画制作在游戏中,我们需要实现一些动态效果,例如海水的波动、鱼群的游动等。
这些需要使用动画制作软件例如3ds Max或者Maya进行动画制作。
6. 编程游戏开发最后一步是编程。
我们需要使用Unity3D的脚本编写语言(C#)编写游戏脚本。
这些脚本包括角色移动、海水流动、鱼群游动等功能的实现。
7. VR技术的实现VR技术是实现游戏沉浸感的关键。
在这个游戏中,我们需要使用Unity3D的VR技术,将游戏中的场景投影到玩家所戴的VR头盔中。
这样,玩家就可以真正的感受到在海洋中的探险体验,增强了游戏的沉浸感。
总结:基于Unity3D的VR海洋探索游戏,需要使用3D建模软件进行元素建模,并使用Unity3D的物理引擎进行真实的物理模拟。
3Dmax创建水体效果:打造逼真的水下场景
3Dmax创建水体效果:打造逼真的水下场景随着技术的不断发展,计算机图形学也取得了飞速的进步。
如今,使用计算机软件创造逼真的水下场景已经成为可能。
在本文中,我将详细介绍如何使用3Dmax软件创建水体效果,从而打造出一个逼真而令人惊叹的水下景观。
步骤一:准备工作1. 确保你已经安装并正确配置了3Dmax软件。
如果尚未安装,请前往官方网站下载并按照说明进行安装。
2. 确保你拥有一台高性能的计算机,以便在处理复杂的图形和模拟物理效果时能够顺利运行软件。
3. 在确保你的计算机和软件准备就绪后,你需要收集一些关于水下场景的参考资料,例如照片、视频或插图。
这些参考资料将帮助你更好地理解水下环境的特点和要素,从而更好地进行模拟和设计。
步骤二:创建水体1. 打开3Dmax软件,并创建一个新的场景。
2. 在场景中创建一个平面对象,用于表示水面。
可以根据所需的场景大小和形状调整平面的尺寸和位置。
3. 通过调整材质和纹理参数,添加适当的颜色、透明度和反射率,使水面看起来更像真实的水。
可以使用3Dmax提供的材质库或自己创建定制的材质。
4. 在“渲染设置”菜单中,将渲染器更改为“Arnold”或“V-Ray”。
这些渲染器可以提供更高质量的水体效果渲染。
步骤三:创建水下环境1. 根据参考资料,绘制和建模水下环境的各种元素,例如水草、珊瑚、鱼群等。
可以使用3Dmax的建模工具,如多边形建模、NURBS建模或辅助建模插件。
2. 使用纹理和材质来增加水下元素的细节和真实感。
可以使用高质量的纹理图像来覆盖物体表面,以模拟水草、珊瑚等细节。
3. 注意光线的设置。
在水下场景中,光线是非常重要的因素,因为它会影响到物体的透明度、反射率和投射的阴影。
使用3Dmax的灯光工具来模拟光线的效果,并调整亮度、颜色和硬度以达到最佳的效果。
步骤四:添加水下特效1. 在水下场景中,可以添加一些特效来增加逼真度和出彩效果。
例如,可以使用其他插件或工具创建泡沫、浪花或流动效果。
利用3Dmax制作逼真的水体效果
利用3Dmax制作逼真的水体效果标题:利用3Dmax制作逼真的水体效果引言:在数字媒体设计和动画制作领域,逼真的水体效果是一项非常具有挑战性的任务。
借助强大的三维建模和渲染软件3Dmax,我们可以实现令人惊叹的水体效果,为我们的作品增添生动和真实的视觉效果。
本文将详细介绍使用3Dmax制作逼真水体效果的步骤和技巧。
正文:一、准备工作:1. 确定设计需求:在开始之前,我们需要明确设计需求,包括水体的形状、颜色、透明度等。
这将有助于我们选择适当的3D模型和纹理。
2. 收集参考:查找并收集各种对于水体效果的参考图片、视频以及实地考察资料。
这将帮助我们更好地理解水体的形态和动态特征,提高我们的设计水平。
二、建模水体:1. 创建平面:在3Dmax中创建一个适当大小的平面来模拟水体的表面。
2. 拓扑细分:通过添加适量的顶点和边来使平面细分,以便更好地捕捉水体的形态。
你还可以使用Smooth或TurboSmooth等工具来增加细节。
3. 调整形态:使用编辑多边形工具,通过拖动顶点、边和面来调整水体的形态,使其更加符合设计需求。
4. 添加细节:根据参考图片和实地考察,添加合适的水波、涟漪等细节。
可以通过 Deform、Noise、Displace等工具来实现。
三、纹理贴图和材质设定:1. 纹理贴图:为水体模型添加适当的纹理,包括颜色、透明度、反射和折射等。
可以使用3Dmax自带的材质库或者自行制作纹理贴图。
2. 调整材质参数:根据设计需求,调整水体的材质参数,如光泽度、透明度、反射等。
你还可以添加水下景物或者光源,使整个场景更加逼真。
3. 动态效果:使用动画关键帧技术,为水体模型添加动态效果,如流动、波浪等。
这将使水体看起来更加生动和真实。
四、照明和渲染:1. 设置照明:为场景添加合适的光源来照亮水体模型。
你可以使用点光源、聚光灯、环境光或HDRI等。
确保照明效果符合设计需求。
2. 调整渲染设置:根据设计需求,通过调整渲染器的参数来获得高质量的渲染图像。
如何在3Dmax中创建逼真的水效果
如何在3Dmax中创建逼真的水效果3Dmax是一款功能强大的三维建模和动画制作软件,能够帮助用户创造出逼真的水效果。
本文将详细介绍如何在3Dmax中实现逼真的水效果,包括以下步骤:1. 创建水面模型- 打开3Dmax软件,点击“Create(创建)”选项卡,选择“Geometry(几何体)”。
- 在基础几何体中选择“Plane(平面)”,然后在视图框中绘制一个与地面平行的平面。
- 调整平面的大小和形状,使它符合实际需要的水面效果。
2. 应用材质- 选择创建好的水面模型,点击“Modify(修改)”选项卡,找到“Materials (材质)”。
- 在材质面板中点击“Standard(标准)”材质球,然后在右侧的属性编辑器中调整材质的颜色和透明度,使其看起来像水。
- 还可以通过添加纹理、反射和折射等属性来进一步增加水的真实感。
3. 添加动力学效果- 点击“Create(创建)”选项卡,选择“Helpers(辅助对象)”,然后选择“Space Warps(空间扭曲)”中的“Wind(风)”。
- 在视图框中点击并拖动鼠标,确定风的方向和强度,以模拟水面的波动效果。
- 还可以使用其他的空间扭曲效果,如“Deflector(偏转器)”和“Gravity(重力)”,来增加水的流动和碰撞效果。
4. 设置照明和阴影- 点击“Create(创建)”选项卡,选择“Lights(灯光)”。
- 在视图框中点击并拖动鼠标,创建一个合适的光源位置,以确保水面上有合适的光照效果。
- 调整光源的颜色和强度,以适应场景的需要。
- 还可以添加阴影效果,给水面和周围物体增加更多的真实感。
5. 调整渲染设置- 点击“Render(渲染)”选项卡,选择“Render Setup(渲染设置)”。
- 在渲染设置面板中,调整渲染器和渲染属性,如分辨率、帧率、质量等。
- 还可以选择合适的渲染类型和输出格式,以满足最终需求。
6. 渲染和调整效果- 点击“Render(渲染)”选项卡,选择“Render(渲染)”按钮,开始渲染水面场景。
Unity 3D 海水的实现2 折射与反射 离屏相机的渲染
Unity 3D 海水的实现2 折射与反射离屏相机的渲染接下来的目标是实现海水的折射和反射,书中使用的Unity应该是4.x时代的,Unity自带基础包是5.x的,然后我再在网上看了一个例子,看了下来基本原理都差不多。
还记得移动端简单阴影的实现吧,对,就是添加一个相机把照到的玩家传给Shader后,显示在地上,原理是一样的。
首先获取到玩家的相机,新建相机到玩家当前相机,经过一个反射矩阵的旋转后,截取海平面以上的渲染,然后再将渲染出来的Texture传递给Shader处理;折射更加简单,不用矩阵旋转,当前位置的海平面以下渲染出Texture,再传递给Shader。
下面是代码,生成Mesh的代码,我就去掉了:[csharp] view plain copy 在CODE上查看代码片派生到我的代码片public class Ocean : MonoBehaviour{// 一片区域网格横纵数量public int width = 32;public int height = 32;int g_height; // 组成网格横纵的线条数量int g_width;V ector2 sizeInv;// 区域的数量和大小public int tiles = 2;public Vector3 size = new Vector3(150f, 1f, 150f);// 材质public Material material;public Shader oceanShader;public Transform player;public Transform sun;public Vector4 SunDir;// 网格相关V ector3[] vertices; //顶点V ector3[] normals; //法线V ector4[] tangents; //三角Mesh baseMesh;// LOD,越在靠后List的Mesh,网格越少int maxLOD = 4;List<List<Mesh>> tiles_LOD;// 折射反射相关public bool renderReflection = true; //是否启用反射折射public int renderTexWidth = 128;public int renderTexHeight = 128;RenderTexture reflectionTexture = null;RenderTexture refractionTexture = null;Camera offscreenCam = null;bool reflectionRefractionEnabled = false; //是否初始化完成// Use this for initializationvoid Start(){// 折射反射sizeInv = new Vector2(1f / size.x, 1f / size.z);SetupOffscreenRendering(); // 添加离屏相机if (!renderReflection)EnableReflection(false);elseEnableReflection(true);// 计算线条数量g_height = height + 1;g_width = width + 1;// LOD,Mesh所在的List的LOD List编号越小,Mesh的网格越多tiles_LOD = new List<List<Mesh>>();for (int LOD = 0; LOD < maxLOD; LOD++){tiles_LOD.Add(new List<Mesh>());}for (int y = 0; y < tiles; ++y){for (int x = 0; x < tiles; ++x){Debug.Log("创建了一片水");float cy = y - Mathf.Floor(tiles * 0.5f);float cx = x - Mathf.Floor(tiles * 0.5f);// 创建一片水GameObject tile = new GameObject("WaterTile");// 坐标以当前节点为中心tile.transform.parent = transform;tile.transform.localPosition = new Vector3(cx * size.x, 0f, cy * size.z);// 添加Mesh渲染组件tile.AddComponent<MeshFilter>();tile.AddComponent<MeshRenderer>().material = material;yer = ToLayer("Water");tiles_LOD[0].Add(tile.GetComponent<MeshFilter>().mesh);}}GenerateHeightmap();}// 设置折射反射void SetupOffscreenRendering(){// 创建折射反射图RecalculateRenderTextures();// 创建Camera实现离屏渲染GameObject cam = new GameObject(); = "DeepWaterOffscreenCam";cam.transform.parent = transform;offscreenCam = cam.AddComponent<Camera>();offscreenCam.clearFlags = CameraClearFlags.Color;offscreenCam.depth = -1;offscreenCam.enabled = false;}// 当设置reflection和refraction被禁用的时候,设置lod为1void EnableReflection(bool isActive){renderReflection = isActive;if (!isActive) // 关闭反射折射,使用波光粼粼的图片替代{material.SetTexture("_Reflection", null);material.SetTexture("_Refraction", null);oceanShader.maximumLOD = 1;}else // 启用反射折射{OnDisable();oceanShader.maximumLOD = 2;RecalculateRenderTextures();}}// 重新生成反射折射的缓存图片void RecalculateRenderTextures(){if (renderReflection){reflectionTexture = new RenderTexture(renderTexWidth, renderTexHeight, 0);refractionTexture = new RenderTexture(renderTexWidth, renderTexHeight, 0);reflectionTexture.wrapMode = TextureWrapMode.Clamp;refractionTexture.wrapMode = TextureWrapMode.Clamp;reflectionTexture.isPowerOfTwo = true;refractionTexture.isPowerOfTwo = true;material.SetTexture("_Reflection", reflectionTexture);material.SetTexture("_Refraction", refractionTexture);material.SetVector("_Size", new Vector4(size.x, size.y, size.z, 0f));}}// 删除反射折射使用的缓存图片void OnDisable(){if (reflectionTexture != null){DestroyImmediate(reflectionTexture);}if (refractionTexture != null){DestroyImmediate(refractionTexture);}reflectionTexture = null;refractionTexture = null;}// 折射反射渲染物体void RenderObject(){if (Camera.current == offscreenCam)return;if (reflectionTexture == null || refractionTexture == null)return;if (renderReflection)RenderReflectionAndRefraction();}public LayerMask renderLayers = -1;// 具体的渲染,使用第二个相机拷贝当前相机的设置void RenderReflectionAndRefraction(){// 获取当前角色身上的主相机Camera renderCamera = Camera.main;Matrix4x4 originalWorldToCam = renderCamera.worldToCameraMatrix; // 获取世界到相机的矩阵,如果改变了相机的矩阵就不会再根据原Transform渲染,除非调用ResetWorldToCameraMatrixint cullingMask = ~(1 << 4) & renderLayers.value; //剪裁Mask,忽略水本身// 计算反射矩阵float d = -transform.position.y;Matrix4x4 lection = Matrix4x4.zero;CameraHelper.CalculateReflectionMatrix(ref reflection, new Vector4(0f, 1f, 0f, d)); //这里不明白,总是弄出了反射矩阵// 根据反射矩阵计算离屏相机位置和矩阵offscreenCam.backgroundColor = RenderSettings.fogColor;offscreenCam.transform.position = reflection.MultiplyPoint(renderCamera.transform.position); //当前相机置换到反射矩阵中offscreenCam.transform.rotation = renderCamera.transform.rotation;offscreenCam.worldToCameraMatrix = originalWorldToCam * reflection;offscreenCam.cullingMask = cullingMask; //设置剪裁maskoffscreenCam.targetTexture = reflectionTexture; //将反射缓存图片添加到离屏相机里,跟之前阴影是一个原理// 因为反射截取到的图片是翻转的,所以需要设置翻转GL.SetRevertBackfacing(true);// 获取剪裁平面,transform.position.y是当前海水的高度,最后两个值的正负表示剪裁的方向Vector4 cameraSpaceClipPlane = CameraHelper.CameraSpacePlane(offscreenCam, new Vector3(0.0f, transform.position.y, 0.0f), Vector3.up, 1.0f);Matrix4x4 projection = renderCamera.projectionMatrix; //获得渲染相机的投影矩阵Matrix4x4 obliqueProjection = projection;offscreenCam.fieldOfView = renderCamera.fieldOfView; //设置FOVoffscreenCam.aspect = renderCamera.aspect; //设置宽高比CameraHelper.CalculateObliqueMatrix(ref obliqueProjection, cameraSpaceClipPlane);// 开始真正的渲染offscreenCam.projectionMatrix = obliqueProjection;if (!renderReflection)offscreenCam.cullingMask = 0;offscreenCam.Render();GL.SetRevertBackfacing(false);// 折射渲染offscreenCam.cullingMask = cullingMask;offscreenCam.targetTexture = refractionTexture;obliqueProjection = projection;// 将渲染相机的各个参数设置给离屏相机offscreenCam.transform.position = renderCamera.transform.position;offscreenCam.transform.rotation = renderCamera.transform.rotation;offscreenCam.worldToCameraMatrix = originalWorldToCam;// 获取剪裁平面,计算投影矩阵cameraSpaceClipPlane = CameraHelper.CameraSpacePlane(offscreenCam, new Vector3(0.0f, transform.position.y, 0.0f), Vector3.up, -1.0f);CameraHelper.CalculateObliqueMatrix(ref obliqueProjection, cameraSpaceClipPlane);offscreenCam.projectionMatrix = obliqueProjection;offscreenCam.Render();offscreenCam.projectionMatrix = projection;offscreenCam.targetTexture = null;}// 初始化Mesh信息,请参考上一节void GenerateHeightmap(){}// 这边应该是Update的,但写在Update中会报GUI Window tries to begin rendering while something else has not ished rendering的错误void OnGUI(){// 设置玩家、太阳角度,并更新反射折射,折射反射是根据玩家视角来计算的if (player == null)player = GameObject.FindGameObjectWithTag("Player").GetComponent<Transform>();if (sun != null){SunDir = sun.transform.forward;material.SetVector("_SunDir", SunDir);}if (renderReflection)RenderObject();}}然后是CameraHelper的脚本:[csharp] view plain copy 在CODE上查看代码片派生到我的代码片public class CameraHelper{private static float sgn(float a){if (a > 0.0f)return 1.0f;if (a < 0.0f)return -1.0f;return 0.0f;}public static void CalculateObliqueMatrix(ref Matrix4x4 projection, Vector4 clipPlane){Vector4 q = projection.inverse * new Vector4(sgn(clipPlane.x), sgn(clipPlane.y), 1.0f, 1.0f);Vector4 c = clipPlane * (2.0F / (Vector4.Dot(clipPlane, q)));projection[2] = c.x - projection[3];projection[6] = c.y - projection[7];projection[10] = c.z - projection[11];projection[14] = c.w - projection[15];}public static Vector4 CameraSpacePlane(Camera cam, Vector3 pos, Vector3 normal, float sideSign){Vector3 offsetPos = pos + normal * 0.02f;Matrix4x4 m = cam.worldToCameraMatrix;Vector3 cpos = m.MultiplyPoint(offsetPos);Vector3 cnormal = m.MultiplyVector(normal).normalized * sideSign;return new Vector4(cnormal.x, cnormal.y, cnormal.z, -Vector3.Dot(cpos, cnormal));}public static void CalculateReflectionMatrix(ref Matrix4x4 reflectionMat, Vector4 plane) {reflectionMat.m00 = (1F - 2F * plane[0] * plane[0]);reflectionMat.m01 = (-2F * plane[0] * plane[1]);reflectionMat.m02 = (-2F * plane[0] * plane[2]);reflectionMat.m03 = (-2F * plane[0] * plane[3]);reflectionMat.m10 = (-2F * plane[1] * plane[0]);reflectionMat.m11 = (1F - 2F * plane[1] * plane[1]);reflectionMat.m12 = (-2F * plane[1] * plane[2]);reflectionMat.m13 = (-2F * plane[1] * plane[3]);reflectionMat.m20 = (-2F * plane[2] * plane[0]);reflectionMat.m21 = (-2F * plane[2] * plane[1]);reflectionMat.m22 = (1F - 2F * plane[2] * plane[2]);reflectionMat.m23 = (-2F * plane[2] * plane[3]);reflectionMat.m30 = 0F;reflectionMat.m31 = 0F;reflectionMat.m32 = 0F;reflectionMat.m33 = 1F;}}花了三天时间终于整理出来了比较精简的代码,不过渲染部分的矩阵,我还是没有太理解。
龙图教育:Unity3D教程 Water真实水的设定技巧
Unity3D教程Water真实水的设定技巧现实生活中水是由氢与氧构成的。
然而在Unity里头, 水又是由哪些东西构成的呢?有很多不同的水类型您可以创建, 或是直接使用prefab. 为了要展现最新的水特效与脚本, 我将专注于Water4ExampleSimple assets这个场景资产, 基本上它内含几个3D meshes, 用来表现您水面效果。
WaterTile scriptWater shader一个空物件, 用来表示水放置的位置, 并带有:一个水脚本把颜色法线贴图与主要参数暴露出来一个反射脚本一个lighting脚本用在高光特效一个displacement脚本最简单的方法是把把prefab拖到场景里面指定您的cutom meshAssets > Import Package > Water (pro only)在project window里头开启Standard Assets > Water (Pro only)资料夹,开启Water4资料夹,把Water4Example (Simple) Prefab拖曳到场景里面,选取其中一个tile meshes 到mesh component>点击右边的target icon 选取您的mesh (这个mesh必须要在你专案里面),如果你的mesh角度不对的话, 旋转Water4ExampleSimple parent node 90度角,藉由移动parent node来移动您的mesh,移除第二的tile mesh。
设置一旦你设定好mesh, 你就可以开始调整参数了,选取Water4ExampleSimple node, 在inspector检视参数。
Water BaseUnity3D Water真实水的设定技巧这个脚本的功能是用来启动或是关闭即时的平面反射效果(planar reflections), 这个是根据parent mesh的高度来计算的, 所以child meshes的自身Y轴位移应该是0, 这个参数也可以让你启动skybox来源的反射效果。
Unity 3D游戏场景设计实例教程 CHAPTER 6 Unity3D水系的制作
图 6-8 创建 Daylight Water 水面
默认创建出的水面面积很小 , 可以在 Inspector->Transform 面板
下对齐 Scale 缩放参数进行设置 , 我们将 X 和 Z 的缩放参数由原来的 16 设置为 120 , 同时将水面移动放置在合适的位置 ,水面要覆盖住整个水 塘 ,水面与地形穿插处不能出现漏缝 , 如图 6-9 所示。
图 6- 19 粒子瀑布的参数设置面板
在 E llip soid Particle Emitter面板下Min Size 和Max Size用来设置每个 粒子的最小和最大尺寸 , 也就是瀑布 Alpha 面片的大小尺寸;Min Energy和
Max Energy 可以设置瀑布的水流长度;Min Emission 和 Max Emission 用来 设置粒子的产生数量 , 也就是瀑布的水流密度; Ellipsoid 选项中的 X 参数可以 控制瀑布的宽度; 在 Particle Renderer 面板下可以设置粒子瀑布是否投射阴 影(Cash Shadow)和接受阴影投射(Receive Shadow);Particle Renderer 面板下方是瀑布的 Alpha 面片贴图 , 我们可以将贴图进行替换 、更改 Shader 模 式以及设置贴图的平铺和位移参数。
图 6-9 调整水面大小
接下来我们对水面参数进行进一步设置 , Inspector 面板下的 Mesh Renderer 窗口可以设置水面是否投射阴影(Cash Shadow) 和接受阴影 投射(Receive Shadow) 。在 Water( script) 选项窗口中可以对水面 的特性进行设置 ,如图 6- 10 所示。
Import Package 选项来导入 ,如图 6-6 所示。
基于Unity3D的VR海洋探索游戏开发
基于Unity3D的VR海洋探索游戏开发Unity3D是目前游戏开发领域中非常流行的一种游戏引擎,具有跨平台性、易用性和可扩展性等优点,因而被越来越多的游戏开发者所采用。
而随着VR技术的普及和发展,越来越多的游戏也开始加入VR元素,让玩家可以更加身临其境地感受到游戏的乐趣。
本文将介绍如何基于Unity3D开发一款VR海洋探索游戏。
1.确定游戏内容及要素首先需要确定游戏的基本内容和要素,因为游戏的内容和要素是游戏开发的基础,决定了开发者需要准备哪些资源以及编写哪些代码。
比如我们可以将游戏的基本内容确定为探索海洋,寻找并观测各种海洋生物,那么我们需要准备的资源就包括海洋场景模型、各种海洋生物模型和贴图等。
同时还要考虑游戏的要素,比如控制方式、交互方式等等,因为这些都会影响到后续的开发工作。
2.创建场景并添加模型根据游戏内容和要素确定好后,接下来就可以创建游戏场景了。
首先需要在Unity3D 中创建一个新的场景,然后导入我们准备好的各种模型和贴图。
在导入模型后,我们可以通过调整缩放比例、位置和旋转等方法来使其在场景中呈现出我们想要的效果,同时还可以调整光照、阴影等参数,让场景更加真实。
在添加模型时,一定要注意模型的质量和大小,否则会影响游戏的运行和效果。
3.编写游戏脚本除了创建场景和添加模型之外,还需要编写游戏脚本来实现游戏的各种功能和交互。
比如,我们可以编写一个控制器脚本来控制玩家在游戏中的移动和视角,同时还可以加入交互功能,比如捕捉和观测海洋生物。
同时,在编写脚本时,还需要注意优化代码,减少资源占用和提高游戏性能。
4.添加VR元素最后,我们需要添加VR元素,让玩家可以通过VR设备来体验游戏。
Unity3D已经支持多种VR设备,比如Oculus Rift、HTC Vive等,开发者只需要根据设备的要求来调整游戏场景和代码就可以了。
比如,我们可以调整玩家的视角,让其更加逼真地感受到海洋探索的乐趣。
总结:通过上述几个步骤,基于Unity3D的VR海洋探索游戏就可以顺利开发完成。
unity3d水下模糊效果
个教程大部分使用的是U3D内置的资源,使用到的水下模糊效果也仅仅是添加了Depth Of Field特效,用于模拟水下效果,下面有两种触发方式的讲解.一、判断摄像机在绝对世界的水平位置.首先先看看效果后面正式开始制作1. 新建一个地型,挖一个这样的洞2. 在资源包里添加一个水面,调整到合适的大小及位置。
3. 对主摄像机添加Depth Of Field特效这个时候Game面板应该已经有变化了,Inspector面板里也已经多了个Depth Of Field脚本。
点前面的小勾可以打开或关闭脚本。
你可以试着编辑Depth Of Field脚本里的参数,可以得出很有趣的效果。
更多摄相机效果请看Design3 - Image Effects。
4. 编写脚本判断摄像机是否在水下JavaScript的代码:var Camara_1 : GameObject;function Start(){Camara_1 = GameObject.Find("/First Person Controller/Main Camera"); }function Update () {if(transform.position.y < 9.5)Camara_1.GetComponent("DepthOfField").enabled = ***e;if(transform.position.y > 9.5)Camara_1.GetComponent("DepthOfField").enabled = false;}C Sharp Script的代码:using UnityEngine;using System.Collections;public class shuixia_1 : MonoBehaviour {public GameObject Camara_1;void Start () {Camara_1 = GameObject.Find("/First Person Controller/Main Camera");}void Update () {if(transform.position.y < 9.5)Camara_1.GetComponent<DepthOfField>().enabled = ***e;if(transform.position.y > 9.5)Camara_1.GetComponent<DepthOfField>().enabled = false;}}想了想还是不截图了,直接上代码,IF后面的9.5是水平面的高度,那个数值可以设定触发相机模糊的高度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.1 Unity引擎水面的制作 6.2 瀑布效果的制作 6.3 喷泉效果的制作
水系是游戏场景制作中的一个重要内容,也是场景自然元素的重要构 成部分,游戏场景中的水系是指游戏中所有水体的集合,我们可以从水体 形式和应用环境两个方面来进行分类。从水体形式来区分,大致可分为静 态水系和动态水系,从应用环境来区分,又可分为自然水系和人工水系。
图 6-10 水面特性参数设置面板
Water Mode 可以选择水面的类型:Simple为没有物理拟真效果的简单水 面效果;Reflective为反射水面类型,侧重于水面的反射效果;Refractive 为折射水面类型,侧重于水面折射效果。Texture Size 用来设置纹理尺寸, 其最终效果会影响水面的反射或折射细节,尺寸设置越大水面反射或折射效果 越精细,锯齿感越弱,如图 6-11 所示,我们可以看到左图对比右图有明显的 锯齿感。Clip Plane Offset 用来设置反射或折射影像的偏移效果。
图 6-11 Texture Size 不同参数设置对比效果
这里我们将 Water Mode 设置为 Reflective 反射模式,单击工具 栏的播放按钮,利用游戏视图近距离观察水面效果,如图 6-12 所示, Unity 引擎的菲涅耳水面无论在物理特性、凹凸质感还是流动性方面效果 都非常出众。
图 6-5 极具物理真实度的菲涅耳水面
Unity 引擎可以利用脚本制作出效果优秀的菲涅耳水面,在 Unity 预 置资源中已经为我们提供了 Water(Basic)和 Water(Pro)的资源包,可 以在新建项目的时候进行导入,或利用引擎编辑器 Assets 菜单下的 Import Package 选项来导入,如图 6-6 所示。
ቤተ መጻሕፍቲ ባይዱ 6-9 调整水面大小
接下来我们对水面参数进行进一步设置,Inspector 面板下的 Mesh Renderer 窗口可以设置水面是否投射阴影(Cash Shadow)和接受阴影投 射(Receive Shadow)。在 Water(Script)选项窗口中可以对水面的 特性进行设置,如图 6-10 所示。
图 6-4 利用三维软件制作水面的方法
虽然通过贴图的方式能够模拟出水面的基本效果,但这是远远不够的, 因为现实生活中的水面除了水纹和透明的效果外,还应当具有凹凸起伏、 反射、折射等自然物理特征。
所以在游戏引擎技术出现以后,这种简单利用 Plane 制作的水面很 快就被淘汰,取而代之的是利用引擎和程序计算生成的物理学拟真水面, 也被称为“菲涅耳”水面,这种水面不仅具有高度真实的反射和折射效果, 而且在凹凸感、流动性以及与其他物体接触的特性上都有质的提升,这就 是现在三维游戏场景平面水体效果制作的主流手段,如图 6-5 所示。
动态水系是指游戏中运动的水体,包括湍流、瀑布、喷泉等(见图 6-2), 在游戏制作中动态水系往往包含自身的动画,一般都是在三维软件中利用模型 来制作,同时需要结合粒子特效共同完成整体效果,在如今很多游戏的制作中 也会出现完全利用引擎粒子特效来实现动态水系效果的情况。
图 6-2 游戏中的动态水系
自然水系是指游戏自然场景环境下的水系,通常就是游戏野外场景中的 水系,如江河湖海、天然瀑布等。人工水系是相对自然水系而言的,指存在 于人文环境中的水系,如园林瀑布、景观喷泉、人工池塘等(见图 6-3), 多应用于建筑场景当中。
图 6-8 创建 Daylight Water 水面
默认创建出的水面面积很小,可以在 Inspector->Transform 面板 下对齐 Scale 缩放参数进行设置,我们将 X 和 Z 的缩放参数由原来的 16 设置为 120,同时将水面移动放置在合适的位置,水面要覆盖住整个水 塘,水面与地形穿插处不能出现漏缝,如图 6-9 所示。
图 6-12 制作完成的水面效果
瀑布是三维游戏场景中常见的水体形式,也是应用最为广泛的动态水 系之一,多应用于野外自然环境以及建筑园林、广场等场景中。在 Unity 引擎编辑器中实现瀑布效果主要有两种方法,一是利用面片模型和贴图 UV 动画来制作,二是利用 Unity 引擎的粒子系统制作高度逼真的动态瀑布效 果。
图 6-6 在 Unity 引擎编辑器中导入预置资源
首先在引擎编辑器中创建一块地形区域,利用拉升 / 凹陷地形绘制工 具在地形上制作出凹陷的水塘效果,如图 6-7 所示。
图 6-7 制作凹陷地形
接下来在Project项目面板顶端的资源搜索框中搜索 water,搜索结果列 表会显示当前项目中存在的所有水系资源,其中菲涅耳水面资源有四种,分别 为Daylight Simple Water、Daylight Water、Nighttime Simple Water 和 Nighttime Water。其中 Daylight 为白天使用的水面效果,Nighttime 为夜间水面效果,Simple Water 为没有物理拟真效果的简单水面效果,其他 两种可以进行真实的物理设置,这里我们选择 Daylight Water,如图 6-8 所示。
图 6-3 游戏中的喷泉效果
早期的三维游戏场景制作缺乏像现在这样强大的游戏引擎支持,水面 都是在三维软件中利用模型和贴图制作出的效果,在制作中通常会用到两层 Plane 面片模型,下面一层添加水体基本色调的贴图,上面再加上一层半 透明的水波纹 Alpha 贴图,这样就形成了水面的基本效果,分别调节上下 两层模型贴图的 UV 动画,这样就制作出了流动的水面效果,如图 6-4 所 示。
静态水系是指没有定向流动的平面水体,在游戏场景中大到江、河、 湖、海等水体平面,小到池塘、水井、水缸中的水平面都属于静态水系的 范畴。在早期的三维游戏制作中静态水系都是由三维软件来制作,随着游 戏引擎技术的发展,现在游戏场景中的静态水系都是直接由引擎来完成的, 效果如图 6-1 所示。
图 6-1 游戏引擎制作的水面效果