怎样使用水?

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

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)的图形卡上执行。旧图形卡上使用简单水。
  • 简单水能够在不论什么机器上使用。硬件能力不同,所应用的细节级别就不同。

Unity3D 图形问题之怎样使用水?的更多相关文章

  1. Unity3D - 图形性能优化:优化着色器载入时间

    Unity官方文档之"图形性能优化-优化着色器载入时间"的翻译,E文链接. Optimizing Shader Load Time 优化着色器载入时间 Shaders are sm ...

  2. Unity3d 实现鼠标左键点击地形使角色移动到指定地点[脚本]

    Unity3d 实现鼠标左键点击地形使角色移动到指定地点[脚本] 2013-02-19 15:29:33     我来说两句      作者:nnsword 收藏    我要投稿 其中涉及,移动速度, ...

  3. Unity3D 图形优化

    Unity3D 图形优化 例如DrawCall,我得到的是一些并不完全正确的信息,例如将N个纹理打包成一个图集,这个图集就只会产生一个DrawCall,如果不打成图集,那么就会有N个DrawCall. ...

  4. 实例教程Unity3D单例模式(一)通经常使使用方法

    unity3d教程 中的单例模式通经常使使用方法 通经常使使用方法是在相关类增加GetInstance()的静态方法,检查实例是否存在.假设存在,则返回.假设不存在.则返回一个"须要用游戏元 ...

  5. Unity3D用户手册

    Unity Manual 用户手册 Welcome to Unity. 欢迎使用Unity. Unity is made to empower users to create the best int ...

  6. 安装linux下面用来配置网络,防火墙,系统服务等设置的图形小工具Setup

    Setup命令是linux下面用来配置网络,防火墙,系统服务等设置的图形小工具.使用起来非常方便简单,可是centos\redhat最小化安装之后发现setup命令工具用不了. 接下来介绍如何安装se ...

  7. 【转帖】Linux图形用户界面:KDE与GNOME的由来

    Linux图形用户界面:KDE与GNOME的由来 置顶 2018年08月11日 15:51:25 hwpipixia 阅读数 4778 https://blog.csdn.net/u013895853 ...

  8. Unity3D学习笔记1——绘制一个三角形

    目录 1. 绪论 2. 概述 3. 详论 3.1. 准备 3.2. 实现 3.3. 解析 3.3.1. 场景树对象 3.3.2. 绘制方法 4. 结果 1. 绪论 最近想学习一下Unity3d,无奈发 ...

  9. 分享数百个 HT 工业互联网 2D 3D 可视化应用案例

    过去的 2018 年,我们认为是国内工业互联网可视化的元年,图扑软件作为在工业可视化领域的重度参与者,一线见证了众多 HTML5/Web 化.2D/3D 化的项目在工业界应用落地,我们觉得有必要在此分 ...

随机推荐

  1. 《Java编程思想》笔记 第十一章 持有对象

    1.保存对象引用 1.数组,数组具有固定大小 2.容器类,可自动调节大小 2.容器类 List  Set  Queue  Map 及常用的实现类 2.1 Collection (接口) 保存独立的元素 ...

  2. Spring boot 文件路径读取异常

    在开发代码中,有一段需要获取resources目录下的一个配置文件(这里写作test.xml). 这段代码在ide中没有任何问题,但是一打成jar包发布到线上,这段代码就会报找不到对应文件的错误. 按 ...

  3. eclipse出现build path 错误

    右击本项目-build path-config build path-libraries-发现有选项是带错误符号,于是点击edit然后点击alternative jre选择安装了的jre就解决问题了

  4. 杀掉MYSQL死锁进程

    vi /usr/local/killmysqlprocess.sh #!/bin/bash #*/1 * * * * /usr/local/src/killmysqlprocess.sh backdi ...

  5. 【转】Ubuntu 14.04.3上配置并成功编译Android 6.0 r1源码

    http://www.linuxidc.com/Linux/2016-01/127292.htm 终于成功把Android 6.0 r1源码的源码编译.先上图,这是在Ubuntu中运行的Android ...

  6. Android动画之仿美团加载数据等待时,小人奔跑进度动画对话框(附顺丰快递员奔跑效果)

    Android动画之仿美团加载数据等待时,小人奔跑进度动画对话框(附顺丰快递员奔跑效果) 首句依然是那句老话,你懂得! finddreams :(http://blog.csdn.net/finddr ...

  7. nodejs获取ASP.Net WebAPI(IIS Windows验证)

    处理了很多天,终于使用Nodejs可以发出请求至WebAPI,能够正常处理数据了 首先加入npm包 npm install httpntlm 在app.js中加入代码 var httpntlm = r ...

  8. Asp.net中web.config配置文件详解

    Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中 ...

  9. 模板—算法—整体二分(区间k小值)

    模板—算法—整体二分(区间k小值) Code: #include <cstdio> #include <algorithm> using namespace std; #def ...

  10. [JSOI2008]Star War

    星球之间互相直接或间接地连接帝国开始使用死星有计划地摧毁反抗军占领的星球给出星球间隧道的连通情况,已经帝国打击的顺序要求以尽量快的速度求出每一次打击之后反抗军占据的星球的联通快的个数(若两个星球,直接 ...