在Three.js中,贴图(textures)用于模拟材料表面的细节,增强3D模型的真实感。不同类型的贴图服务于不同的目的,下面是一些常见的贴图类型及其用途:
1. 基础贴图(Diffuse Map 或 Base Color Map)
这是最常见的贴图类型,用于定义模型的基本颜色和图案。它通常是一张图像,当贴到模型上时,会赋予模型表面以细节和色彩。
2. 高光贴图(Specular Map)
高光贴图用于控制模型表面上的高光反射强度。高光区域在光照下会显得更亮,这种贴图可以让你精细地控制哪些区域应该反射更多的光线,从而模拟金属或其他光泽表面的特性。
3. 透明贴图(Alpha Map 或 Transparency Map)
透明贴图用于定义模型表面的透明度。它通常是一张灰度图像,其中白色代表完全不透明,黑色代表完全透明,灰色则表示不同程度的半透明。这在制作带有透明或半透明部分的模型时非常有用,比如树叶、玻璃或水。
4. 法线贴图(Normal Map)
法线贴图用于模拟高细节的表面结构,而不增加模型的几何复杂度。它通过修改表面法线的方向,让光源照射下的阴影和高光看起来更加复杂和真实,从而模拟出凹凸不平的表面效果。
5. 凹凸贴图(Bump Map)
凹凸贴图类似于法线贴图,但它使用灰度图像来表示表面的高度变化。白色区域看起来会凸起,黑色区域则会凹陷。不过,凹凸贴图不如法线贴图精确,因为它只在垂直方向上改变表面法线。
6. 位移贴图(Displacement Map)
位移贴图是最具真实感的贴图类型之一,它实际上会改变模型表面的几何形状,根据贴图中的数据来移动顶点位置,从而创建真实的物理凹凸效果。这比法线贴图和凹凸贴图更消耗性能,但效果也更逼真。
7. 金属度贴图(Metalness Map)
金属度贴图用于控制模型表面的金属质感。白色区域会呈现金属外观,而黑色区域则呈现非金属外观。
8. 粗糙度贴图(Roughness Map)
粗糙度贴图控制表面的光滑程度。光滑的表面会有更锐利的高光,而粗糙的表面则会有更散射的高光。
9. 发射贴图(Emissive Map)
发射贴图用于模拟模型表面发出的光,就像模型本身是光源一样。这对于模拟发光的表面,如霓虹灯或熔岩,非常有用。
10. 光照贴图(Light Map)
光照贴图预先计算静态光源对场景的影响,可以显著提高渲染效率,尤其是在处理大型、复杂的场景时。
每种贴图都有其特定的作用和应用场景,结合使用多种贴图可以创建出高度逼真的3D模型。在Three.js中,你可以通过THREE.MeshStandardMaterial或THREE.MeshPhysicalMaterial等材质,结合THREE.TextureLoader加载各种贴图,然后将它们应用到模型上。
除了之前提到的贴图类型,Three.js还支持一些其他类型的贴图,用于更高级的视觉效果和物理模拟。下面列出了一些额外的贴图类型:
11. 环境贴图(Environment Map)
环境贴图用于模拟物体周围的环境光,通常用于反射和折射效果。这种贴图可以是立方体贴图(Cubemap)或球面环境贴图(Spherical Environment Map),用于捕捉全景环境,使物体表面能够反映出周围环境的细节。
12. 遮挡贴图(Occlusion Map 或 Ambient Occlusion Map)
遮挡贴图用于模拟间接照明,即环境中光线被阻挡的程度。它通过减少阴影区域的亮度来增强深度感和体积感,使模型看起来更加立体。
13. 清漆层贴图(Clearcoat Map)
清漆层贴图用于模拟物体表面的额外涂层,如汽车上的清漆层。这种贴图可以增加表面的光泽度,同时保持基础材质的质感不变。
14. 清漆层粗糙度贴图(Clearcoat Roughness Map)
与清漆层贴图配合使用,用于控制清漆层的光滑程度,进一步细化表面的光泽效果。
15. 遮罩贴图(Mask Map)
遮罩贴图用于定义模型上某些区域是否可见。不同于透明贴图,遮罩贴图可以实现硬边缘的切割效果,常用于复合材质或在模型上应用特殊效果。
16. 漫反射贴图(Diffuse Specular Map)
这是一种组合贴图,同时包含了基础颜色和高光信息,用于简化材质定义过程。在某些工作流程中,这种贴图可以替代单独的基础贴图和高光贴图。
17. 各向异性贴图(Anisotropy Map)
各向异性贴图用于模拟具有方向性的表面,如织物、刷子痕迹或金属划痕。这种贴图可以增加表面的真实感,特别是在光线照射下。
18. 厚度贴图(Thickness Map)
厚度贴图用于模拟透明或半透明物体的内部结构,如玻璃或冰块。它可以根据贴图中的值调整光线穿过物体时的颜色和强度。
19. 边缘贴图(Edge Map)
边缘贴图用于突出模型的轮廓线,增强视觉对比度,尤其在低多边形模型或卡通风格渲染中非常有用。
20. 颜色校正贴图(Color Correction Map)
用于调整模型表面的颜色,可以用于模拟特定的照明条件或艺术效果。
每种贴图都有其独特的作用,通过合理组合和使用这些贴图,可以极大地提升3D模型的视觉质量和真实感。在Three.js中,你可以通过不同的材质属性来应用这些贴图,例如map, specularMap, normalMap, displacementMap, emissiveMap, roughnessMap, metalnessMap, aoMap等。