【Unity基础】2.网格材质贴图与资源打包
大家好,我是Lampard~~
欢迎来到Unity基础系列博客,所学知识来自B站阿发老师~感谢
(一)网格材质纹理
第一次接触3D物体的话,会觉得好神奇啊,这个物体究竟是由什么组成的呢?其实3D物体基本就是由网格,材质和纹理3个部分构成的
(1)网格
那什么是网格?首先需要知道我们看到的3D物体,实际上是由一个个小的三角形组成的,我们可以在Unity编译器中,在Scene页签下方选择一种Shaded Wireframe图形线框模式,就可以很清晰的看到了,三角形的数量越多,图形越精致同时GPU的渲染压力越大,像一个球就需要多个三角形来组成,而一个立方体只需要12个三角就可以了
无论是球还是正方体,都是由一个个小三角形组成。那问题很多的同学可能会问,为什么是三角形呢?我立刻ChatGpt一下:
因为三角形可以在几何上更加精确地描述物体的形状和表面细节。此外,三角形也更容易处理和渲染,因为它们具有确定的顶点和法线。虽然四边形和其他多边形也可以用于建模,但在使用现代渲染技术时,三角形仍然是最常见的面形式
额,绕远了...好所以网格是什么呢?其实就是描述这些一个个三角形,顶点数据,纹理坐标,法线信息等等的一些数据来描述一个物体的表面。之前我们学openGL的时候有接触到【openGL2021版】obj格式文件
(2)材质
好了什么是材质呢?
物体的物质的性质、特征或组成。材质可以是金属、塑料、木材、玻璃、陶瓷、纺织品等等。正确选择材质可以决定物体的质量、外观、特性和使用寿命。材质也可以用于表示3D模型的外观和质感。在计算机图形学中,材质通常用纹理、颜色、反射率、粗糙度、透明度等参数来描述
简单来说,足球和保龄球长得不一样吧?虽然都是个球,但是我们要怎么表现它们的不同,那就是材质的作用
在Unity中,我们可以给物体新建一个材质挂上去:首先在Assert目录下右键选择create创建,然后在目录下选中Material材质
材质有很多属性,我们先对其Albedo反照率(颜色),进行设置选一个喜欢的颜色就可以。下面我就创造了一个红色和一个蓝色材质
那怎么让我们场景中的物体使用这个材质呢?很简单啊,直接拖过去就行:
哇,一下就变色了,是不是很神奇。设置完之后我们可以看到,物体右侧的组件中,Mesh Renderer 网格渲染中,就多了一个我们刚才创建的材质信息
这里有一个小对勾,如果我们取消勾选,那么这个物体就不会被渲染出来
总而言之,材质的作用,就是使物体看起来更真实,记录如像金属一样的光泽,像玻璃一样的反射,表面带有什么花纹,是否有凹槽突起等信息
(3)纹理贴图
那纹理又是啥呢?因为我们现实生活中,物体很少会遇到纯色的。肯定每一个物体,甚至物体的每一个地方都有区别,纹理也是材质的一个属性
那怎么实现这个效果呢?就需要美术同学出一张纹理图,来展示这个物体的长相。我们刚才说到网格中会存在纹理坐标,就是为了描述每个小三角形对应纹理的那一块区域用的
为了展示我去百度找了一个地球的纹理更直观些,看上去就像摊开的地球对吧~
Albedo反照率贴图
那如果我想把这个纹理挂到unity上面的物体中需要怎么做呢?我们只需要把纹理资源拖到Assert目录下
然后在材质设置反照率的左侧有一个小按钮,点开就可以选中我们的纹理,给物体添加皮肤啦~
Normal Map 法线贴图
比如我们要创建一个铁锈状的物体,首先需要给物体贴上albedo材质皮肤
把这个材质挂在cube上,我们可以看到这个矩形就有了一些锈迹,但感觉还是差了一些东西
差什么呢?没错就是那种凹凸不平的感觉,而我们的法线贴图就是干这个活的。我们给材质的normalMap属性附上法线贴图,效果明显就真是了很多
Metallic和Specular
我们可以看到编辑器中还有Metallic和Specular两个属性
Metallic代表的是物体的金属度,属性值越靠近0则代表越不像金属,越靠近1则代表越像金属
Specular是光滑度,0越光滑,1越粗糙,大家可以拖动进度条试一下~
(二)导入和导出资源包
(1)资源目录
Unity的资源(模型,场景,脚本)等都保存在Assert目录下,我们随便选中一个资源,右键Show In Explore就可以在Window文件夹中看到我们的资源目录
燃鹅,我们除了看到在编辑器创建的文件之外还看了许多奇奇怪怪的.meta文件,这都是啥?
遇事不决问GPT:
在Unity中,每个资源文件(如场景、材质、纹理、声音等)都会有一个对应的meta文件。这个meta文件包含了资源的相关信息,如名称、UUID、依赖项、标签、修改时间等。
meta文件的主要作用是为了让Unity在处理资源时更加高效和可靠。具体来说,meta文件可以:
1. 确认资源的唯一性:由于Unity中允许多个文件使用相同的名称,meta文件的唯一UUID可以确保每个资源都具有唯一的身份信息。
2. 记录资源的依赖关系:meta文件可以记录资源之间的依赖关系,当一个资源被修改时,Unity可以自动更新依赖该资源的其他资源。
3. 存储资源的编辑状态:meta文件可以记录资源的编辑状态,包括最后一次修改的时间、作者、标签、注释等,方便开发者进行版本管理和协作开发。
简单来说就是一个资源文件的Log,由unity引擎自身管理,需要注意的是,如果删除了meta文件,Unity会重新生成一个新的meta文件,但是这个新文件的UUID可能与之前的不同,导致资源的引用出现问题。因此,一般不建议手动删除meta文件
(2)导出资源
OK如果我们在一个场景辛辛苦苦编译好的内容,想分享给别人需要如何处理呢?很简单只需要右键Export package就可以了
比如我想把整个Assert的内容分享出去,那就右键Assert文件夹,然后导出
导出后可以看到一个unitypackage后缀的文件,这就是我们资源的所有信息
(3)导入资源
嗯...导入这个资源包的方式大家不妨猜一下。没错!就是拖进去哈哈哈哈哈哈哈~方便展示我们先创建一个新的空项目,然后再拖进去就可以看到我们的资源啦:
好啦今天就到这里,感谢阅读!!!
点赞,关注!!!