优秀的编程知识分享平台

网站首页 > 技术文章 正文

Shader知识普及之:材质贴图纹理的区别

nanyue 2024-12-04 14:26:47 技术文章 10 ℃

在3D世界中,我们经常会听到诸如材质、贴图、纹理等名词,给人感觉都是用于呈现物体表面的外观效果又好像三者之间存在着某些关联,本文我们一起来了解一下:


材质

材质是一个数据集合,其主要功能是提供数据和光照算法给渲染器,根据用途的不同可以将贴图分成多种类型:Diffuse Map,Specular Map,Normal Map 和 Gloss Map 等,材质可以表现物体与光的反射交互性质、折射交互性质,譬如铁对光的反射和玻璃对光的反射性质肯定就有所差别,这样的材质特性差异对于程序员来说就可以用来呈现不同的表现效果。


贴图

贴图顾名思义是图,具体一点就是贴到3D物体表面的图,可以呈现出物体表面的纹理,也可以说纹理是贴图的子集,通过Photoshop软件,我们便可以做出我们想要的贴图,这也是最简单的获取贴图的形式。


纹理

纹理即“纹路”,每个物体表面上都或多或少存在差异,呈现不同样子的主要原因也就是纹理的差别,譬如说木头的木纹,动物身上的花纹等,都是纹理的不同造成的视觉感官差异。


本篇我们借用Unity来介绍一下这三者的区别,也让大家有一个更具象的认识。


因为材质附着在模型上,我们先在Unity新建一个球体预支模型。

我们在球体的inspector视图发现材质被锁定了,显示的是默认材质。

这时我们新建一个新的材质球放到球体上,就可以进行修改了,我们取名为material。


此时我们发现材质参数信息灰色锁定修改状态已经取消,我们可以试着修改其材质的颜色。

此时材质球颜色变更为浅绿色。


那我们想改变球的贴图我们需要怎么做呢?


还是找到我们的材质参数面板,将我们要改变的贴图拖入到Albedo参数框内。


此时球体的贴图信息已经绑定完毕,模型表面也发生了直观的变化。


我们知道贴图可以根据UV坐标信息映射到三维物体上。这样我们就可以理解纹理信息就是贴图除去UV位置属性后的数据信息,现在我们把对位置信息要求没有那么重要的木质纹理和玻璃纹理分别赋予两个相同的球体,比对一下不同的纹理效果。


我们发现相同环境下不同纹理的模型效果展示区别还是挺大的。


总结完材质贴图纹理三者的区别,我们试想一下shader与这三者之间的关联,材质其实是包括shader的:shader通过可编程的程序片段对物体呈现的颜色信息和形态信息进行效果干预,最终和物体自身的贴图等信息结合形成了最终我们看到的视觉效果。好了相信通过本篇的学习你已经对这些较为相似的概念有了一定的认识了,我们下期再见~

最近发表
标签列表