关于Unity中的光照(三)
法线贴图
次时代游戏用的比较多
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中的光照(三)的更多相关文章
- 关于Unity中的光照(七)
全局光照 GI 这里所说的反射就是,一个红色的物体,当太阳照射它的时候,它周围的物体也会变得有点红. 1:Realtime每帧都会计算光照,实时光照是不会反射的,所以它的光影显得单调;2:Baked ...
- 关于Unity中的光照(六)
反射探头 1:镜子金属等具有光滑表面的物体都会反射,而游戏中计算实时反射非常消耗CPU的资源, unity5.0新增了一个反射探头的技术,通过采样点,生成反射Cubemap,然后通过特定的着色器从Cu ...
- 关于Unity中的光照(五)
Mobile Diffuse Unity自带的一种shader,用的比较多,性能还可以.我们默认创建的unit shader基本和它一致,但是没有参与光照计算,看起来和Mobile Diffuse有区 ...
- 关于Unity中的光照(四)
渲染路径和颜色空间 1:Unity光影效果可以通过设置 渲染路径和颜色空间;2: 渲染路径: 光照到物体表面,物体着色的时候,算上光的颜色的时候有这么几种光照的着色方式,计算着色的方式 forward ...
- 关于Unity中的光照(二)
光源 1: 光照的本质:就是光的颜色和物体纹理的颜色的混合;2: 光源类型: 点光源,定向光源,聚光灯, 区域光源; 区域光的范围会在场景中用黄色的光显示出来; z轴是光的方向; 光的强度会随距离衰减 ...
- 关于Unity中的光照(一)
一.光源定义 光源,是一个普通节点加一个Light组件,创建的时候可以直接创建光源节点,也可以先创建一个空节点,再添加Light组件实例. 二.颜色形成 看到的物体颜色受两个很重要的因素的影响,一个是 ...
- 【unity shaders】:Unity中的Shader及其基本框架
shader和Material的基本关系 Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出.绘图单元可以依据这个输出来将图 ...
- Unity中的ShaderToys——将大神们写的shader搬到unity中来吧
http://lib.csdn.net/article/unity3d/38699 这篇文章翻译自国外的一篇文章(这里是原文链接),正在使用unity的你是否在shader toy上发现很多牛逼哄哄的 ...
- 浅析Unity中的Enlighten与混合光照
0x00 前言 在Unity的5.6版本之前的5.x中,主要使用了Geomerics公司的Enlighten[1]来提供实时全局照明以及烘焙全局照明,在5.6之后Unity引入了新的Lightmapp ...
随机推荐
- ASP.NET CORE中控制器内return HTML 内容自动编码问题
以前ASP.NET MVC中在控制器中直接 return Content( "<h1>测试测试</h1>"); 在前台VIEW上就显示加粗的文字了,但是在A ...
- IIS配置,权限
2. cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319 3. aspnet_regiis.exe -i Chen 19:04:42 %wind ...
- password学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)
Java 加密解密之消息摘要算法(MD5 SHA MAC) 消息摘要 消息摘要(Message Digest)又称为数字摘要(Digital Digest). 它是一个唯一相应一个消息或文本的固定长度 ...
- java: 保留两位小数4种方法
import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public c ...
- jar依赖
https://blog.csdn.net/honghailiang888/article/details/53019635
- 银联在线支付B2C UnionPay.NET
新春即将来临,首先给大家拜个早年,祝攻城狮们新年快乐.万事如意.合家欢乐.团团圆圆.幸福健康.来年更能大展宏图 实现各自的梦想! 同时预祝各大科技公司大佬们事业蒸蒸日上.公司转型突破创新.冲出突围带领 ...
- 支付宝对账单下载Java沙箱调用
package code; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; impo ...
- Hash(MD5校验工具)
本站提供md5校验工具下载.Hash(md5校验工具)是一款小巧好用的哈希计算器,Hash支持文件拖放,速度很快,可以计算文件的MD5.SHA1.CRC32 的值.在论坛上.软件发布时经常用Hash ...
- 【教程】linux下安装Google Chrome
google chrome google浏览器一直都是深受大家喜爱的一个浏览器,而且其跨平台性比较好,这对于书签同步来说是非常重要的.但是在linux下,默认的是火弧浏览器,而google ...
- package.json中配置浏览器
"browserlist":[ ">=1%", "last 2 versions" ],