#break | #case | #debug | #declare |
#default | #else | #end | #error |
#fclose | #fopen | #if | #ifdef |
#ifndef | #include | #local | #macro |
#range | #read | #render | #statistics |
#switch | #undef | #version | #warning |
#while | #write |
#include " FILENAME.inc " | ||
#include | インクルード・ファイルを読み込むキーワード | |
" FILENAME.inc " | 40文字以下(またはコンピュータの制限内)のファイル名 ※ .incはインクルード・ファイルの拡張子 ※ ファイル名は " " で囲まなければならない。 |
#declare IDENTIFIER = ITEM #local IDENTIFIER = ITEM |
||
#declare #local |
識別子を宣言するキーワード | |
IDENTIFIER | 識別子の名前(40文字以下) | |
ITEM | 識別子のタイプ。下記のものはすべて識別子として宣言できる。 ●実数、ベクトル、色 ---> 最後にセミコロン(;)を付けることを忘れないこと。 ●文字列表現 ●変形(transform) ●物体(object) ●テクスチャ、ピグメント、法線、フィニッシュ、インテリア、メディア、密度 (texture、pigment、normal、finish、interior、media、density) ●カラー・マップ、ピグメント・マップ、スロープ・マップ、ノーマル・マップ 、密度マップ (color_map、pigment_map、slope_map、normal_map、density_map) ●カメラ(camera) ●光源(light_source) ●大気(atmosphere) ●霧(fog) ●虹(rainbow) ●天球(sky_sphere) ●変形(transform) |
#declare Rows = 5; #declare Count = Count+1; #local Here = <1,2,3>; #declare White = rgb <1,1,1>; #declare Cyan = color blue 1.0 green 1.0; #declare Font_Name = "ariel.ttf" #declare Rod = cylinder {-5*x,5*x,1} #declare Ring = torus {5,1} #local Checks = pigment { checker White, Cyan } object{ Rod scale y*5 } // not "cylinder { Rod }" object { Ring pigment { Checks scale 0.5 } transform Skew }
#declare Here=<1,2,3>; #declare Count=0; // 変数の宣言と初期化 union { object { Rod translate Here*Count } #declare Count=Count+1; // 再宣言(この場合Countは1になる) object { Rod translate Here*Count } #declare Count=Count+1; // 再宣言(この場合Countは2になる) object { Rod translate Here*Count } }
3.2-1 #declare と#local の違い
#undef IDENTIFIER |
|
#undef | undef を指定するキーワード |
IDENTIFIER | 無効にしたい識別子の名前 |
#fopen IDENTIFIER "filename" OPEN_TYPE |
||
#fopen |
#fopenを宣言するキーワード | |
IDENTIFIER |
識別子の名前(40文字以下) | |
filename |
ファイル名(40文字以下) | |
OPEN_TYPE |
read, write, append の3つのどれかを指定する。read は読み込みモードとしてファイルが開かれる。write は、書き込みモードとしてファイルが開かれる。ファイルが存在しない場合には新規に生成され、ファイルが既に存在する場合には頭から上書きされる。append は、書き込みモードとしてファイルが開かれるが、既に存在するファイルの場合は最後に追加して書き込まれる。 |
#fclose FILE_HANDLE_IDENTIFIER |
||
#fclose |
#fcloseを宣言するキーワード | |
FILE_HANDLE_IDENTIFIER |
ファイルの識別子 |
#read( FILE_HANDLE_IDENTIFIER, DATA_IDENTIFIER[,DATA_IDENTIFIER]...) |
||
#read |
#readを宣言するキーワード | |
FILE_HANDLE_IDENTIFIER |
ファイル識別子 | |
DATA_IDENTIFIER |
データが読み込まれる識別子。宣言されていない識別子の場合は自動的に#declareで宣言された識別子として生成され、データが読み込まれる。文字列, 実数, ベクトルの読み込みができる。 |
#read(Myfile, mystring, myfloat, myvector)
"POV-Ray", -123.55, <1,5,8>3.3-4 #write の宣言
#write( FILE_HANDLE_IDENTIFIER, DATA_IDENTIFIER[,DATA_IDENTIFIER]...) |
||
#write |
#writeを宣言するキーワード | |
FILE_HANDLE_IDENTIFIER |
ファイル識別子 | |
DATA_IDENTIFIER |
データが書き出される識別子。文字列, 実数, ベクトルのどれかである。実数は浮動小数点として出力される。配列のコントロールが必要ならば、str(VALUE,L,P)機能を使うべきである。ベクトルは3つの浮動小数点としてコンマ区切られ、ブラッケットを付けて出力される。 |
#declare Val1 = -123.45; #declare Vect1 = <1,2,-3>; #write (MyFile,"\"A quote delimited string\",",Val1,",",Vect1,"\n")
"A quote delimeted string" , -123.45, <1,2,3>
#default { texture { pigment {...} normal {...} finish {...} } } |
||
#default | デフォルト・テクスチャを指定するキーワード | |
texture | テクスチャを指定するキーワード ⇒「12. テクスチャ1」 | |
pigment {...} | ピグメントの指定 ⇒「12.1 ピグメント」 | |
normal {...} | ノーマルの指定 ⇒「12.2 ノーマル」 | |
finish {...} | フィニッシュの指定 ⇒「12.3 フィニッシュ」 |
#default { texture { pigment { rgb <1,0,0> } normal { bumps 0.3 } finish { ambient 0.4 } } }
#declare Original_Default = texture {} // POV-Rayの元のデフォルト・テクスチャ #default texture { ... } // デフォルト・テクスチャを変更 ... // ここでは変更したデフォルト・テクスチャ ... // が適用される。 #default {texture {Original_Default}} // 元のデフォルト・テクスチャに戻す
を記述するだけである。
#if(COND) TRUE_ITEM ... #else FALSE_ITEM ... #end |
||
#if (COND) | 条件指示を指定するキーワード。 CONDの部分には論理値を評価する実数表現を指定する。 結果が0.0であれば否、そうでなければ真と評価される。※ 1e-10程度のきわめて小さい値は0とみなされる。 | |
TLUE_ITEM ... | CONDが真のときに解析される部分 | |
#else FALSE_ITEM ... |
CONDが否のときに解析される部分 ※ #elseはオプションであり、指定されていなければ#endに向かう。 |
|
#end | 条件指示の終了を示すキーワード |
#declare Which=1; #if (Which) box { 0, 1 } #else sphere { 0, 1 } #end
#switch (VALUE) #case (TEST_1) または #range (LOW_1,HIGH_1) ITEM_1 ... #braek ... #case (TEST_n) または #range (LOW_n,HIGH_n) ITEM_n ... #braek #else ELSE_ITEM ... #end |
||
#switch (VALUE) | 条件指示を指定するキーワード。 VALUEの部分には#case及び#rangeと比較する実数表現を指定する。※ 比較の結果、値の差が1e-10以下であれば等しいと見なされる。 | |
#case (TEST_n) ITEM_n |
VALUE = TEST_nのときに解析される部分 TEST_nにはVALUEと比較する実数表現を指定する。 | |
#range (LOW_n,HIGH_n ITEM_n |
LOW_n≦VALUE≦HIGH_nのときに解析される部分 LOW_nとHIGH_nにはVALUEと比較する実数表現を指定する。 | |
#break | それぞれの#case、#range の終了を示すキーワード | |
#else ELSE_ITEM |
すべての#case、#rangeが否であった場合に解析される部分 ※ #elseはオプションであり、指定されていなければ#endに向かう。 | |
#end | 条件指示の終了を示すキーワード |
#switch (VALUE) #case (TEST_1) // VALUE=TEST_1のとき、ここを実行 #break //1番目のcase文の終わり、ここで終了 #case (TEST_2) // VALUE=TEST_2のとき、ここを実行 #break //2番目のcase文の終わり、ここで終了 #range (LOW_1,HIGH_1) // VALUE>=LOW_1でかつVALUE<=HIGH_1のとき、ここを実行 #break //3番目のcase文の終わり、ここで終了 #range (LOW_2,HIGH_2) // VALUE>=LOW_2でかつVALUE<=HIGH_2のとき、ここを実行 #break //4番目のcase文の終わり、ここで終了 #else // どのケースにもあてはまらないとき、ここを実行 #end // swich文の終わり
#declare C = INITIAL_VALUE #while ( C < END_VALUE ) ITEM ... #declare C = C + N #end |
||
#declare C = INITIAL_VALUE | 繰り返しの初期値の設定。 Cは繰り返しの回数を制御する識別子であり、INITIAL_VALUEには繰り返しの初期値を指定する。 | |
#while ( C < END_VALUE ) | 繰り返しを指定するキーワード。 #whileから#endでを繰り返す。 CがEND_VALUEより大きくなったところで繰り返しは終了する。 | |
ITEM ... | 繰り返す内容 | |
#declare C = C_INC | Cを増加させる宣言。 C_INCにはCを増加させる式を指定する。 例) #declare C = C + 1 |
|
#end | 繰り返しの終了を示すキーワード |
#declare C=0 #while (C < 2) #declare D=0 #while (D < 20) object{Tree translate <C*10, D*5, 0>} // y方向に間隔5で20本並べたものを // x方向に間隔10で2列に配置する #declare D=D+1 #end #declare C=C+1 #end
図3.6.3 #whileの使用例
3.8-1 #macro の宣言
#macro IDENTIFIER ( [PALAM_IDENT][, PALAM_IDENT]…) TOKENS… #end |
||
#macro |
マクロを宣言するキーワード | |
IDENTIFIER |
識別子の名前(40文字以下) | |
PALAM_IDENT |
コンマや括弧で分けられたパラメータの括弧はパラメータがなくても必要。 | |
TOKENS… |
マクロの記述部分 | |
#end |
マクロの終了 |
3.8-2 #macro の呼び出し
MACRO_IDENTIFIER ( [ACTUAL_PALAM][, ACTUAL_PALAM]… ) |
||
MACRO_IDENTIFIER |
マクロの識別子 | |
ACTUAL_PALAM |
識別子や変数などを指定する。 |
#macro Frame (OW ,OH, IW, IH, D) // OW-外側の幅、 OH---外側の高さ #declare Horz = (OH-IH)/2; // IW---内側の幅、IH---内側の高さ #declare Vert = (OW-IW)/2; // D---深さ difference{ box{<0,0,0>,<OW,OH,D> pigment{color Red}} box{<Vert,Horz,-0.1>,<OW-Vert,OH-Horz,D+0.1> pigment{color Blue}} } translate<-OW/2,0,0> #end object{Frame(8,10,7,9,3)} // macro の呼び出し |
上記のマクロを使用し、複数回呼び出して作成した画像が下記のものである。