法线贴图

次时代游戏用的比较多

1:法线贴图是凹凸贴图技术上 的一种应用,有时也称为Dot3(仿立体)凹凸纹理贴图;
2: 法线贴图是不增加多边形的情况下,增强模型的细节;
3: 法线贴图是高精度模型导出来的一种贴图,作用到低精度jing'd度模型上面,增强低精度模型的细节同时,又能获取很好的性能;
4:法线贴图的使用:
模型资源: (1) 低精度的模型; (2)法线贴图; (3) 漫反射贴图; -->美术提供,,使用3DMark,程序员不用管

法线贴图实例

思路

  创建材质: 创建Legacy Shaders/Diffuse Legacy,Shaders/Bumped Diffuse 两个shader的材质进行比较
  法线贴图的材质类型一定要是 normalmap
  切换材质: 来观察变化和比较区别;
  代码切换材质:
  学会使用代码来切换模型的材质,实现换皮

步骤

1.创建Unity工程和文件目录,保存场景

2.把法线贴图和纹理贴图以及模型文件都复制到res文件夹下,Dinosaur.FBX模型,GRANDEB2.JPG法线,GRANDECO.JPG纹理

3.把法线贴图GRANDEB2.JPG的Texture Type设置为Normal Map法线贴图,点击Apply

4.创建一个Material文件夹或者把刚才自带的Material里面的内容删除,重新创建一个漫反射材质球叫Diffuse,设置它的shader为Legacy Shaders---->Diffuse,把纹理贴图GRANDECO.JPG拖进去

5.把模型Dinosaur.FBX拖进Scene场景中,设置节点的Metarials的Element0,Element1为Diffuse,这个是普通的效果,细节看起来很一般

6.接下来我们用法线贴图,创建一个材质球Normal,设置它的shader为Legacy Shaders---->Bumped Diffuse,把GRANDECO.JPG拖进base,把GRANDEB2.JPG拖进Normalmap里面

7.重新设置模型的Metarials的Element0,Element1为Normal材质球,这个就是法线贴图的效果,效果很逼真,模型面没有增加,但是细节提升非常多。

8.用代码实现材质的更换(常用,比如游戏中遇到某些事件物体变色等),创建脚本change_materails,关联到模型节点下

9.打开change_materails脚本

using UnityEngine;
using System.Collections; public class change_materials : MonoBehaviour {
public Material diffuse_map;//普通纹理
public Material normal_map;//法线贴图 private MeshRenderer render; private bool normal;
// Use this for initialization
void Start () {
this.normal = false;
this.render = this.GetComponent<MeshRenderer>();//获得MeshRenderer组件
this.render.materials = new Material[] { this.diffuse_map, this.diffuse_map };//设置材质为普通纹理,有几个Element,或者说size是多少,就是多大的数组
} // Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown()) {
this.normal = !this.normal;
if (this.normal) {
this.render.materials = new Material[] { this.normal_map, this.normal_map };//设置材质为法线贴图
}
else {
this.render.materials = new Material[] { this.diffuse_map, this.diffuse_map };//设置材质为法线贴图
}
}
}
}

10.运行,点击Game屏幕,切换贴图

阴影的设置

是在Light组件上设置的,也可以在Edit-->Project Settings->Quality中设置全局参数,后者的设置只有在设置自己阴影的Resolution为Use Quality Settings的Light组件才能使用

1: unity可以通过修改阴影的参数来对阴影的质量进行设置;
2: unity使用阴影贴图来显示阴影的,阴影贴图可以看作是灯光投射到场景的阴影通过纹理贴图的形式表现出来;
3: 阴影的质量取决于两个方面:

   (一) 贴图分辨率(Resolution)(二)阴影的类型(Hard/Soft);
    Resolution设置: 低质量 中等质量 高质量 极高质量,越高,越清晰,消耗也越大。
    Type: 可以设置为hard阴影和softer阴影; hard比较生硬,但是软阴影比硬阴影要消耗更多的资源。
    硬阴影是GPU运算的,不影响CPU的性能和内存,软阴影会消耗CPU,但是硬阴影的细节没有软阴影的精细,效果不好,太硬。
4: 用户将阴影设置为 Use Quality Settings使用的是全局的设置参数:全局设置参数面板这样打开Edit-->Project Settings->Quality
Edit-->Project Settings->Quality 中和阴影相关的参数。
  Shadows: 设置阴影的类型;Disable Shadows全局没有阴影,Hard Shadows Only全局只用硬阴影,Hard and Soft Shadows全局软和硬阴影都可以
  Shadow Resolution 阴影设置分辨率,分辨率越高,开销越大
  Shadow Projection 阴影投射, 平行光的投射投影有两种: Close Fit渲染高分辨率阴影, Stable Fit渲染低分辨率阴影; 
  Shadow Distance: 相机阴影可见的最大距离,超过这个距离阴影不会被计算和绘制;就是物体到摄像机的距离
  Shadow Casades : 阴影重叠,重叠数目越高,质量越好,开销越大;

阴影的优化

搞不好就是性能的瓶颈
1: 静态物体: 尽量使用光照贴图,将阴影预先烘培出来,不实时的计算阴影;
2: 设置分辨率和阴影类型,适当降低开销,硬件阴影的消耗要比软件阴影的小;
3: 设置阴影在摄像机范围的显示距离;
4:并非所有的显卡都支持硬件阴影,要做好测试;

小技巧:

打开模型的三角网格方法:

在Scene视图的菜单栏的Gizmos下面勾选Selection Wire

关于Unity中的光照(三)的更多相关文章

  1. 关于Unity中的光照(七)

    全局光照 GI 这里所说的反射就是,一个红色的物体,当太阳照射它的时候,它周围的物体也会变得有点红. 1:Realtime每帧都会计算光照,实时光照是不会反射的,所以它的光影显得单调;2:Baked ...

  2. 关于Unity中的光照(六)

    反射探头 1:镜子金属等具有光滑表面的物体都会反射,而游戏中计算实时反射非常消耗CPU的资源, unity5.0新增了一个反射探头的技术,通过采样点,生成反射Cubemap,然后通过特定的着色器从Cu ...

  3. 关于Unity中的光照(五)

    Mobile Diffuse Unity自带的一种shader,用的比较多,性能还可以.我们默认创建的unit shader基本和它一致,但是没有参与光照计算,看起来和Mobile Diffuse有区 ...

  4. 关于Unity中的光照(四)

    渲染路径和颜色空间 1:Unity光影效果可以通过设置 渲染路径和颜色空间;2: 渲染路径: 光照到物体表面,物体着色的时候,算上光的颜色的时候有这么几种光照的着色方式,计算着色的方式 forward ...

  5. 关于Unity中的光照(二)

    光源 1: 光照的本质:就是光的颜色和物体纹理的颜色的混合;2: 光源类型: 点光源,定向光源,聚光灯, 区域光源; 区域光的范围会在场景中用黄色的光显示出来; z轴是光的方向; 光的强度会随距离衰减 ...

  6. 关于Unity中的光照(一)

    一.光源定义 光源,是一个普通节点加一个Light组件,创建的时候可以直接创建光源节点,也可以先创建一个空节点,再添加Light组件实例. 二.颜色形成 看到的物体颜色受两个很重要的因素的影响,一个是 ...

  7. 【unity shaders】:Unity中的Shader及其基本框架

    shader和Material的基本关系 Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出.绘图单元可以依据这个输出来将图 ...

  8. Unity中的ShaderToys——将大神们写的shader搬到unity中来吧

    http://lib.csdn.net/article/unity3d/38699 这篇文章翻译自国外的一篇文章(这里是原文链接),正在使用unity的你是否在shader toy上发现很多牛逼哄哄的 ...

  9. 浅析Unity中的Enlighten与混合光照

    0x00 前言 在Unity的5.6版本之前的5.x中,主要使用了Geomerics公司的Enlighten[1]来提供实时全局照明以及烘焙全局照明,在5.6之后Unity引入了新的Lightmapp ...

随机推荐

  1. ASP.NET CORE做的网站运行在docker上(不用dockerfile文件部署)

    按网上的做法用dockerfile文件是可以弄得出来的,http://www.docker.org.cn/article/119.html, 不过我想把网站文件放在外面硬盘目录,再映射进去,这样只要在 ...

  2. [na]tcp&udp扫描原理(nmap常用10条命令)

    nmap软件使用思路及常见用法 Nmap高级用法与典型场景 namp -sn 4种包 使用nmap -sn 查询网段中关注主机或者整个网段的IP存活状态 nmap -sn nmap针对局域网和广域网( ...

  3. Windows 虚拟桌面工具 Desktops v2.0

    https://technet.microsoft.com/en-us/sysinternals/cc817881.aspx

  4. android studio - Manifest merger failed with multiple errors, see logs

    今天编译运行的时候遇到了“Error:Execution failed for task ':test:processDebugManifest'.> Manifest merger faile ...

  5. Gartner:2018人工智能技术成熟度曲线

    https://www.secrss.com/articles/4392 人工智能被广为关注,但是一些想法恐难达到预期.本成熟度曲线将追踪AI基本趋势和未来创新,以确定人工智能技术发展的范围.状态.价 ...

  6. VS注释与取消注释快捷键

    最近在使用VS2010开发ASP.Net,突然发现想全部注释时找不到注释的快捷键,网上查了下,原来很简单,只是需要使用组合键. 注释:        先CTRL+K,然后CTRL+C 取消注释: 先C ...

  7. 每日英语:Researchers Study How Excess Fat Cells Interfere With Organ Function, Metabolism

    Why are some obese people healthy, apparently protected from the damaging effects of excess fat on t ...

  8. 每日英语:Patent Wars Erupt Again in Tech Sector

    The long-running patent war among the technology industry's heavyweights just grew a whole lot bigge ...

  9. 【web技术】html特效代码(一)

    小续 还记得当初和八哥一起制作百家成员chm电子书的时候,各种特效啊,这里收集了一些个人比较喜欢的html特效,看个人喜欢了,不喜勿喷啊 html特效代码(一) html特效代码(二) 3D相册代码 ...

  10. 阿里druid连接池监控配置

    首先在web.xml中添加如下配置: <filter> <filter-name>DruidWebStatFilter</filter-name> <filt ...