23.纹理概念

23.纹理-纹理概念


23.1 知识点

纹理是用来干嘛的

在3D模型中,纹理可以理解为模型的“皮”,与模型的骨骼和三角面片一起构成了完整的模型结构。

  • :模型的骨骼
  • :三角面片(由模型顶点围成模型的轮廓)
  • :纹理图片

由此可见,纹理的主要作用是使用一张图片来控制模型的外观。通过纹理映射技术,图片和模型关联在一起,使模型能够呈现出图片中的颜色表现。

纹理映射是一种计算机图形学技术,用于将图像(纹理)映射到三维模型的表面,从而为模型赋予更为真实和细致的外观。这个过程本质上是将二维图像映射到三维空间中的一个过程。

如何进行纹理映射

在建模软件中,美术人员会利用纹理展开技术,将纹理映射的坐标存储在每个顶点上。模型表面的顶点都与纹理坐标关联起来,纹理坐标通常使用二维坐标系统(称为UV坐标),其中U表示水平轴,V表示垂直轴。

简而言之,美术通过建模软件进行纹理映射,导出的模型数据中会存储每个顶点对应的纹理坐标(UV坐标)。


UV坐标对于Shader开发的意义

在Shader开发中,我们可以通过顶点着色器回调函数获取模型中的UV坐标数据。有了这些UV坐标,只要有正确的纹理贴图(即图片),我们就可以用顶点的UV坐标从图片中取出对应的颜色用于渲染,这样模型便可以呈现出“皮”的颜色效果。

UV坐标的注意事项

  1. 归一化范围:纹理坐标(UV坐标)的横轴和纵轴的取值范围通常被归一化到[0,1]的范围中。这是为了适应不同尺寸的纹理图片(如256x256、512x512、1024x1024等)。

  2. 插值计算:只有顶点中记录了UV坐标,因此在数据传递到片元着色器之前,UV坐标会在中间阶段进行插值运算。也就是说,每个片元中的UV坐标大多是插值计算的结果,这使得我们可以得到图片中非顶点位置的颜色。

总结

  • 纹理:模型的“皮”,决定了模型的颜色表现。
  • 纹理映射技术:在建模时通过纹理映射技术将顶点和纹理图片建立联系,在模型数据中记录顶点对应的UV坐标。
  • Shader开发:在Shader开发中,我们可以利用UV坐标从纹理图片中取出对应的颜色来为片元“上色”。

注意事项

  1. UV坐标的取值范围在[0,1]之间。
  2. 顶点之间的片元会通过插值运算得到对应的UV坐标,从而从纹理图片中取出对应位置的颜色。

23.2 知识点代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson23_纹理_纹理概念 : MonoBehaviour
{
    void Start()
    {
        #region 知识点一 纹理是用来干嘛的?

        //模型的骨肉皮
        //骨:模型骨骼
        //肉:三角面片(由模型顶点围成模型的轮廓)
        //皮:纹理图片
        //由此可以看出

        //纹理的主要作用就是使用一张图片来控制模型的外观
        //使用纹理映射技术,将图片和模型联系起来,让模型能呈现出图片中的颜色表现

        //纹理映射:
        //是计算机图形学中的一种技术,它用来将图像(纹理)映射到三维模型的表面,从而赋予模型更加真实和细致的外观
        //这个过程实际上是将二维图像映射到三维空间的过程

        #endregion

        #region 知识点二 如何进行纹理映射?

        //在建模软件中,美术同学会利用纹理展开技术把纹理映射坐标存储在每个顶点上
        //模型表面的顶点都与纹理坐标相关联
        //纹理坐标通常使用二维坐标系统(称为UV坐标),其中U表示水平轴,V表示垂直轴

        //简而言之就是
        //美术通过使用建模软件进行纹理映射
        //之后导出的模型数据中
        //存储了每个顶点对应的纹理坐标(UV坐标)

        #endregion

        #region 知识点三 UV坐标对于Shader开发的意义

        //我们在进行Shader开发时
        //在顶点着色器回调函数传入的数据中
        //我们可以获取到模型中的UV坐标的数据
        //有了UV坐标,只要有正确的纹理贴图(图片)
        //我们就可以用顶点的UV坐标从图片中取出映射的颜色用于渲染
        //模型便可以呈现出“皮”的颜色效果

        #endregion

        #region 知识点四 UV坐标的注意事项

        //1.纹理坐标(UV坐标)的横轴和纵轴的取值范围是被归一化过的,在[0,1]的范围中
        //  主要目的是为了适应不同大小的纹理图片(256x256、512x512、1024x1024等等)

        //2.只有顶点中记录了UV坐标,因此在数据传递进片元着色器之前,UV坐标会在中间阶段进行插值运算
        //  也就是每个片元中得到的UV坐标大部分都是插值计算得结果,因此我们可以得到图片中非顶点位置的颜色

        #endregion

        #region 总结

        //纹理就是模型的“皮”
        //它决定了模型的颜色表现
        //在建模时通过纹理映射技术将顶点和纹理图片建立联系
        //在模型数据中记录顶点对应的UV坐标
        //之后我们在进行Shader开发时
        //就可以利用UV坐标从纹理图片中取出对应的颜色
        //给片元“上色”了

        //注意:
        //1.UV坐标的取值范围在[0~1]之间
        //2.顶点之间的点(片元),会通过插值运算得到对应的UV坐标
        //  从而从纹理图片中取出对应位置的颜色

        #endregion
    }
}

23.3 练习题

UV坐标是用来干嘛的?

  • 用于记录纹理映射关系的
  • 记录 模型顶点 映射的 纹理贴图 的坐标信息
  • 之后我们可以通过UV坐标获取到对应顶点映射的贴图颜色数据信息


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏