基本的なシーンの解説

ここでは六角大王Superが出力する基本的なシーンに含まれているものを列挙していきます。

コメント行

// RokuSuper Output Ver3.0 for POV-Ray3.5

最初はこの文から始まります。//から始まる文はコメントといってこの記号から後は行末まで無視するというものです。
ここの他にも六角Superはレイヤーの区切れ毎にコメントでメモを入れます。
上へ


インクルード

#include "XXXX.inc"  //指定されたファイルXXXX.incを読み込む。

インクルードファイルとは『 #declare 』を用いて色やテクスチャなどのPOV-Rayシーンの断片を記述してあるファイルです。
これを#includeで読み込むことで、シーンの中でその色やテクスチャを使うことができます。
この仕組みは巨大な情景などをつくろうとする場合に非常に役に立ちます。人間のポーズをちょっと変えただけなのに全体を改めて出力し直すなんてのは大変ですから。
しかしここでインクルードされているファイル『 colors.inc 』は実はこのファイル中で何の役にも立っていません。従って何も気にする必要はありません。
なお、ファイルを探しに行く場所はそれを書いたファイルがあるディレクトリ(フォルダ)内とPOV-Rayの設定で指定したディレクトリ(フォルダ)のみですので注意。
上へ


カメラ

camera { // カメラの設定を示すキーワード
 location < x座標 , y座標 , z座標 >  // カメラの場所
 sky < x成分 , y成分 , z成分 >  // カメラの上方を指すベクトル
 angle 角度(0〜180度)  // カメラの視野角
 look_at < x座標 , y座標 , z座標 >  // カメラが見つめる点の位置
}

六角大王Superでは「通常」、「広角」、「望遠」、「平行」の4種類のカメラがありますが、「平行」以外は『 angle 』の値が違っているだけで他は基本的に同じです。
sky < x , y , z >はカメラの上方向を指すベクトルで、これは六角大王Superでオプションキー(Windowsではalt?)を押しながら視点を動かすと視点が回転するあの回転具合を指定するものだと思って下さい。
六角大王Superが出力するPOVファイルはこのskyが指定されているのでlocationなどを後から自分でいじるのはちょっと面倒です。したがってカメラは六角Superの方でちゃんと指定しておきましょう。
次に「平行」モードで書き出した場合の例を挙げておきます。

camera { 
 orthographic  // 英語で「正射影」の事。平行モードであるという宣言
 location < x座標 , y座標 , z座標 >
 right < x座標 , y座標 , z座標 >  // 描く領域の3次元座標の横幅。ふつうxのみが指定されている。
 up < x座標 , y座標 , z座標 >  // 描く領域の3次元座標の縦幅。ふつうyのみが指定されている。
 sky < x成分 , y成分 , z成分 >
 look_at < x座標 , y座標 , z座標 >
}

「平行」は他のモードとは計算法が違うので最初にこのように断っておくわけです。詳しい違いは割愛しますが。
実は、この平行カメラの指定方法はPOV-Ray3.1までの方法で、POV-Ray3.5からは通常のカメラの設定に『 orthographic 』を書けば良いだけになっています。今現在は勝手に判断されてレンダリングされるようですが、将来はどうなるのかわからないのであまり「平行」モードで出力しない方が良いかも知れません。
なお、このrightupは通常のカメラでも出力画像の縦横比の指定に使われますが、それに関しては別項にて。
上へ


背景色

background { color rgb < 赤成分 , 緑成分 , 青成分 >}  // 背景色の指定。

POV-Rayでは基本的に色をcolor rgb < 赤成分 , 緑成分 , 青成分 > (各成分は0.0〜1.0の実数)のようにベクトルで表現します。
なおこの『 background 』では背景に単一の色以外を設定することはできません。空のテクスチャなどを使用したい場合は『 sky_sphere 』というものを使わなければなりませんがそれはまた別項にて。
上へ


光源

light_source{  // 光源の指定を示すキーワード
< x座標 , y座標 , z座標 >   // 光源の場所
color 色の指定  // 光源の色
}

特に何も断っていない光源を用意するとPOV-Rayは点光源として扱います。
光源の色は各RGB値に(光源1(or2)の明るさ*2)/100をかけた数値で出力されるようです。 また、光源2をアクティブにしている場合はもう1つlight_source{ ... }が出力されます。
このようにPOV-Rayでは光源を書けば書いた数だけ置くことが可能です。
上へ


ポリゴン(旧)

 単色テクスチャの時
smooth_triangle{  // スムースシェーディング用三角ポリゴンの設定を示すキーワード
<x座標1, y座標1, z座標1> , <法線1x成分, 法線1y成分, 法線1z成分> , <x座標2, y座標2, z座標2> , <法線2x成分, 法線2y成分, 法線2z成分> , <x座標3, y座標3, z座標3> , <法線3x成分, 法線3y成分, 法線3z成分> 
texture { 識別子 }  // テクスチャの設定。まえに宣言したものを使っている。
}

 イメージテクスチャの時
smooth_triangle{
<x座標1, y座標1, z座標1> , <法線1x成分, 法線1y成分, 法線1z成分> , <x座標2, y座標2, z座標2> , <法線2x成分, 法線2y成分, 法線2z成分> , <x座標3, y座標3, z座標3> , <法線3x成分, 法線3y成分, 法線3z成分> 
texture { tx0 
   scale <x成分, y成分, z成分>  // テクスチャの変型。サイズを合わせる。
   matrix < m00,m01,m02,m03,m10,m11,m12,m13,m20,m21,m22,m23 >  // テクスチャの変型行列。回転角度を合わせる。
   translate <x成分, y成分, z成分>  // テクスチャの変型。場所を合わせる。
}
}

シフトキーを押しながら出力した場合はこの形式で出力されます。ただほとんど使う必要は無いでしょう。
大量にあるsmooth_triangle{ ... }の構造は、座標とその点での法線のベクトルが2つ一組で1つの頂点の情報を表していて、それが3つで三角形ポリゴンを表しています。
とはいえこのあたりは人間がいじるには少々骨が折れるので気にしない方が良いでしょう。
上へ


ポリゴンメッシュ

mesh2{  // ポリゴンメッシュの開始を示すキーワード
    vertex_vectors{  // ポリゴンの頂点座標の一覧の開始を示すキーワード
            数値,  // 頂点の個数
< x座標 , y座標 , z座標 >  // 頂点の座標1
< x座標 , y座標 , z座標, >  // 頂点の座標2
……// 個数分
    }
    normal_vectors{  // ポリゴンの各頂点に対応する法線ベクトル一覧の開始を示すキーワード
            数値,  // 法線ベクトルの個数
< x成分 , y成分 , z成分 >  // 頂点1の法線
< x成分 , y成分 , z成分, >  // 頂点2の法線
……// 個数分
    } 
    uv_vectors{  // ポリゴンの各頂点に対応するテクスチャ座標の一覧の開始を示すキーワード。イメージテクスチャがある時のみ出力される。
            数値,  // テクスチャ座標の個数
< u座標 , v座標 >  // 頂点1のテクスチャ座標
< u座標 , v座標, >  // 頂点2のテクスチャ座標
……// 個数分
    }
    texture_list{  // 使用されるテクスチャの一覧の開始を示すキーワード。
            数値,  // テクスチャの個数
  texture{  // テクスチャの設定を示すキーワード
    pigment{  // 英語で「絵の具、顔料」の意。元になる色の指定。内容は後述
    color rgb<1.0,1.0,1.0>
   }
    finish{  // 英語で「仕上げ」の意。表面の反射率などの指定
    diffuse 数値  // 拡散反射率の指定。0.0〜1.0。直接光が当たる部分がどの程度光源の影響を受けるか。
    reflection 数値(または色)   // 鏡面反射率の指定。数値が大きくなれば鏡の様に周囲が写り込む。
    ambient 数値(または色)   // 環境光の指定。六角Superの「光が当たらない部分の明るさ」と同じ。
   }
 }// texture の閉じ括弧
   }// texture_list の閉じ括弧
   face_indices{  // (三角)ポリゴンの一覧の開始を示すキーワード
            数値,  // ポリゴンの個数
< x成分 , y成分 , z成分 >,数値  // ポリゴン1の頂点の番号,テクスチャの番号
< x成分 , y成分 , z成分 >,数値  // ポリゴン2の頂点の番号,テクスチャの番号
……// 個数分
    }// face_indices の閉じ括弧
}// mesh2 の閉じ括弧

これがポリゴンのオブジェクトの定義です。Wave front objファイルに少し似ています。
上の smooth_triangle は1つの三角ポリゴンの定義だったのに対し、こちらは沢山の三角ポリゴンをまとめて1つの物体として定義したものです。
ですがはっきり言ってテクスチャ以外は人間がいじれる代物ではありません。
一応説明しておくと、レンダリングされる時にvertex_vectorsnormal_vectorsuv_vectorsのベクトルとテクスチャにはそれぞれ上から順番に0〜nまで番号が振られます。
そしてface_indicesに書かれているの番号の頂点、法線、UV座標を使ってポリゴンがつくられ、さらにテクスチャが適用されます。
もう一度言いますが、テクスチャの数値の微調整くらいしか人間にはできないのでわからなくても大丈夫です。
なお、六角大王Superでの四角形ポリゴンは三角形に分割されて出力されます。そのため、激しくねじれている四角形ポリゴンでは分割のされ方によっては妙な影が出たりすることがあります。従って、できるだけねじれたポリゴンは三角形に分割しておくのが良いかと思います。
次にテクスチャの定義だけを少し詳しく書いておきます。
上へ

テクスチャ

texture{  // テクスチャの設定を示すキーワード
 pigment{  // 英語で「絵の具、顔料」の意。元になる色の指定。内容は後述
  color rgb<1.0,1.0,1.0>
  }
 finish{  // 英語で「仕上げ」の意。表面の反射率などの指定
  diffuse 数値  // 拡散反射率の指定。0.0〜1.0。直接光が当たる部分がどの程度光源の影響を受けるか。
  reflection 数値(または色)   // 鏡面反射率の指定。数値が大きくなれば鏡の様に周囲が写り込む。
  ambient 数値(または色)   // 環境光の指定。六角Superの「光が当たらない部分の明るさ」と同じ。
 }
}

この部分がテクスチャの定義です。

『 pigment 』はちょっと後回しにして先に『 finish 』の内容を説明しておきます。
diffuse 数値の値は六角大王Superからは1.0 - (光沢*0.4)/100で出力されるようです。
次のreflection 数値(正確には色)は六角大王Superからは(光沢/2)/100で出力されるようです。
正確にはここには色を指定するのですが、ただの数値の場合はrgb全てがその数値の色と解釈されます。
なお、六角大王Superは「光沢」を指定した場合にこの『 reflection 』のみが出力されるのですが、本当に六角大王Superでの見た目と同じようにしたいなら『 specular 』や『 phong 』といったハイライトの指定もしたほうが良いんじゃないかと個人的には思ってたりします。
ambient 数値(正確には色)光が当たらない部分の明るさ/100で出力されるようです。 そしてこの『 ambient 』も色を指定することが可能です。

『 pigment 』に関しては六角大王Superは以下の3種類の物を吐き出します。

 単色不透明の時
 pigment{
  color rgb < 赤成分 , 緑成分 , 青成分 >  // 色の指定
 }
 
 単色透明度指定の時
 pigment{
  color rgbt < 赤成分 , 緑成分 , 青成分 , 透明度 >  // 色の指定(透明度付き)
 }
 
 イメージテクスチャの時
 uv_mapping pigment{
  image_map{  // 画像テクスチャだということを示すキーワード
     ファイル形式 "ファイル名"  // 使用する画像ファイルの指定
     map_type 0  // マッピング方法の指定
   }
 }

透明度を指定した場合の『 t 』は「 transmit 」のことで、「通り抜ける」の意。0.0で不透明で、1.0で完全に透明になります。実はPOV-Rayには透明度の色の設定に『 f (filter) 』というものもあるのですが、それについては別項にて。
なお、透過率は六角大王Superからは1.0-(透明度/100)の値が出力されます。
イメージテクスチャの張り付け方法の指定のmap_type 数字の『 0 』は平面張り付けです。
UVマッピングの都合上六角大王Superからは必ず 『 0 』で出力されます。
ちなみに、画像形式は『 tga 』で出力されているはずです。
また、透明度マップで読み込んだ透明度をもっている場合は、tga形式の画像のアルファチャンネルと呼ばれる部分に透明度(transmitの成分)として出力されています。
ただ、「透明度」のスライダでイメージテクスチャ全体の透明度を変更している場合は反映されないようです。

あとは最後までずっとレイヤー毎のコメントをはさんでmesh2が続くだけです。
上へ


もどる

inserted by FC2 system