第4.1章 材质贴图1

导言
      本章介绍了如何创建纹理采样器并应用于3D图形贴图。最简单的形式,纹理是图像(二维数组的像素信息)是适用于表面的三维形状。图像可以使用tga,jpeg , png ,或DDS的格式。使用一个纹理采样器,需要先设置的一些状态参数,以说明如何适用纹理的形状。

      立方体贴图的例子展示了创建六个面并对每个面进行贴图的过程。

 


关于纹理
       O3D使用字符代表横向坐标和字符V代表垂直纹理坐标。纹理坐标( U ,V)的范围从( 0.0 , 0.0 )图像左下角到( 1.0 , 1.0 )图像的右上角,如下所示:

 

      在O3D 中,纹理也可以是三维立方体。立方体纹理存储一个立方体六个面的纹理图像,并处理三个纹理坐标(u, v 和 w)。应用立方体纹理效果,大致类似收缩包装上的纹理,其图形是封闭的立方体。

 


纹理采样器

      概括的说,纹理采样器是一系列贴图对象及将贴图对象应用到3D模型上的state等。纹理采样器定义了一下属性(默认值在括号内):

  • addressModeU(WRAP)          定址模式
  • addressModeV (WRAP)            
  • minFilter (LINEAR)
  • magFilter (LINEAR)
  • mipFilter (POINT)
  • borderColor (Float4(0,0,0,0)
  • maxAnisotropy (1)
  •   

    1、定址模式    

           该addressModeU和addressModeV属性规定了纹理坐标范围超过的0.0到1.0时进行何种处理操作。如下图的贴图例子所示,贴图区域的U和V方向都是0.0到2.0,可以用不同的定址模式来解决这个问题,具体参数设置如下:

     

    意义

    WRAP

    (默认为此值)重复贴图来填充贴图区域

    MIRROR

    重复贴图,当遇到UV的边界时反向(UV边界为0.0或者1.0

    CLAMP

    用贴图的最后一行像素,重复覆盖没贴到的区域

    BORDER

    超过的贴图区域,用一种特殊颜色的边标记出来

     

    2、缩小过滤
          该缩小过滤器( minFilter )规定如何适用纹理如果该地区的质感较少像素比纹理(即纹理需要缩小,以填补该地区) 。可能过滤类型minFilter如下:

     

    意义

    POINT

    用最接近的像素

    LINEAR

    用线性插值法在相邻像素之间,并使用插值之后的结果

    ANISOTROPIC

    不按比例拉伸贴图,直到贴满整个区域

     

          如果minFilter设置点或直线,一个mipmap过滤器( mipFilter )可以用来控制插值纹理值。如果mipFilter设定为无,这就被忽视。见下面的Mipmap过滤器。

     

    3、Mipmap过滤器
          创建缩小版的贴图比放大贴图更困难。需要将更多的精力放在避免切图时边缘的处理上,防止产生锯齿现象。Mipmapping指贴图的过程中减少材质的使用代替原来的巨型纹理。Mipmapping指的过程中创造了一套减少纹理使用,取代原来的全尺寸的纹理。通常的技术是根据原来的纹理,创建新的纹理尺寸是原来纹理的一半,并继续这一过程,直到减少纹理到一个像素大小。当贴图缩小到合适的尺寸时,设置mipFilter 的值如下:

     

    mipFilter的值

    意义

    NONE

    不使用mipmap

    POINT

    使用最接近三角形的mipmap标准。使用缩小过滤器(minFilter)处理贴图

    LINEAR

     

     

     4、放大过滤器
          放大过滤器( magFilter )规定如何适用纹理如果该地区的质感包含的像素比纹理(即纹理需要加以延伸,以填补该地区) 。这种放大会导致图像模糊。可能过滤类型magFilter如下:

     

    意义

    POINT

    点使用最接近像素。

    LINEAR

    在相邻像素之间使用线性插值

     

    5、边框颜色

          当定址模式设置为BORDER, borderColor应用于任何纹理坐标在0.0到1.0范围界定的像素。如下图,纹理贴图实例中的右上角的贴图,超出边界的部分边框颜色为红色。

     

    6、各向异性(Anisotropy)
          当minFilter的值被设为ANISOTROPIC时,maxAnisotropy值指定了各向异性的程度。各向异性过滤考虑到纹理像素间的距离,以及纹理贴图被观察的角度。

     

    7、例子

            下图是贴图例子,后面表格中的内容对应每个贴图对象的属性值:

     

     

     

    左上角

    中上

    右上角

    • addressModeU = Sampler.WRAP
    • addressModeV = Sampler.WRAP
    • minFilter = Sampler.LINEAR
    • magFilter = Sampler.LINEAR
    • mipFilter = Sampler.POINT
    • borderColor = Float4(0, 0, 0, 0)
    • maxAnisotropy = 1

     

    • minFilter = Sampler.ANISOTROPIC
    • maxAnisotopy = 4

     

    • addressModeU = Sampler.BORDER
    • addressModeV = Sampler.BORDER
    • borderColor = Float4(1, 0, 0, 1)

     

    左下角

    中下

    右下角

    minFilter = Sampler.POINT

    Uses default (LINEAR) filtering; 和上面的贴图作对比

     

    • addressModeU = Sampler.MIRROR
    • addressModeV = Sampler.MIRROR

     


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值