姚明,81年,97年开始接触电脑,6年的编程学习经历, 曾有4年工作经验,最终转向基础理论学习和研究, 现华中理工科技大学在读,有志于图形学领域工作发展

EMAIL:alanvincentmail@gmail.com QQ:31547735

随笔分类(34)

文章分类(99)

相册

收藏夹(6)

编程技术网站

出国留学网站

数学资源网站

图形学网站

英语资源网站

自由职业者

搜索

  •  

最新评论

纹理映射

 

球面纹理映射
球面纹理映射

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

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

最后显示在屏幕上的像素是从纹理的texel中计算的,这由纹理滤波决定。最快的方法是每个像素使用一个texel,线性插值也很常用,还有更复杂的办法,参看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 };
}

[编辑]参看

[编辑]外部链接

posted on 2008-01-01 05:54 姚明 阅读(521) 评论(0)  编辑 收藏 引用 所属分类: 图形学

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理