使用纹理(Textures)

使用纹理(Textures)文章介绍了在游戏开发或 3D 建模中 如何使用贴图 Maps 来实现物体表面的复杂效果 如波点 斑纹或裂纹

        当物体表面并非是纯色的时候,比如带波点,斑纹或者表面有刮痕或被裂纹等,这些效果该如何实现呢?

        这里我们需要提到一个概念是贴图(Maps)。Maps是覆盖在游戏物体上的2D图片,用来设置表面的颜色、specularity或metalness、物理纹理或其他相关属性。包含maps的图片文件称为纹理(Textures)。

纹理是什么

        纹理(Textures)可以看做是普通的图像文件,比如BMP,TIF,PNG和JPG。图像文件中的数据通过通道(channels)进行组织。黑白图像(也称为灰度度,grayscale image)只有一个通道来表示每个像素的灰度值。彩色图像一般需要RGB三个通道,每个像素使用RGB值来表示具体的某种颜色。还有一些图像文件格式会使用四通道:RGBA,A表示alpha,用来调节透明度。

        艺术家们通常通过Blender、3DMAX等3D建模软件来创造他们的3D模型,这些软件也能够生成模型所需的纹理文件。我们也可以使用普通的2D图像文件当做纹理来使用,如下图所示:


查看纹理文件属性

    我们可以一个纹理文件,然后在其Inspector面板中查看其属性。

        当我们在材质窗口中,将我们的纹理拖动到了Inspector的Base Map左边的方框中后,还可以设置Base Map的颜色,这样可以得到纹理原始颜色和所选颜色的叠加的效果,如下图:


Tiled Textures

        在材质的Inspector面板中,可以看到Surface Inputs下有Tiling和Offset两个选项。

        Tiling决定了mesh表面上会重复多少次纹理,这个值越高,我们的纹理就重复地越多,单个纹理看起来也就更小。

        Offset决定了我们从纹理的哪个位置开始应用到物体表面上。比如X设置为0.5表示从纹理的一半宽度的地方开始tiling。

        这两个值在Editor中可以根据需要自行设置,如下图,我将Tiling设置为5,Offset设置为X=0.5,Y=0.5,效果如下:


UV贴图

        对于一些简单的形状如球体或长方体,纹理映射到物体mesh的哪个位置似乎不会影响很大。但对于其他复杂的物体就不是这样了。比如对于一个人形角色的身体来说,其表面上可能会有皮肤,衣服,这些所有的东西都在一个材质中。此时如果纹理映射的位置不正确,则角色就会看起来非常奇怪了,比如该是耳朵的地方,显示的却是眼睛(刻意而为除外^_^)。

        当在建模软件中创建3D模型时,软件会生成上面所提到的纹理,生成的过程称为UV映射(UV mapping)。3D建模软件如Blender,Maya,3DMax等,会生成UV坐标的2D坐标集。UV坐标和普通的2D空间的XY坐标是类似的。UV坐标和mesh有关系,而和场景中的3D空间无关。

        UV映射表示的过程是将3D模型的表面展开到一个平面,并将2D纹理贴图到这个平面上。在这个过程中,建模软件生成要被重新包裹到模型上的纹理的UV坐标。

今天的文章 使用纹理(Textures)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-12 15:21
下一篇 2024-12-12 15:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/84388.html