跳转到内容

材质贴图:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
Sakura.SW留言 | 贡献
无编辑摘要
标签移动版编辑 移动版网页编辑 高级移动版编辑
InternetArchiveBot留言 | 贡献
补救2个来源,并将0个来源标记为失效。) #IABot (v2.0.8.5
 
(未显示另一用户的1个中间版本)
第5行: 第5行:
'''材质贴图''',又称'''纹理贴图''',在[[计算机图形学]]中是把存储在内存里的[[位图]]包裹到3D渲染物体的表面。纹理贴图给物体提供了丰富的细节,用简单的方式模拟出了复杂的外观。一个图像(纹理)被贴(映射)到场景中的一个简单形体上,就像印花贴到一个平面上一样。这大大减少了在场景中制作形体和纹理的计算量。例如,可以建立一个球并把脸的纹理贴上去,这样就不用处理鼻子和眼睛的形状了。
'''材质贴图''',又称'''纹理贴图''',在[[计算机图形学]]中是把存储在内存里的[[位图]]包裹到3D渲染物体的表面。纹理贴图给物体提供了丰富的细节,用简单的方式模拟出了复杂的外观。一个图像(纹理)被贴(映射)到场景中的一个简单形体上,就像印花贴到一个平面上一样。这大大减少了在场景中制作形体和纹理的计算量。例如,可以建立一个球并把脸的纹理贴上去,这样就不用处理鼻子和眼睛的形状了。


随着[[图形卡]]功能越来越强,理论上材质贴图变得越来越不必要,而三维绘制(渲染)成了常用的工具。但事实上,最近的趋势是使用更大和更多的纹理图像,再加上把多幅纹理组合到同个物体的不同角度的复杂技术。(这在实时图形学中更为重要,因为同时显示的纹理个数是由图形卡的可用图形内存容量决定的。)
随着[[图形卡]]功能越来越强,理论上材质贴图变得越来越不必要,而三维绘制(渲染)成了常用的工具。但事实上,最近的趋势是使用更大和更多的纹理图像以及使用把多幅纹理组合到同个物体的不同角度的复杂技术。(这在实时图形学中更为重要,因为同时显示的纹理个数是由图形卡的可用图形内存容量决定的。)


最后显示在屏幕上的[[像素]]是从纹理的[[纹素]]中计算的,计算方法由[[纹理滤波]]决定。最简单的方法是每个[[像素]]使用一个最接近的[[纹素]],多个[[素]]之间的[[线性插值]]也很常用,还有更复杂的办法,参看[[Mipmap]]。另外,纹理也可用来决定模型表面的颜色,甚至双向反射分布函数(BRDF),从而和光照模型等方法结合起来。
最后显示在屏幕上的[[像素]]是从纹理的[[纹素]]中计算的,计算方法由[[纹理滤波]]决定。最简单的方法是每个[[像素]]使用一个最接近的[[纹素]],多个[[素]]之间的[[线性插值]]也很常用,还有更复杂的办法,参看[[Mipmap]]。另外,纹理也可用来决定模型表面的颜色,甚至双向反射分布函数(BRDF),从而和光照模型等方法结合起来。


==例子代码==
==例子代码==
第33行: 第33行:


==外部链接==
==外部链接==
*[http://www.cs.unc.edu/~rademach/xroads-RT/RTarticle.html Graphics for the Masses by Paul Rademacher]
*[http://www.cs.unc.edu/~rademach/xroads-RT/RTarticle.html Graphics for the Masses by Paul Rademacher] {{Wayback|url=http://www.cs.unc.edu/~rademach/xroads-RT/RTarticle.html |date=20210214080705 }}
*[http://www.mayang.com/textures/ High resolution textures resource] {{Wayback|url=http://www.mayang.com/textures/ |date=20050920210450 }}
*[http://www.mayang.com/textures/ High resolution textures resource] {{Wayback|url=http://www.mayang.com/textures/ |date=20050920210450 }}
*[http://www.imageafter.com/ High resolution images and textures resource]
*[http://www.imageafter.com/ High resolution images and textures resource] {{Wayback|url=http://www.imageafter.com/ |date=20210318154004 }}
*[https://web.archive.org/web/20050902203421/http://www.texturehound.com/ Texture Hound | Utlimate 3d Texture Links Directory]
*[https://web.archive.org/web/20050902203421/http://www.texturehound.com/ Texture Hound | Utlimate 3d Texture Links Directory]



2021年12月29日 (三) 00:23的最新版本

1 = 未加纹理贴图的3D模型
2 = 加了纹理贴图的3D模型
多种图案的例子(点击图片放大);
1: 未加纹理贴图的球体, 2: 纹理贴图加凹凸贴图, 3: 仅凹凸贴图, 4: 透明图加纹理贴图

材质贴图,又称纹理贴图,在计算机图形学中是把存储在内存里的位图包裹到3D渲染物体的表面。纹理贴图给物体提供了丰富的细节,用简单的方式模拟出了复杂的外观。一个图像(纹理)被贴(映射)到场景中的一个简单形体上,就像印花贴到一个平面上一样。这大大减少了在场景中制作形体和纹理的计算量。例如,可以建立一个球并把脸的纹理贴上去,这样就不用处理鼻子和眼睛的形状了。

随着图形卡功能越来越强,理论上材质贴图变得越来越不必要,而三维绘制(渲染)成了常用的工具。但事实上,最近的趋势是使用更大和更多的纹理图像以及使用把多幅纹理组合到同个物体的不同角度的复杂技术。(这在实时图形学中更为重要,因为同时显示的纹理个数是由图形卡的可用图形内存容量决定的。)

最后显示在屏幕上的像素是从纹理的纹素中计算的,计算方法由纹理滤波决定。最简单的方法是每个像素使用一个最接近的纹素,多个纹素之间的线性插值也很常用,还有更复杂的办法,参看Mipmap。另外,纹理也可用来决定模型表面的颜色,甚至双向反射分布函数(BRDF),从而和光照模型等方法结合起来。

例子代码

[编辑]

下面是简单的球面材质贴图的Java语言实现。

   public double[] sphereMap(double x, double y, double z, int radius)
   {
       /* x,y,z 是球面的法向量乘以它的半径*/
       /* 也就是 vec3 (intersect_pointv3-sphere_centre_pointv3)                */
       double u, v;
       v = Math.acos(z/radius) / PI;
       if (y > 0.0) {
           u = Math.acos(x/(radius * Math.sin(PI * v))) / PI*2;
       }
       else {
           u = (PI + Math.acos(x/(radius * Math.sin(PI * v)))) / PI*2;
       }
       
       return new double[] { u, v };
   }

参看

[编辑]

外部链接

[编辑]