Unity学习笔记&010(Material 材质)

笔记来源:史上最全Unity3D教程 2-2

Material 材质

1.材质:物体的质地,指色彩、文理、光滑度、透明度、反射率、折射率、发光度等。实际就是Shader的实例。
2.Shader 着色器:专门用来渲染3D图形的技术,可以使纹理以某种方式展现。实际就是一段嵌入到渲染管线中的程序,可以控制GPU运算图像效果的算法。
3.Texture 纹理:附加到物体表面的贴图。
在这里插入图片描述

颜色

1.让我们创建一个黄色材质。材质是属于游戏资源的,所以我们因该在Project面板创建。我们右键,选择【Create】➜【Material】。
在这里插入图片描述

2.我们可以重命名,也可以保持默认。
在这里插入图片描述
3.现在我们看到Inspector面板,我们可以看到一个叫Albedo(反射率)的属性,旁边有一个白框,是用来指定该材质的色彩的。前面的位置是放纹理(贴图)的。
在这里插入图片描述
4.我们点击白框,就可以在弹出来的对话框里调整颜色,可以在调色板中调整,也可以直接敲数值(R:红色 G:绿色 B:蓝色 A:透明度)。
在这里插入图片描述
5.调好颜色之后,关闭之后,材质就成功被修改了。
在这里插入图片描述
在这里插入图片描述
6.那我们如何把这个材质给到游戏对象呢?
在这里插入图片描述
7.这时有人说:“拖。”没错,确实要拖,不过要拖哪呢?
在这里插入图片描述
8.我们可以打开游戏对象的Meshh Renderer组件➜Materisls属性,找到里面的Element 0。
在这里插入图片描述
9.把刚刚创建的材质往Element 0右边的框一拖,材质就成功更改了。
在这里插入图片描述

在这里插入图片描述10.我们也可以把材质直接往Hierarchy面板里的游戏对象拖。拖是可以,但我们一定要记住,材质是给到游戏对象的Mesh Renderer组件的Materials属性的Element 0。为什么我们不能直接拖给空物体呢?因为它没有Mesh Renderer。如果它有的话,也可以。所以一定要记住,材质是给到游戏对象的Mesh Renderer组件。因为物体是一个容器,这个容器它不是装某一个游戏资源的。这个容器是装组件的。而Mesh Renderer(网格渲染器)组件,它需要一个材质,所以我们要把材质给到Mesh Renderer组件。
在这里插入图片描述

颜色(续)

1.有人可能觉得,子弹的颜色感觉有些难看,没关系我们可以更改。
在这里插入图片描述
2.我们可以打开材质,在调色板上进行调整。
在这里插入图片描述
在这里插入图片描述
3.我们在游戏对象的Inspector面板也可以更改。
在这里插入图片描述
在这里插入图片描述

纹理

1.让我们把图片贴到平面“身上”。首先,我们找到几张图片或有图片的文件夹(Unity3D支持 PSD,、TIFF、JPG、TGA、PNG、GIF、BMP、IFF、PICT等大部分图片格式,推荐png格式,体积小、支持透明通道),然后往Project一拖。
在这里插入图片描述
2.导入成功后,我们在Hierarchy面板右键,【3D Object】➜【Plane】,创建一个平面。在这里插入图片描述
3.通过修改数值或拖拽,让它立起来。
在这里插入图片描述
4.把图片往Hierarchy面板上的平面拖,就OK了。
在这里插入图片描述
在这里插入图片描述
5.我们再进行调整,就OK了
在这里插入图片描述
6.为什么我们一拖就可以这样了呢?
在这里插入图片描述
7.物体就是一个容器,它装组件。而当前这个颜色变了,那是因为它的材质变了。
在这里插入图片描述
8.我们发现Project面板里多了一个和图片同名的材质。
在这里插入图片描述
9.那是因为我们把这张图片拽到了这个物体中,Untiy3D编辑器就自动生成一个材质文件,就是为了满足你的需求,帮你省略繁琐的步骤。我们可以把图片往物体拽,但是Untiy3D编辑器会自动帮你生成材质,本质上还是把把材质给到了物体的Mesh Renderer组件。
在这里插入图片描述
10.给到Mesh Renderer组件,也就给到了材质。给到材质的哪了?
在这里插入图片描述
11.在Allbedo,之前说了纹理在这个位置。
在这里插入图片描述
12.如果我们把其它图片往Albedo前面的框中一拽,纹理就变了。所以这个纹理在Allbedo属性的前面设置,颜色在后面设置。
在这里插入图片描述

在这里插入图片描述

其它

1.前面我们讲了,颜色和纹理,那光滑度、透明度、反射率等等,这些在哪设置?
在这里插入图片描述
2.在Allbedo属性的下面。
在这里插入图片描述
3.我们还必须知道一个东西······
在这里插入图片描述
4.那就是Main Maps第一项Rendering Mode(渲染模式)。
在这里插入图片描述
5.渲染模式一共有4种。默认第一种,Opaque(不透明的);第二种,Cutout(切断);第三种,Fade(褪色);第四种(透明的)。
在这里插入图片描述
6.我们为了更好的进行了解,让我们进行实际操作。我们选中平面,然后按下键盘上的【Ctrl】+【D】,复制粘贴一个平面,然后移动。
在这里插入图片描述

7.我这里有一张树的图片(一定要选带有透明通道的png图片),我把这张图片往Hierarchy面板上的游戏对象的拽,这棵树就过来了。
在这里插入图片描述

8但我们觉得有点难看,然后我们选择渲染模式的第二种Cutout(切断)。这个功能会把图片的透明通道切掉,也就是说,有这么一张图片,图片里面有设置的透明通道;如果我们选择Cutout,那透明通道就不显示,只显示透明的部分。
在这里插入图片描述
9.我们在Hierarchy面板右键,【3D Object】➜【Cube】,然后再把Cube压扁。
在这里插入图片描述
在这里插入图片描述

10.然后再把Cube压扁。我说这是玻璃,你信吗?
在这里插入图片描述
11.是啊,这哪是玻璃呀?!这不是睁着眼说瞎话吗?玻璃肯定得是透明的嘛!
在这里插入图片描述
12.那怎么让它透明呢?那我们就得去改材质的渲染模式,但Unity3D编辑器默认的材质,都不让我们修改的。
在这里插入图片描述
13.所以我们在Project面板,右键【Create】➜【Material】创建一个材质。

在这里插入图片描述
14.然后我们把材质往物体一拽,这样我当前这个材质的Mesh Renderer组件使用的就是我们新创建的材质。然后找到它的Rendering Mode,选择最后的Transparent(透明的),效果就出来了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
15.我们也可以打开调色板,通过调整它的数值A,来改变透明度。
在这里插入图片描述
16.这时有人问:“我们不设置‘Transparent’,就直接设置亮度,行吗?”
在这里插入图片描述
17.不行,根本就没反应。
在这里插入图片描述
在这里插入图片描述
18.所以想要透明,渲染模式必须设置为Transparent;只有渲染模式为Transparent,然后设置A,才会有反应。
在这里插入图片描述
19.这时又有同学说:“虽然这样确实像玻璃,但也不是完全看不见呀!我想让它完全透明,有什么办法吗?”
在这里插入图片描述
20.我们选择“Fade”(褪色),然后在调色板里将A调为0,我们就完全看不见正方体了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Rendering Mode

1.渲染模式
——Opaque 不透明的,默认选项。
——Transparent 透明的,用于半透明和全透明物体,如玻璃。
——Cutot 镂空,用于完全透明或完全不透明物体,如栅栏。
——Fade 渐变,用于需要淡入淡出的物体。

Main Maps

Albedo 基础贴图:决定物体表面纹理与颜色。
Metallic 金属:使用金属特性模拟外观。
Specular 镜面反射:使用镜面特性模拟外观。
Smoothness 光滑度:设置物体表面光滑程度。
Normal Map 法线贴图:描述物体表面凹凸程度。
Emission 自发光:控制物体表面自发光颜色和贴图。
——None 不影响环境
——Realtime 实时动态改变
——Backed 烘焙生效
Tiling 平铺:沿着不同的轴,纹理平铺个数。
Offset 偏移:滑动纹理。

1.我们可以自行设置,比如我们设置Metallic(金属),我们找一个子弹。
在这里插入图片描述
2.你觉得这像子弹吗?肯定不想,因为它都不像金属。那怎么让它像金属呢(⊙o⊙)?我们找到材质里的Metallic,设置值。
在这里插入图片描述
3.比如说,我们把值设置为1,就有点像子弹了。
在这里插入图片描述
在这里插入图片描述

小结

1.通过学习,我们知道了材质通常包含色彩、纹理、光滑度等等,也知道了如何设置。但是材质的本质,我们必须要知道。材质的本质是什么?Shader(着色器)的实例。Shader是什么?实例是什么?
在这里插入图片描述
2.Shader 着色器:专门用来渲染3D图形的技术,可以使纹理以某种方式展现。实际就是一段嵌入到渲染管线中的程序,可以控制GPU运算图像效果的算法。Shader本质上就是一段程序,这段程序控制GPU(图像处理器)显示图像。Shader是用专门的cg语言编写。
在这里插入图片描述
3.Material实质上就是Shader。这句话怎么理解呢?我们拿子弹的材质举例子,我们可以看到Inspector面板上有Shade这个选项。
在这里插入图片描述
4.Material它可以选择你使用的Shader。默认的是第13项——Standard(标准),如果没有什么特殊要求,就用默认的。
在这里插入图片描述
5.切换Shader,属性界面会不同。比如我们选择Diffuse属性,然后材质里面的属性就变了。原来那么多属性设置,现在变了,因为Shader变了。
在这里插入图片描述
在这里插入图片描述
6.我们还可以再变。所以材质能有什么属性设置,全都依赖于选择的Shader。我们看到的这些Shader都是Unity3自带的,在实际开发的时候,还会有很多Shader都是自己写的。这些Shader决定了材质的属性值。所以材质的本质,都是选择的Shader。
在这里插入图片描述
7.比如说,刚才因为我们选择了标准的Shader,我们才会有Metallic(金属)这个属性值;因为这个标准的Shader具有这个属性值,我们才能设置它。所以这一切都来源于Shader,这是一段程序。
在这里插入图片描述

纹理、着色器与材质的关系

1.那么材质、Shader、颜色和贴图,这几者之间是怎么一个关系?让我们一起来看一下。
在这里插入图片描述
2.一切最根本的就是Shader,它是一段代码。它决定了Material具备哪些属性;Material负责提供参数;Texture(贴图)和Color(颜色)是其中的属性。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zhangtingyang/article/details/107693524