揭开3D纹理的面纱.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
揭开3D纹理的面纱

揭开3D纹理的面纱 作者:朱云   今年早些时候,nVidia公司宣布微软将在新一代DirectX中采用nVidia开发的Volume Texture Compression Format(体积纹理压缩格式),简称VTC。这标志着3D纹理的压缩格式第一次正式进入了主流3D软件和硬件领域,它的出现将缓解因特网上传输高质量纹理的高带宽需求,也将使高质量的PC游戏更为真实、细腻。 3D纹理的缘起  现有的纹理贴图,就是将各种不同的2D平面图形贴在3D物体的表面上,同种物体使用同样的2D纹理,以此来简化表现不同种类物体的不同表面效果,既节省了系统存储和物体表面信息的资源,又比较真实地反映出了客观(或想象)的世界。2D纹理就是一张张的平面图形(往往是正方形的),因此只包括一个平面上的像素点(称图素,Texel),每个点在纹理内部只有二维的相对坐标(贴在物体上后就有三维的实际坐标了)。2D纹理由于过于简化,因此在各个方向上看起来并没有质地上的不同,如果物体是平滑的就很难表现出局部的高低,光线从不同角度照射也基本没有区别。   为了达到更真实多变的纹理贴图效果,各大硬件、软件公司想出了很多改进方法,其中3D纹理是最为彻底的革新途径。3D纹理可以看作是各种不同的立方体材料,内部包括整个体积的像素点(称体素,Voxel),每个点在纹理内部空间中有三维的相对坐标——你把它想象成有内部花纹的大理石(或水晶)立方体就行了。3D纹理贴图其实称作3D立方体的雕刻和变形更为合适,因为不再需要将图案贴在表面,而是将3D纹理部分地取舍和扭曲,把它变成最终物体的形状。这样我们就有了非常接近于实际物体的材料来构成虚幻的3D世界(最终取消纹理、让每个物体都各不相同的3D系统还非常遥远),尽管我们付出的系统资源将随着纹理的复杂程度呈立方级数增加(2D纹理耗费的系统资源只随着纹理的复杂程度呈几何级数增加)。 3D纹理的发展   很难准确地说3D纹理是从何时开始出现的:当年3Dlabs在Permedia 3中提出有少许高度的纹理概念,Matrox从G400开始使用凹凸纹理,其他3D芯片也可以实现简单的凹凸纹理,后来又出现了多种环境贴图纹理(从各方向上看起来有些不同):有G400凹凸环境贴图(3层纹理)、nVidia的GeForce 256的立方环境贴图(6层纹理)和ATI的Rage 6C的各种环境贴图(从1层纹理到6层纹理)。现在,3D纹理终于有了真正的内部三维相对坐标(相当于数十层、甚至数百层2D纹理),至今已经有包括Rage 6C的3D纹理和开头说到的nVidia的VTC。   3D纹理的优点不言而喻,它为新一代更加细腻、拟真的3D图形系统提供了发展基础。3D纹理的缺点也同优点一样明显:首先是非常大的数据量会占用难以想象的系统资源,3D处理的过程中进行纹理数据的过滤和半透明混合等工作也都比较困难——3D纹理的双线性过滤涉及8个点的平均数据(2D纹理是只要4个点),接近于2D纹理三线性过滤的运算量(9个点);3D纹理的半透明混合则涉及很多层体素点数据的色彩混合,运算量也相当大;另外,3D纹理仅仅是现在这样直接被“雕刻”成物体倒还简单,今后不可避免地将对3D纹理进行几何变形,以往T&L引擎(以及CPU)只负责物体顶点的几何变换,这样一来就得计算3D纹理中每一个点的空间坐标,难以想象的浮点几何变换的运算量恐怕不是短时间内能实现的。 3D纹理的压缩   让我们来直观地了解一下3D纹理的数据量。2D纹理一般是正方形的,如256×256(图素)、512×512等,最大的可以达到4096×4096;3D纹理则一般是立方体的,如32×32×32(体素)、64×64×64等,最大暂时也只能有256×256×256。因为256×256×256就是16M个体素点,再乘上每个点16位(2Byte)或32位(4Byte)的色彩精度就是32MB或64MB的数据量,也就是说现在主流的显示卡内存只能装下一个低档次的3D纹理(Voodoo时代,2D大纹理的标准就是256×256/16位)。因此3D纹理一定要经过压缩才具有实用价值。   说到图像压缩,大家肯定会想到JPG、GIF等静态图像压缩格式和MPEG动态图像压缩格式,但实用的纹理压缩算法必须符合几个条件:一要能高速、实时解压缩,不影响纹理贴图过程的速度,所以JPEG(静态图像专家组)、Wavelets(子波压缩)等高压缩率、低速度的的方法就不合适了(试过S3TC纹理压缩程序的朋友就能发现,S3TC格式的图形文件,比高压缩系数的JPG等格式的文件大得多,一般是BMP格式的1/2~1/4);二要能够部分解压缩,就是不用把整个纹理全部解压缩(有大量数据互相相关的算法就是这样,如MPEG必须有上一帧图像为基础才能计算下一帧)后再进行纹理贴图,因为没有“地

文档评论(0)

peain + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档