2D图片如何映射到3D模型?
这个过程叫做纹理映射(texture mapping)。
模型事实上是用三角形构成的,每一个顶点可以存储信息并且可以被shaders接收。
其中顶点中存储的最重要的信息是UV数据(UV data)。
它由两个坐标构成:U和V,取值范围都是从0到1。它们代表了2D图片上像素将要映射到模型顶点的XY position。
UV数据只提供给顶点。当三角形内的点需要被纹理映射(texture-mapped)时,GPU会插值运算最接近的UV值以找到要使用的纹理中的正确像素。
这个图片展示了2D纹理如何映射到3D模型上的三角形。
UV数据存储在3D模型中,并需要编辑建模软件。
一些模型缺少UV分量,因此它们不能支持纹理映射。
这里我对模型的知识了解太少,比如说有的模型有专门匹配的贴图,所以那种模型的UV就是根据匹配的贴图设置的吗?可是在材质中我随便指定一种贴图不也能贴上吗?希望有了解的能回答一下。
Standard Shader中的纹理映射
接下来需要一个有UV数据的3D模型和它的贴图。它们都需要提前导入进Unity,你也可以把它们简单的拖进编辑面板中。
Standard Shader默认支持纹理映射,接下来将解释它工作的步骤
- 新建一个名为 TexturedShader的Stand