しばらくぶりのPOV-Rayの解説です。
今回はメタセコイアのファイルを簡単にPOV-Rayのシーンファイルに出力するMetaMegaというツールの使い方を説明してみます。
MetaMegaというツールは以下のサイトからダウンロードできます。
2003年4月現在、MetaMegaには「ver1.0」と「ver2.1」という二つのバージョンがあります。
ver2.1の方を解説していきますが、ヘルプファイルなどはver1.0にしかついてこないので、両方ダウンロードしておくとよいでしょう。
解凍後、「はじめにお読みください」というテキストファイルを読み、その指示にしたがってメタセコイアのファイルをコピーしましょう。
さて、起動するとこのような画面になります。
右側に「オブジェクト」「材質」「設定」というタグが並んでいます。
まず、「設定」を開いて「パス設定」でメタセコイアのプログラムが入っているフォルダを指定します。
これで準備は出来ました。
サンプルとしてメタセコイアで簡単なモデルを作成します。
オブジェクトは「Obj_P」(床)、「Obj_1」(手前の円柱)、「Obj_2」(奥の円柱)の三つ。
材質は「M_Plane」(床の材質)、「M_1」(手前の円柱の材質)、「M_2」奥の円柱の材質)の三つとなっています。
このモデルをMetaMegaで開きます。
右のタグの「オブジェクト」を開くと、一覧に「Obj_1」「Obj_2」「Obj_P」と並んでいます。
この一覧からオブジェクトを選択すると、一覧の下に設定項目が出てきます。
「基本設定」の項目で「影なし」にチェックが入っているので、全てのオブジェクトでこのチェックを外しておきます。
その他の項目は特に触る必要はありません。
「材質」を開くと、一覧に「M_1」「M_2」「M_Plane」と並んでいます。
この一覧から材質を選択すると、一覧の下に設定項目が出てきます。
ここの設定はあとでPOV-Rayで修正する予定ですので特に触る必要はありません。
「設定」を開くと様々な設定項目があります。
まず、「出力先設定」でPOV-Ray、Mega-POVの選択をし、バージョンの指定もします。
今回はPOV-Ray3.5を選択しておきます。
「基本設定」の項目では、「名前の先頭に"Light"が付くオブジェクトをライトとして扱う」にチェックを入れると、メタセコイアで「Light_〜」というオブジェクト名の物体をライトとすることができますが、今回は関係ありません。
カメラの設定では数値で設定も出来ますが、マウスを使って左の画面(上下の紫色の部分はレンダリングされません)で設定することもできます。
右ボタンドラッグで視点の回転、中ボタンドラッグで視点の移動、左右ボタンドラッグでズームができます。
あと注意点があります。
「カメラ設定」の「タイプ」のところで、「遠近感あり」にしておきます。
「遠近感なし」で出力するとPOV-Ray3.5ではエラーが出るからです。
カメラアングルが決まったらPOV-Ray形式で出力します。
MetaMegaから出力されたファイルは「〜.pov」「〜_mat.inc」「〜_obj.inc」の三つになります。
「〜.pov」は実際にレンダリングするシーンファイル、「〜_mat.inc」は材質を設定したインクルードファイル、「〜_obj.inc」は形状を設定したインクルードファイルです。
とりあえずPOV-Rayを起動し、「〜.pov」をレンダリングしてみます。
では、順番に出力されたファイルを解説していきます。
まず「〜.pov」です。
#version 3.5;
//background color
background{rgb <150/255,150/255,150/255>}camera{
location < 80.452, 49.864, -30.167 >
look_at < -6.318, 0.392, 4.074 >
angle 40.000
}//deault-light
light_source{<100000.000,100000.000,-100000.000> rgb 1}
light_source{<0.000,-100.000,100000.000> rgb 1}
light_source{<-100000.000,0.000,0.000> rgb 1}
#include "D:\3dcg\povtest\semi307p1_mat.inc"
#include "D:\3dcg\povtest\semi307p1_obj.inc"
バージョンの指定、背景色の指定、カメラの設定、照明の設定、インクルードファイルの読込となっています。
背景色を変更したり、簡単なオブジェクトの追加、他のモデラーで作ったモデルの追加、インクルードファイルの追加などはこのファイルに書き込んでいくことになります。
今回は特に変更する部分はありません。
「〜_obj.inc」は形状を設定したインクルードファイルです。
このファイルでは非常に多くの数値が並んでいます。
このファイルを修正することはまずありません。
「〜_mat.inc」は材質を設定したファイルです。
#version 3.5;
//Material
#declare metamega_mat_default=texture{
pigment{rgb 1}
finish{phong 1}
}//M_Plane
#declare metamega_mat_pigment_0 = pigment{
rgbf <255/255,255/255,255/255,0.0000>
}#declare metamega_mat_finish_0 = finish{
ambient 0.2500
diffuse 0.8000
}#declare metamega_mat_0 = texture{
pigment{ metamega_mat_pigment_0 }
finish { metamega_mat_finish_0 }
}//M_1
#declare metamega_mat_pigment_1 = pigment{
rgbf <255/255,0/255,0/255,0.0000>
}#declare metamega_mat_finish_1 = finish{
ambient 0.2500
diffuse 0.8000
}#declare metamega_mat_1 = texture{
pigment{ metamega_mat_pigment_1 }
finish { metamega_mat_finish_1 }
}//M_2
#declare metamega_mat_pigment_2 = pigment{
rgbf <0/255,0/255,255/255,0.0000>
}#declare metamega_mat_finish_2 = finish{
ambient 0.2500
diffuse 0.8000
}#declare metamega_mat_2 = texture{
pigment{ metamega_mat_pigment_2 }
finish { metamega_mat_finish_2 }
}
バージョンの指定、デフォルトの材質設定のあと、メタセコイアで設定した材質の設定が並んでいます。
コメント部分("//"の後)に自分が設定した材質名が書かれています。
それぞれの材質の設定を見ていきます。
まず、pigmentで色の設定をしています。
「rgbf」となっているので、「赤、緑、青、透明度」の順に数値が並んでいます。
次に、finishで質感が設定されています。
finish内では、ambient(自己照明)、diffuse(拡散反射)が設定されていますが、POV-Rayでは他にも鏡面反射やハイライトも設定できるので、ここに追加するのもよいでしょう。
最後にpigmentの設定とfinishの設定をまとめてtextureの設定としています。
修正するとしても、形状は修正しませんし、背景色はMetaMegaで設定できます。
ライトもメタセコイアで設置することが可能ですから、ここで修正するのは材質が主なものになると思います。
では、この円柱や床にPOV-Rayの標準インクルードファイルにあるテクスチャを設定する方法を解説します。
材質は「〜_mat.inc」で設定されているので、そのファイルを開きます。
標準インクルードファイルを使用するので、とりあえず以下の命令をファイルのバージョンの指定の後に追加します。
#include "colors.inc"
#include "glass.inc"
#include "metals.inc"
#include "stones.inc"
#include "woods.inc"
#include "textures.inc"
#include "skies.inc"
#include "stars.inc"
ではまず、床を木目にしてみましょう。
床の材質は「M_Plane」ですから、「//M_Plane」の後が床の材質の設定となります。
//M_Plane
#declare metamega_mat_pigment_0 = pigment{
rgbf <255/255,255/255,255/255,0.0000>
}#declare metamega_mat_finish_0 = finish{
ambient 0.2500
diffuse 0.8000
}#declare metamega_mat_0 = texture{
pigment{ metamega_mat_pigment_0 }
finish { metamega_mat_finish_0 }
}
上記の赤文字の部分は必要ないので削除します。
そして、texture{ 〜 } の中にテクスチャ名を書き込めばOKです。
今回は「DMFWood6」という木目を指定してみます。
#declare metamega_mat_0 = texture{ DMFWood6 }
変更後、保存してからシーンファイル「〜.pov」をレンダリングするとこうなります。
ちょっと木目が大きすぎましたね。
大きさを調整するために「scale 0.1」という命令を追加します。
#declare metamega_mat_0 = texture{ DMFWood6 scale 0.1 }
すると木目が縮小(0.1倍)されます。
では同様に円柱の材質も変更してみましょう。
手前の円柱の材質「M_1」と奥の円柱の材質「M_2」を以下のように修正します。
//M_1
#declare metamega_mat_1 = texture{ T_Glass4 }//M_2
#declare metamega_mat_2 = texture{ T_Gold_4A }
手前は透明なガラス、奥は金色の金属としました。
これをレンダリングするとこうなります。
奥の円柱はしっかりと金色になりました。
しかし、手前の円柱のガラスは何か変です。
これはガラスなのに屈折してないからですね。
では、屈折させるにはどうすればよいのか?
POV-Rayはバージョン3.1以降、屈折はtextureの中ではなく、interiorで設定されることになりました。
したがって、この材質の設定をしたインクルードファイルでは設定できません。
そこで今度はオブジェクトの形状を設定している「〜_obj.inc」を開きます。
この手前の円柱は「obj1」として定義されているので、この長いファイルの中から
object{ obj1 }
という行を探してください。
そして、{ 〜 } の中に、屈折を設定する「interior { ior 1.2 }」という命令を追加します。
(1.2というのは屈折率なので、各自適当な数値を指定しましょう)
object{ obj1 interior { ior 1.2 } }
これでレンダリングするとこのようになります。
とりあえず、これで完成です。
今回はtextureを標準インクルードファイルのものと置き換えましたが、標準インクルードファイルの中には、木目のpigmentや発光体のfinishなどもあります。
それらを使用する方法は簡単で、
//M_Plane
#declare metamega_mat_pigment_0 = pigment{ ● }#declare metamega_mat_finish_0 = finish{ ◆ }
#declare metamega_mat_0 = texture{
pigment{ metamega_mat_pigment_0 }
finish { metamega_mat_finish_0 }
}
上のように、最初の状態で、pigment { 〜 } の中と finish { 〜} の中を置き換えればよいだけです。
第六回までの内容とはかなり離れたような気がしますが、まあ、POV-Ray関連の解説ですので・・・
次回は・・・まだ何も予定はありません。