怎样使用水?

注意:本页所述内容仅仅适用于台式机编辑器模式。

Unity 的标准资源和专业版标准资源包 (Standard Assets and Pro Standard Assets packages) 中包括数种水预设(包括所需的着色器、脚本和艺术资源)。

Unity 包括一个基本水效果,而 Unity 专业版则包括带实时反射和折射的水,两者都提供有白天和晚上分开的水预设。

白天的水反射效果(Unity 专业版)

白天的水反射/折射效果(Unity 专业版)

水设置

在大多数情况下。仅仅需将现有的一个预设 (Prefab) 放入场景其中(确认 已安装标准资源 (Standard Assets installed)):

  • Unity 在标准资源 (Standard Assets)->水 (Water) 中有白天简单水 (Daylight Simple Water) 和夜间简单水 (Nighttime Simple Water) 两种。

  • Unity 专业版在专业版标准资源 (Pro Standard Assets)->水 (Water) 中有白天水 (Daylight Water) 和夜间水 (Nighttime Water) 两种,可是还须要标准资源 (Standard Assets)->水 (Water) 中的一些资源。水模式(简单、反射、折射)可在检视器 (Inspector) 中设置。

预设使用椭圆形的网格表示水。假设须要使用一个不同的网格,最简单的方法是在水对象的网格过滤器 (Mesh Filter) 中更改:

从头開始创建水(高级)

Unity 中的简单水要求附加脚本到类似平面的网格中并使用水着色器:

  1. 拥实用于水的网格。应为平网格。水平方向。不须要 UV 坐标。

    水游戏对象应使用水 (Water) 层 (layer),可在检视器 (Inspector) 中设置。

  2. 从标准资源 (Standard Assets)/水 (Water)/源 (Sources) 中将 WaterSimple 脚本附到对象中。
  3. 在材质中使用 FX/Water (simple) 着色器,或调整提供的水材质之中的一个(白天简单水 (Daylight Simple Water) 或夜间简单水 (Nighttime Simple Water))。

Unity 专业版中的反射/折射水要求用类似的步骤从头開始设置:

  1. 拥实用于水的网格。应为平网格,水平方向。不须要 UV 坐标。水游戏对象应使用水 (Water) 层 (layer),可在检视器 (Inspector) 中设置。
  2. 从专业版标准资源 (Standard Assets)/水 (Water)/源 (Sources) 中将 水 (Water) 脚本附到对象中。
    • 水渲染模式可在检视器 (Inspector) 中设置:简单、反射或折射。
  3. 在材质中使用 FX/Water 着色器,或调整提供的水材质之中的一个(白天水 (Daylight Water) 或夜间水 (Nighttime Water))。

水材质的属性

这些属性用于反射与折射 (Reflective & Refractive) 水着色器中。大部分也用于简单水着色器。

   
波浪大小 (Wave scale) 波浪法线贴图的比例。值越小,水波越大。
反射/折射扭曲度 (Reflection/refraction distort) 波浪法线贴图扭曲的反射/折射量。
折射颜色 (Refraction color) 折射时呈现的额外色调。
环境反射/折射 (Environment reflection/refraction) 实时反射和折射渲染纹理。
法线贴图 (Normalmap) 定义水波的形状。终于波效结合了两张法线贴图。每张以不同的方向、规模和速度滚动。

第二张法线贴图是第一张的一半大小。

波速 (Wave speed) 第一张法线贴图(1 号和 2 号数字)与第二张法线贴图(3 号和 4 号数字)的滚动速度。
菲涅尔 (Fresnel) 带 alpha 通道的纹理控制菲涅尔 (Fresnel) 效果。依据视角不同,反射与折射的可见度。

其余的属性在反射与折射着色器 (Reflective & Refractive shader) 中不会用到,但也要进行设置以免用户的显卡不支持,必须退回到较简单的着色器:

   
反射颜色 (Reflective color)/立方体和菲涅尔 (cube and Fresnel) 依据视角定义水的颜色 (RGB) 和菲涅尔效果 (A) 的纹理。
地平线颜色 (Horizon color) 地平线上水的颜色。(仅仅在简单水着色器中使用)
后备纹理 (Fallback texture) 假设太老旧的视频卡无法执行任一效果较好的着色器,在此种视频卡上用来代表水的纹理。

硬件支持

  • 反射 + 折射水能够在支持像素着色器 2.0(GeForce FX 及更高版本号。Radeon 9500 及更高版本号。Intel 9xx)的图形卡上执行。旧图形卡上使用反射水。

  • 反射水能够在支持像素着色器 1.4(GeForce FX 及更高版本号,Radeon 8500 及更高版本号,Intel 9xx)的图形卡上执行。旧图形卡上使用简单水。
  • 简单水能够在不论什么机器上使用。硬件能力不同,所应用的细节级别就不同。

最新文章

  1. C++_系列自学课程_第_11_课_类型转换_《C++ Primer 第四版》
  2. PHP之打开文件
  3. BZOJ1088扫雷Mine 解析报告
  4. poj 1797(并查集)
  5. 使用CodeIgniter框架搭建RESTful API服务
  6. C++ Windows 上简单的非阻塞Select模型
  7. Mac下的利器们介绍
  8. 用Jquery Widgets Factory写自己的表格控件——AFGrid(支持增、删、改)
  9. [AnuglarJS] TweenMax with ngAnimate
  10. PHP 提交checkbox表单时 判断复选框是否被选中
  11. 多个UpdatePanel控件相互引发刷新的使用
  12. javamail+ical4j发送会议提醒
  13. Java经典编程题50道之三十九
  14. js 数组 remove
  15. P1341 无序字母对 欧拉回路
  16. Beta阶段冲刺汇总(团队)
  17. 安装edusoho
  18. nginx+php 开启https
  19. 通过runtime打印出对象所有属性的值
  20. JS的 instanceof 方法

热门文章

  1. 层级数据模板 案例(HierarchicalDataTemplateWindow)
  2. HDU-3320
  3. Python 进阶 之 enumerate()函数
  4. [git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF[ git 处理和修改行结束符(CRLF和LF)]
  5. 使用Redis实现高并发分布式序列号生成服务
  6. [libgdx游戏开发教程]使用Libgdx进行游戏开发(2)-游戏框架搭建
  7. codeforces 868B The Eternal Immortality【暴力+trick】
  8. POJ1679 The Unique MST(Kruskal)(最小生成树的唯一性)
  9. java.sql.SQLException: Access denied for user ''@'localhost' (using password: No)
  10. luogu P4012 深海机器人问题