【技术美术】贴图、纹理、材质的区别

学习自:https://www.zhihu.com/question/25745472

贴图:不愿意做成 3d 的就用照片替代了一下,例如要做个门,为了省事用一张照片替代。

纹理:一张贴图产生无数张效果叫做纹理,比如墙纸有很多花,其实是一朵花阵列的,拉伸之类的形成了贴墙纸的效果,这就是纹理。

材质:反光,折射,透明度,自发光,这些都属于材料的光学特性和视觉特效被称为材质。比如贴图是不锈钢的,但是需要实时发反光线光是用贴图是解决不了的,就需要不锈钢材质才可以解决。

贴图是一张照片,用于替代模型。纹理是重复,阵列,缩放的贴图。材质是视觉层面的表现力。


1、纹理即“纹路”,每个物体表面上不同的样子,譬如说木头的木纹状。

2、贴图是图,最简单的形式是 ps 之类的软件做出来的一张图,这些图在 3D 中用来贴到物体的表面,用来表现物体的“纹理”。

3、材质主要是用来表现物体对光的交互(反射、折射等)性质的。譬如金属对光的反射和毛毯对光的反射性质完全不一样,那么对 3D 程序来说,这样的差别就通过材质这个属性来计算出不同的颜色。

上面是最简单的说法。对于 2 来说,在实际的 3D 程序中,贴图经过历史的演化,出现了很多的其他用作不同场合的种类,譬如有凹凸贴图用作计算物体表面的凹凸感,这个就不是严格意义上的纹理作用。对于3来说,程序员往往让“材质”这个东西包含贴图在内,也就是在程序里,材质就是(a)各种贴图和(b)物体对光的交互性质的集合。


整个 CG 领域中这三个概念都是差不多的,在一般的实践中,大致上的层级关系是:

材质 Material 包含贴图 Map,贴图包含纹理 Texture。

纹理是最基本的数据输入单位,游戏领域基本上都用的是位图。此外还有程序化生成的纹理 Procedural Texture。

贴图的英语 Map 其实包含了另一层含义就是“映射”。其功能就是把纹理通过 UV 坐标映射到 3D 物体表面。贴图包含了除了纹理以外其他很多信息,比方说 UV 坐标、贴图输入输出控制等等。

材质是一个数据集,主要功能就是给渲染器提供数据和光照算法。贴图就是其中数据的一部分,根据用途不同,贴图也会被分成不同的类型,比方说 Diffuse Map,Specular Map,Normal Map 和 Gloss Map 等等。另外一个重要部分就是光照模型 Shader ,用以实现不同的渲染效果。


贴图英文叫做 map,最有名的是 lighting map,即光照贴图,光照贴图是生成或者绘制出来,用于物体表面模拟光照效果的。

而纹理英文 texture,包括手绘,以及照片加工,过程生成三种方式产生, 并且在 opengl 术语中,显存中保存的图像数据,也称为纹理,显存中有多种纹理,包括深度 texture,颜色 texture, 法向量 texture。

而材质,英文名 material,在 ogre 中,会写一种材质文件,用于描述渲染一个对象采用哪些技术, 如何使用纹理等信息, 而在 3dmax,maya 等建模软件中,材质球也表示类似的意思,即描述如何渲染一个对象。

通过分析这些词的使用语境,来区分这些词,首先贴图和纹理的区别,例如分析常见的三种贴图 法向量贴图 normal map,反射贴图 reflection map,环境贴图等, 就指这些技术使用的纹理,以及对应的纹理坐标集。 因为 cube 环境贴图需要六张纹理,以及需要生成对应的纹理坐标。

而材质概念则包含这些贴图技术,以及shader渲染程序,因此属于更高的层次。


贴图是现象,纹理是特征,材质是性质。

比如说木头,贴图只有看着像木头,摸上去则是平面;纹理是看上去摸上去都像木头,但不一定真是木头;材质是不仅看和摸都像,还具有木头纤维各向异性之类的材料特征。


Unity 渲染主要是通过材质 (Materials),着色器(Shaders) 和纹理 (Textures) 来做的。贴图和纹理依附于材质存在,着色器使用一定算法确定纹理和贴图等信息对 Mesh 的渲染方式。贴图就是纹理,这两个词其实是指的同一个东西,属于翻译导致的歧义,texture 被翻译成了纹理和贴图。

  • 材质是对如何渲染一个对象的表面的定义,对包括用到哪些纹理和贴片信息,颜色色彩和深浅等等

  • 着色器是对于要渲染的每个像素点的着色的计算和算法,主要由一些小脚本组成

  • 纹理是一些位图


再啰嗦3句:
1 贴图 ~ 纹理 ~ Texture, 就是美术提供的 png 图片,我这里的 2D 游戏,用的就是这个,行内简称“换皮”

2 材质 ~ Material ~ shader,一般 Unity3D 软件自动生成,例如 TK2D 默认提供了很多,几乎不用考虑。

3 图集 ~ Atalas:独立一个 Texture (1个png) 在 CPU 下,会多 1 个 Draw Call,一般会把 n 个 png,打包为一个 png(例如 1024*1024),然后同步生成 UV 信息使用。

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值