EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 864|回复: 6
打印 上一主题 下一主题

材质贴图

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12404

社区QQ达人

跳转到指定楼层
楼主
发表于 2014-1-9 13:31:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
材质贴图,又称纹理贴图,在计算机图形学中是把存储在内存里的位图包裹到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 };   }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言

2

主题

264

帖子

509

积分

BIM专业负责人

Rank: 4Rank: 4Rank: 4Rank: 4

积分
509
2F
发表于 2016-2-23 18:55:35 | 只看该作者
下面是简单的球面材质贴图的Java语言实现

14

主题

2892

帖子

2085

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
2085
3F
发表于 2016-3-16 10:37:33 | 只看该作者

♪(^∀^●)ノ不错噢!!
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-11-23 10:42

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表