12.5 パターン・テクスチャ
12.5-1 テクスチャ・マップ(texture_map)
texture{
PATTERN_TYPE
texture_map {
[ NUM_1 TEXTURE_BODY_1]
[ NUM_2 TEXTURE_BODY_2]
...
[ NUM_n TEXTURE_BODY_n]
}
TEXTURE_MODIFIERS...
}
|
||
| texture | テクスチャを指定するキーワード | |
| PATTERN_TYPE | パターン・タイプの指定 ⇒「13.1 パターン・タイプ」 | |
| texture_map | テクスチャ・マップを指定するキーワード | |
| NUM_1〜NUM_n | 各エントリーの範囲の指定、 0.0〜1.0の実数値 | |
| TEXTURE_BODY_1 〜TEXTURE_BODY_n |
各エントリーのテクスチャの指定、通常のテクスチャであればどんなものでも使用できる。 texture { } はここでは必要ない。 | |
| TEXTURE_MODIFIERS... | 変形などのオプションの指定 ⇒「13.2 テクスチャのオプション」 | |
texture {
gradient x // パターン・タイプ
texture_map {
[0.3 pigment{Red} finish{phong 1}]
[0.3 T_Wood11] // テクスチャ識別子
[0.6 T_Wood11]
[0.9 pigment{DMFWood4} finish{Shiny}]
}
}
texture {
checker
texture { T_Wood12 scale .8 }
texture {
pigment { White_Marble }
finish { Shiny }
scale .5
}
}
}
12.5-2 タイル(tiles)
12.5-3 マテリアル・マップ(material_map)
texture {
material_map {
FILE_TYPE "filename"
BITMAP_MODIFIERS...
TEXTURE_0
TEXTURE_1
...
TEXTURE_n
}
TEXTURE_MODIFIERS...
}
|
||
| texture | テクスチャを指定するキーワード | |
| material_map | マテリアル・マップを指定するキーワード | |
| FILE_TYPE | 2次元画像のファイル形式を次の中から指定する。 gif、tga、iff、ppm、pgm、png、jpeg、tiff、SYS ※SYSは使用するプラットフォーム固有の形式 |
|
| FILE_NAME | 2次元画像のファイル名の指定 ※ カレント・ディレクトリとLibrary_pathを指定したディレクトリ以外の場所にあるファイルは、次のようにフルパスで指定しなければならない。 例)DドライブのpovfileディレクトリにあるImage.gifファイルを指定する場合 image_map { gif " d:\povfile\Image.gif " } |
|
| BITMAP_MODIFIERS... | ビットマップ修正オプションの指定 ⇒「13.2 テクスチャのオプション」 | |
| TEXTURE_0〜TEXTURE_n | 各インデックスに使用するテクスチャの指定 | |
| TEXTURE_MODIFIERS... | テクスチャ修正オプションの指定 ⇒「13.2 テクスチャのオプション」 ※ ピグメント、ノーマル、フィニッシュ、haloはここでは修正できない。 これらの修正はマテリアル・マップの中の各テクスチャに個別に行わなければならない。 |
|
12.6 レイヤー・テクスチャ
OBJECT { OBJECT_ITEM
texture {T1}
texture {T2}
...
texture {Tn}
}
|
||
| OBJECT、OBJECT_ITEM | レイヤー・テクスチャを使用する物体の指定 | |
| texture {T1} 〜texture {Tn} |
各層のテクスチャの指定、 T1 が最下層、Tn が最上層とな る。 ※ T1 以外のテクスチャは透明部分をもたなければならない ※ 特殊テクスチャは使用できない ※ 各テクスチャは texture{} で囲まなければならない。 |
|
#declare Layered_Examp =
texture {T1}
texture {T2}
texture {T3}
object {
My_Object
texture {
Layer_Examp
finish { shiny } // これは最下層のテクスチャのみを修正する
}
}
12.7 UVマッピング(uv_mapping)
texture {
uv_mapping pigment{ PIGMENT_BODY } | pigment{uv_mapping PIGMENT_BODY }
uv_mapping normal { NORMAL_BODY } | normal {uv_mapping NORMAL_BODY }
uv_mapping texture{ TEXTURE_BODY } | texture{uv_mapping TEXTURE_BODY }
}
|
||
| uv_mapping | UVマッピングを指定するキーワード | |
| pigment | ピグメント(色彩、画像ファイルなど)の指定 ⇒「12.1 ピグメント」 | |
| normal | ノーマル(法線ベクトル)の指定 ⇒「12.2 ノーマル」 | |
| texture | テクスチャの指定 ⇒「12.テクスチャ1」 | |
| ベジェ曲面(bicubic_patch) | UV座標軸は、ベジェ曲面定義の座標軸を基本とする。曲面定義領域に伸縮して貼り付けられる。 |
| メッシュ(mesh) メッシュ2(mesh2) |
UVマッピングは各頂点と対応して行われる。 |
| 回転体(lathe) 簡易回転体(sor) |
回転軸を包み込むようにマッピングされる。 |
| 球(sphere) | 球を包み込むようにマッピングされる。 |
| ボックス(box) | 下図12.7aに示すような形式で画像部分がマッピングされる。 |

UVマッピングと通常マッピングの比較例

(1)ベジェ曲面
![]() |
bicubic_patch{
type 1 flatness 0 u_steps 4 v_steps 4
<-2,-5,-2>,<1,0,1>,<2,0,1>,<3,0,0>
<0,1,1>,<1,1,1>,<2,1,1>,<3,1,1>
<0,2,1>,<1,2,1>,<2,2,1>,<3,2,1>
<0,3,-2>,<1,3,1>,<2,3,1>,<4,3,5>
uv_mapping pigment{image_map{png "glass.png"}}
}
bicubic_patch{
type 1 flatness 0 u_steps 4 v_steps 4
<-2,-5,-2>,<1,0,1>,<2,0,1>,<3,0,0>
<0,1,1>,<1,1,1>,<2,1,1>,<3,1,1>
<0,2,1>,<1,2,1>,<2,2,1>,<3,2,1>
<0,3,-2>,<1,3,1>,<2,3,1>,<4,3,5>
pigment{image_map{png "glass.png"} scale 3}
translate <5,0,0>
}
|
(2)回転体
|
lathe{
cubic_spline
12,
<1,0>,<1,0.1>,<0.5,0.4>,<1,1.5>,<0.5,2>,<0.4,2>,
<0.9,1.5>,<0.4,0.4>,<0.8,0>,<1,0>,<1,0.1>,<0.5,0.4>
pigment{image_map{png "glass.png"} rotate 0*y scale 2}
finish{phong 1 reflection 0.1}
rotate x*90 scale<0.5,0.5,1>
}
lathe{
cubic_spline
12,
<1,0>,<1,0.1>,<0.5,0.4>,<1,1.5>,<0.5,2>,<0.4,2>,
<0.9,1.5>,<0.4,0.4>,<0.8,0>,<1,0>,<1,0.1>,<0.5,0.4>
uv_mapping pigment{image_map{png "glass.png"} scale 0.5}
finish{phong 1 reflection 0.1}
rotate x*90 scale<0.5,0.5,1> translate x*1.5
}
|
(3)球
|
sphere{
0,1
pigment {image_map{png "glass.png"}}
}
sphere{
<2.5,0,0>,1
uv_mapping pigment{
image_map{png "glass.png"} scale 0.5}
}
|
(4)ボックス
|
box{
<0,0,0>,<1,1,1>
pigment {image_map{png "glass.png"}}
}
box{
<0,0,0>,<1,1,1>
uv_mapping pigment{
image_map{png "glass.png"} scale 0.5}
translate<1.5,0,0>
}
|
12.8 三角形のテクスチャ補間(texture_list)
mesh{
triangle { <Corner_1>,<Corner_2>,<Corner_3>
texture_list { TEXTURE_1 TEXTURE_2 TEXTURE_3 }
...............
triangle { <Corner_1>,<Corner_2>,<Corner_3>
texture_list { TEXTURE_1 TEXTURE_2 TEXTURE_3 }
}
|
||
| mesh | メッシュを指定するキーワード | |
| triangle | 三角形を指定するキーワード、smooth_triangle も使用可 | |
| <Corner_1>,<Corner_2>,<Corner_3> | 三角形の各頂点 | |
| texture_list | 三角形のテクスチャ補間のキーワード | |
| TEXTURE_1 TEXTURE_2 TEXTURE_3 | 三角形各頂点のテクスチャ | |

mesh{
triangle{x,y,z texture_list { T_Stone30 T_Stone40 T_Stone21 }}
triangle{y,-x,z texture_list { T_Stone40 T_Stone30 T_Stone21 }}
triangle{-x,-y,z texture_list { T_Stone30 T_Stone40 T_Stone21 }}
triangle{-y,x,z texture_list { T_Stone40 T_Stone30 T_Stone21 }}
scale z*0.8
}
12.9 インテリア・テクスチャ(interior_texture)
object {
texture { TEXTURE_ITEMS }
interior_texture { TEXTURE_ITEMS }
}
|
||
| texture | 物体表面へのテクスチャ・マッピング | |
| interior_texture | 物体内側へのテクスチャ・マッピング | |

cylinder {
<0, 0, 0>, <0, 0, 4>, 4 open
texture { PinkAlabaster }
interior_texture { Red_Marble }
}
12.10 論理演算テクスチャ(cutaway_textures)
intersection | difference {
OBJECT_1_WITH_TEXTURES
OBJECT_2_WITH_NO_TEXTURE
cutaway_textures
}
|
||
| intersection | difference | 論理積または論理差の指定 | |
| OBJECT_1_WITH_TEXTURES | 論理演算を実行する物体1(テクスチャの指定あり) | |
| OBJECT_2_WITH_NO_TEXTURE | 論理演算を実行する物体2(テクスチャの指定なし) | |
| cutaway_textures | 論理演算テクスチャ指定のキーワード | |

difference {
box{<0, 0, 0>, <4,5,4>
texture {T_Wood7} }
sphere{<3.5,1.5,3>,2 }
cutaway_textures
}