POV-RAY基础教程 - 简单贴图/纹理设置(5)

回到上一篇 POV-RAY基础教程 - 光源(4)
到目前为止所呈现的图片对于物体的外观有些无聊。通过一些简单的纹理设置,来产生一些令人惊奇的效果。

表面finish

表面处理光线跟踪器的主要特征之一是它能够通过高光和反射等表面处理来完成有趣的事情。让我们在球体上添加一个漂亮的小Phong高光(闪亮点)。为此,我们需要添加一个finish关键字后跟一个参数。我们将球体的定义更改为:

#include "colors.inc" 
#include "textures.inc" 
camera { 
    location <-4,3,-9> 
    look_at <0,0,0> 
    angle 48 
} 
light_source { 
   <0,2,0> 
   color Gray75 
}
sphere {
  <0, 1, 2>, 2
  texture{
     pigment { color Yellow }
      finish { phong 1 }
    }
  }

效果图如下
图5-1
我们渲染场景。所述phong关键字将添加一个亮点光照射在物体上的相同的颜色。它为图片增添了很多可信度,使物体看起来光滑有光泽。较低的phong值会使高光不那么明亮(值应介于0和1之间)。

添加Bump效果

我们添加的亮点说明了我们的感知有多少取决于对象的反射属性。光线跟踪可以通过对我们的感知进行欺骗来利用这一点,使我们看到实际上并不存在的复杂细节。假设我们想要在物体上有一个非常凹凸不平的表面。在数学上模拟许多颠簸是非常困难的。然而,我们可以通过改变光线从表面反射的方式来模拟凸起的外观。反射计算取决于称为表面法线的矢量。这是一个指向远离表面并垂直于它的矢量。通过人工修改(或扰动)这个法向量,我们可以模拟颠簸。我们将场景更改为如下所示并渲染它:

  sphere {
    <0, 1, 2>, 2
    texture {
      pigment { color Yellow }
      normal { bumps 0.4 scale 0.2 }
      finish { phong 1 }
    }
  }

效果图
图5-2
这告诉POV-Ray使用该bumps模式来修改曲面法线。值0.4控制凸起的表观深度。通常,凸起约为1个单位宽,对于半径为2的球体不能很好地工作。刻度使凸起1/5宽,但不影响它们的深度。

创建颜色模式

我们可以做的不仅仅是为对象指定纯色。我们可以在颜料块中创建复杂的图案,如下例所示:

  sphere {
    <0, 1, 2>, 2
    texture {
      pigment {
        wood
        color_map {
          [0.0 color DarkTan]
          [0.9 color DarkBrown]
          [1.0 color VeryDarkBrown]
        }
        turbulence 0.05
        scale <0.2, 0.3, 1>
      }
      finish { phong 1 }
    }
  }

效果图
图5-3wood关键字确定一种具体的上色模式,这是是木制。对于在POV空间的每一个位置来说,每一种模式都是返回float类型的值,范围是[0,1]。不在范围内的值,都会被忽略。color_map关键字用来确定颜色向量是如何来安排这种值的。
在上述例子中,从DarkTan到DarkBrown占据脉络的90%,而从DarkBrown到VeryDarkBrown占据了10%。具体效果可以从图片中看出,turbulence关键是轻微调节模式中的条纹脉络,以至于看起来不那么像完整的圆形。scale关键字调节模式的大小

改变模式,尝试其他效果,如红蓝相间的条纹

  sphere {
    <0, 1, 2>, 2
    texture {
      pigment {
        wood
        color_map {
          [0.0 color Red]
          [0.5 color Red]
          [0.5 color Blue]
          [1.0 color Blue]
        }
        scale <0.2, 0.3, 1>
      }
      finish { phong 1 }
    }
  }

效果图
图5-4
许多模式中,sphere的半径经常设置为1,在定义颜色转换中,这是一种非常粗糙的设置方法。比如说,一个木制纹理经常设置在一个球体上的值的为1。在上述的代码中,我们可以看到scale关键字后面跟随者一个向量。x:0.2;y:0.3;z:1; 小于1的话,会挤压这个元素。大于1会拉伸这个元素。通过改变scale的值,我们就获得了图片中的带状效果。

预定义纹理

POV-Ray具有一些非常经典的预定义好的纹理来供我们使用。这些纹理定义存在于标准的包含目录内。比如说:glass.inc,metals.inc,stones.incwoods.inc。通过名字,我们就可以知道他们具体包含那些类型的纹理了。其中,有一些纹理是完全具有上述讲过的关键字的(pigment,normal,inish等)并且已经被定义好了。而有一些纹理只具有pigments或者只有finishes
我们将球体的定义更改为以下内容,然后重新渲染它:

  sphere {
    <0, 1, 2>, 2
    texture {
      pigment {
        DMFWood4  // pre-defined in textures.inc
        scale 4        // scale by the same amount in all
                          // directions
      }
      finish { Shiny } // pre-defined in finish.inc
    }
  }

效果图
图5-5
标识符DMFWood4在定义时已经缩小了很小。对于此示例,我们希望扩大模式。因为我们想要统一缩放它,我们可以在scale关键字之后放置一个值,而不是x,y,z比例因子的向量。我们通过文件textures.inc查看有哪些纹理设置。我们只需在DMFWood4现在插入后使用Shiny重新渲染我们的文件。
以下是使用完整纹理标识符而不仅仅是碎片的示例。

  sphere {
    <0, 1, 2>, 2
    texture { PinkAlabaster }
  }

效果图
图5-6
继续阅读POV-RAY基础教程 - 相机(6)

发布了36 篇原创文章 · 获赞 42 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_28710515/article/details/89181887