Unity3D 图形问题之如何使用水?



如何使用水?

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

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)的图形卡上运行。旧图形卡上使用简单水。
  • 简单水可以在任何机器上使用,硬件能力不同,所应用的细节级别就不同。
时间: 2024-10-12 19:58:28

Unity3D 图形问题之如何使用水?的相关文章

Unity3D 图形问题之怎样使用水?

?? 怎样使用水? 注意:本页所述内容仅仅适用于台式机编辑器模式. Unity 的标准资源和专业版标准资源包 (Standard Assets and Pro Standard Assets packages) 中包括数种水预设(包括所需的着色器.脚本和艺术资源). Unity 包括一个基本水效果,而 Unity 专业版则包括带实时反射和折射的水,两者都提供有白天和晚上分开的水预设. 白天的水反射效果(Unity 专业版) 白天的水反射/折射效果(Unity 专业版) 水设置 在大多数情况下.仅

Unity3D - 图形性能优化:优化着色器加载时间

Unity官方文档之"图形性能优化-优化着色器加载时间"的翻译,E文链接. Optimizing Shader Load Time 优化着色器加载时间 Shaders are small programs that execute on the GPU, and loading them can take some time. Each individual GPU program typically does not take much time to load, but shade

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

unity3d教程 中的单例模式通经常使使用方法 通经常使使用方法是在相关类增加GetInstance()的静态方法,检查实例是否存在.假设存在,则返回.假设不存在.则返回一个"须要用游戏元素类关联"的调试警告错误. public class MyClass { private static MyClass instance; public static MyClass GetInstance() { if (!instance) { instance = GameObject.Fin

Unity3D - 图形性能优化

Unity官方文档中有一篇是讲图形性能优化的,这篇文章无疑是指导Unity开发优化的最佳文章.Unity圣典曾翻译过旧的版本,但是太老旧了,跟最新的文档差别很大.我试着翻译一下最新的文档,点击查看原文链接. Optimizing Graphics Performance  图形性能优化 Good performance is critical to the success of many games. Below are some simple guidelines for maximizing

Unity3D 图形问题之如何修正已导入模型的旋转?

 如何修正已导入模型的旋转? 一些三维艺术资源包导出其模型,以便让 Z 轴朝上.Unity 中的大多数标准脚本都假定在三维世界中 Y 轴代表向上.在 Unity 中修正旋转通常要比修改脚本使其契合容易得多. Z 轴朝上的模型 如果可能的话,建议导入前在三维建模应用程序中修正模型,使 Y 轴朝上. 如果不可行,可以多添加一个父变换在 Unity 中进行修正: 使用游戏对象 (GameObject)->创建空对象 (Create Empty) 菜单来创建一个空游戏对象. 定位新游戏对象,确保其位

Unity3D - 图形性能优化:帧调试器

Unity官方文档之"图形性能优化-帧调试器"的翻译,E文链接. Frame Debugger 帧调试器 The Frame Debugger lets you freeze playback for a running game on a particular frame and view the individual draw calls that are used to render that frame. As well as listing the drawcalls, th

unity3d 图形吧 之 场景中画圆

?? 孙广东:2015-2-6/2:28  转载请注明出处:http://blog.csdn.net/u010019717 更全的内容请看我的游戏蛮牛地址:http://www.unitymanual.com/space-uid-18602.html 先看一下效果:     区别就是一个2d一个3d. 2d就不介绍了,相对简单一些,对于3d的内容,我们先来看一看数学中的一个题和答案,这样就很容易理解程序了. 这样就好办了!    直接看下面几个脚本吧. using UnityEngine; us

Unity3D图形基础笔记(1)

1.坐标系 (1).Unity 世界空间坐标系为左手系,Y正向向上的左手系.这一点在需要从3ds max里导入模型到Unity时需要注意,3ds max使用的是以Z正向朝上的右手系.根据坐标系手系和坐标基朝向的不同,可以很容易推导出所需要做的坐标变换. 3DS Max -> Unity 的坐标变换为:绕着x轴旋转90度,直接使用四元数变换如下: 1 public Vector3 MaxToUnity(Vector3 v) 2 { 3 return Quaternion.Euler(90.0f,0

Unity3D用户手册

Welcome to Unity. 欢迎使用Unity. Unity is made to empower users to create the best interactive entertainment or multimedia experience that they can. This manual is designed to help you learn how to use Unity, from basic to advanced techniques. It can be