网站首页 > 技术文章 正文
在3D世界中,我们经常会听到诸如材质、贴图、纹理等名词,给人感觉都是用于呈现物体表面的外观效果又好像三者之间存在着某些关联,本文我们一起来了解一下:
材质
材质是一个数据集合,其主要功能是提供数据和光照算法给渲染器,根据用途的不同可以将贴图分成多种类型:Diffuse Map,Specular Map,Normal Map 和 Gloss Map 等,材质可以表现物体与光的反射交互性质、折射交互性质,譬如铁对光的反射和玻璃对光的反射性质肯定就有所差别,这样的材质特性差异对于程序员来说就可以用来呈现不同的表现效果。
贴图
贴图顾名思义是图,具体一点就是贴到3D物体表面的图,可以呈现出物体表面的纹理,也可以说纹理是贴图的子集,通过Photoshop软件,我们便可以做出我们想要的贴图,这也是最简单的获取贴图的形式。
纹理
纹理即“纹路”,每个物体表面上都或多或少存在差异,呈现不同样子的主要原因也就是纹理的差别,譬如说木头的木纹,动物身上的花纹等,都是纹理的不同造成的视觉感官差异。
本篇我们借用Unity来介绍一下这三者的区别,也让大家有一个更具象的认识。
因为材质附着在模型上,我们先在Unity新建一个球体预支模型。
我们在球体的inspector视图发现材质被锁定了,显示的是默认材质。
这时我们新建一个新的材质球放到球体上,就可以进行修改了,我们取名为material。
此时我们发现材质参数信息灰色锁定修改状态已经取消,我们可以试着修改其材质的颜色。
此时材质球颜色变更为浅绿色。
那我们想改变球的贴图我们需要怎么做呢?
还是找到我们的材质参数面板,将我们要改变的贴图拖入到Albedo参数框内。
此时球体的贴图信息已经绑定完毕,模型表面也发生了直观的变化。
我们知道贴图可以根据UV坐标信息映射到三维物体上。这样我们就可以理解纹理信息就是贴图除去UV位置属性后的数据信息,现在我们把对位置信息要求没有那么重要的木质纹理和玻璃纹理分别赋予两个相同的球体,比对一下不同的纹理效果。
我们发现相同环境下不同纹理的模型效果展示区别还是挺大的。
总结完材质贴图纹理三者的区别,我们试想一下shader与这三者之间的关联,材质其实是包括shader的:shader通过可编程的程序片段对物体呈现的颜色信息和形态信息进行效果干预,最终和物体自身的贴图等信息结合形成了最终我们看到的视觉效果。好了相信通过本篇的学习你已经对这些较为相似的概念有了一定的认识了,我们下期再见~
- 上一篇: Unity3D游戏开发之摄影机、材质数量的控制
- 下一篇: 3D模型如何合并材质?
猜你喜欢
- 2024-12-04 Unity实例教程:创建渐入的列车
- 2024-12-04 使用Unity为数字人添加逼真的毛发细节
- 2024-12-04 大咖说|Shader知识普及之:图解水波纹效果的实现
- 2024-12-04 纹理烘焙原理及实现【Unity】
- 2024-12-04 unity必备的十大插件(1)
- 2024-12-04 3D游戏模型该如何制作?
- 2024-12-04 Unity学习笔记 - Assets, Objects and Serialization
- 2024-12-04 Unity Shaders学习笔记--SurfaceShader(九)Cubemap
- 2024-12-04 研发实战:用Unity、3D Max、V-Ray等工具为Quest开发高质量图像
- 2024-12-04 Unity基础 | 70分钟带你轻松入门
- 1509℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 534℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 496℃MySQL service启动脚本浅析(r12笔记第59天)
- 475℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 473℃启用MySQL查询缓存(mysql8.0查询缓存)
- 453℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 432℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 430℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)