在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器
材质贴图(Texture Mapping):是在物体着色方面最引人注目、也是最拟真的方法,同时也多为游戏软件所采用。一张平面图像(可以是数字化图像、小图标或点阵位图)会被贴到多边形上,通常把它想象成3D物件的壁纸,亦即将一张2D图纸"糊"到一个3D表面。如在赛车游戏的开发上,可能也会用这项技术来绘制轮胎胎面及车体涂装。
1、什么是材质纹理?
材质的真相
材质简单的说就是物体看起来的质地。材质可以看成是材料和质感的结合。在渲染程序中,它是表面各可视属性的结合,这些可视属性是指表面的色彩、纹理、光滑度、透明度、反射率、折射率、发光度等。正是有了这些属性,才能让我们识别三维中的模型是什么做成的,也正是有了这些属性,我们计算机三维的虚拟世界才会和真实世界一样缤纷多彩。我们必须仔细分析产生不同材质的原因,才能让我们更好的把握质感。材质的真相仍然是光,离开光材质是无法体现的。举例来说,借助夜晚微弱的天空光,我们往往很难分辨物体的材质,而在正常的照明条件下,则很容易分辨。另外,在彩色光源的照射下,我们也很难分辨物体表面的颜色,在白色光源的照射下则很容易。这种情况表明了物体的材质与光的微妙关系。下面,我们将具体分析两者间的相互作用。
色彩(包括纹理)
色彩是光的一种特性,我们通常看到的色彩是光作用于眼睛的结果。但光线照射到物体上的时候,物体会吸收一些光色,同时也会漫反射一些光色,这些漫反射出来的光色到达我们的的眼睛之后,就决定物体看起来是什么颜色,这种颜色在绘画中称为“固有色”。这些被漫反射出来的光色除了会影响我们的视觉之外,还会影响它周围的物体,这就是光能传递。当然,影响的范围不会像我们的视觉范围那么大,它要遵循光能衰减的原理。另外,有很多资料把Radiosity翻译成“热辐射”,其实这也蛮贴切的,因为物体在反射光色的时候,光色就是以辐射的形式发散出去的,所以,它周围的物体才会出现“染色”现象。
光滑与反射
一个物体是否有光滑的表面,往往不需要用手去触摸,视觉就会告诉我们结果。因为光滑的物体,总会出现明显的高光,比如玻璃、瓷器、金属………而没有明显高光的物体,通常都是比较粗糙的,比如砖头、瓦片、泥土………这种差异在自然界无处不在,但它的产生依然是光线的反射作用,但和上面“固有色”的漫反射方式不同,光滑的物体有一种类似“镜子”的效果,在物体的表面还没有光滑到可以镜像反射出周围的物体的时候,它对光源的位置和颜色是非常敏感的。所以,光滑的物体表面只“镜射”出光源,这就是物体表面的高光区,它的颜色是由照射它的光源颜色决定的(金属除外),随着物体表面光滑度的提高,对光源的反射会越来越清晰,这就是在三维材质编辑中,越是光滑的物体高光范围越小,强度越高。当高光的清晰程度已经接近光源本身后,物体表面通常就要呈现出另一种面貌了,这就是Reflection材质产生的原因,也是古人磨铜为镜的原理。但必须注意的是,不是任何材质都可以在不断的“磨练”中提高自己的光滑程度。比如我们很清楚瓦片是不会磨成镜的,原因是瓦片是很粗糙的,这个粗糙不单指它的外观,也指它内部的微观结构。瓦片质地粗糙里面充满了气孔,无论怎样磨它,也只能使它的表面看起来整齐,而不能填补这些气孔,所以无法成镜。我们在编辑材质的时候,一定不能忽视材质光滑度的上限,有很多初学者作品中的物体看起来都像是塑料做的就是这个原因。
透明与折射
自然界的大多数物体通常会遮挡光线,当光线可以自由的穿过物体时,这个物体肯定就是透明的。这里所指的“穿过”,不单指光源的光线穿过透明物体,还指透明物体背后的物体反射出来的光线也要再次穿过透明物体,这样使我们可以看见透明物体背后的东西。由于透明物体的密度不同,光线射入后会发生偏转现象,这就是折射。比如插进水里的筷子,看起来就是弯的。不同的透明物质其折射率也不一样,即使同一种透明的物质,温度的不同也会影响其折射率,比如当我们穿过火焰上方的热空气观察对面的景象,会发现有明显的扭曲现象。这就是因为温度改变了空气的密度,不同的密度产生了不同的折射率。正确的使用折射率是真实再现透明物体的重要手段。
2、材质贴图的作用?
材质贴图在计算机图形学中是把存储在内存里的位图包裹到3D渲染物体的表面。纹理给物体提供了丰富的细节,用简单的方式模拟出了复杂的外观。一个图像(纹理)被贴(映射)到场景中的一个简单形体上,就像印花贴到一个平面上一样。这大大减少了在场景中制作形体和纹理的计算量。例如,可以创建一个球并把脸的纹理贴上去,这样就不用处理鼻子和眼睛的形状了。
随着图形卡功能越来越强,理论上材质贴图变得越来越不必要,而三维绘制(渲染)成了常用的工具。但事实上,最近的趋势是使用更大和更多的纹理图像,再加上把多幅纹理组合到同个物体的不同角度的复杂技术。(这在实时图形学中更为重要,因为同时显示的纹理个数是可用图形内存容量的函数。)
最后显示在屏幕上的像素是从纹理的texel中计算的,这由纹理滤波决定。最快的方法是每个像素使用一个texel,线性插值也很常用,还有更复杂的办法,参看MIPMAP。另外,纹理也可用来决定模型表面的颜色,甚至双向反射分布函数(BRDF),从而和光照模型等方法结合起来。
3、有哪些材质贴图?
- 贴图(Texture):贴图是指将图像映射到模型表面以实现细节和纹理效果的技术。常见的贴图类型包括颜色贴图、法线贴图、高光贴图、环境贴图等。颜色贴图用于定义模型表面的基本颜色。法线贴图用于模拟表面的细节和凹凸感。高光贴图用于定义模型表面的镜面高光反射部分,增强光照效果。环境贴图用于模拟环境光照和反射。
- 自发光贴图(Emissive Texture):自发光贴图定义了模型表面自身发光的部分。通过给模型的某些区域赋予自发光贴图,可以使其在渲染时呈现出发光的效果,例如荧光材质或发光纹理效果。
- 透明贴图(Opacity Texture):透明贴图用于控制模型表面的透明度。通过透明贴图,可以实现模型局部透明或半透明的效果,如玻璃、水面或植物的叶子等。
- 凹凸贴图(Bump/Normal Texture):凹凸贴图通过改变模型表面正常的法线方向来模拟凹凸细节。该贴图可以赋予表面更多的细节和深度感,但不会改变模型的几何形状。
- 环境光遮挡贴图(Ambient Occlusion Texture):环境光遮挡贴图用于模拟环境中光线受阻遮挡的效果。它可以增强模型的凹凸感和阴影效果,使其看起来更真实。
- 位移贴图(Displacement Map):位移贴图通过改变模型顶点的位置来模拟细节和几何形状的改变。与凹凸贴图不同,位移贴图可以真实地改变模型的几何形状。
- 粗糙贴图(Roughness Texture):粗糙贴图用于控制模型表面的光滑度。通过调整粗糙贴图的值,可以实现模型表面的光滑或粗糙的外观。
- 金属贴图(Metallic Texture):金属贴图用于定义模型表面的金属属性。通过调整金属贴图的值,可以指定哪些部分是金属的,哪些是非金属的。
- 光照贴图(Lighting Texture):光照贴图用于预定义模型的光照效果。通过给模型应用光照贴图,可以在渲染时模拟出各种光照条件下的外观效果。
- 其他。
4、如何设置3D模型材质贴图?
很多时候,创建好模型之后,我们都希望给模型应用一些纹理,从而提高模型的真实效果,这些在GLTF在线纹理贴图工具中可轻松实现。但要注意,GLTF在线纹理贴图工具会导入所有的模型装配和组件,保留模型结构,如果你想面向相同的部件,实现不同的纹理/外观,只需在3D建模软件中给那些面雕刻不同的颜色。
左侧是模型的mesh网格
GLTF在线纹理贴图工具 是一款基于web的在线纹理贴图工具,使用者根据模型的mesh添加对应的纹理贴图就可以很轻松的完成模型的纹理编辑。
如何设置Mesh纹理?
使用者先选择左侧面板的mesh网格,右侧就会展示对应的纹理属性,如图:
然后根据需设置点击【纹理】属性后面的白色按钮,弹出本地文件选择框,选择本地纹理贴图文件,点击确定就可以将纹理贴图添加到对应的Mesh上。
以下是使用GLTF在线纹理贴图工具 设置纹理贴图的三个实例:
地形纹理交通信号灯雪糕筒
GLTF 编辑器 是一个功能强大、易于使用的在线3D模型编辑和查看工具,它支持多种格式的3D模型导入并将模型导出为GLB格式,除了可以对3D模型进行基本属性的修改之外,还支持对模型原点重置以及模型材质纹理修改。对于3D开发者和设计师来说,GLTF 编辑器 是一个非常有用的工具,可以帮助他们更方便地处理3D模型数据。