はじめに
これは POV-Rayによる数学お絵かき入門 Advent Calendar 2017 の3日目の記事です.
前回作成した画像
には
- 画像サイズ固定 (800x600)
- 画質が悪い (アンチエイリアスが効いていない)
などの問題がありました.
これらの条件を指定するには, POV-Rayの実行時に幾つかの引数を与えれば可能です.
コマンドラインからの操作
iniファイルの説明の前に, コマンドラインからの実行について少し記述します.
コマンドラインの基本
今まではAtomからscript(パッケージ)を経由してレンダリングを行っていました.
つまり, Atom上でCtrl+Shift+B
で実行すれば
Ubuntu:
povray FILENAME
Windows:
pvengine /EXIT /RENDER FILENAME
が裏で走るようになっています.
(FILENAME
には適当なpovファイルが指定されます)
Windowsにおいて余計にある引数は次の意味があります.
-
/EXIT
: レンダリング終了時にPOV-Rayのウインドウを閉じる命令 -
/RENDER
: レンダリング実行の命令 (これが無ければ付属エディタでファイルが開かれるだけになります)
詳しくは例えば次を参照してください.
http://wiki.povray.org/content/Documentation:Windows_Section₃#Special_Command-Line_Options
コマンドライン引数
POV-Rayで指定可能なコマンドライン引数は沢山ありますが, ここでは例としてWidth
, Height
, Antialias
を説明します.
横400px, 縦300px, アンチエイリアス有効 とするためにはこれらのパラメータを用いて次のように指定します.
Ubuntu:
povray FILENAME Width=400 Height=300 Antialias=On
Windows:
pvengine /EXIT /RENDER FILENAME Width=400 Height=300 Antialias=On
このようにして画像のサイズやアンチエイリアスの有効化が可能になります.
よく使われる他のパラメータとして, アニメーションのための+KFF
などがありますが, これについては第9回で説明する予定です.
iniファイル
レンダリングの度にコマンドラインにすべての引数を書くのは面倒なので, POV-Rayではiniファイルが用意されています.
iniファイルの基本
例として次のようなtest.ini
を用意し, 作業ディレクトリ(povファイルと同じ場所)に配置します.
[hoge800]
Width=800
Height=600
Antialias=On
[hoge400]
Width=400
Height=300
Antialias=On
このiniファイルを使うには次のコマンドを実行します.
Ubuntu:
povray FILENAME test[hoge800]
Windows:
pvengine /E /RENDER FILENAME test[hoge800]
このコマンドによって, iniファイルに書き込んだ引数が読み込まれてレンダリングが行われます.
解説
- コマンドラインでの
test[hoge800]
はtest.ini
の中のhoge800
の段落を読み込むための命令です.
hoge800
をhoge400
に置き換えればiniファイルの下側に記述したパラメータでレンダリングが実行されます. - iniファイルでは行頭にセミコロン
;
を書けばコメントとして扱われます.
より詳しいiniファイルのオプションは以下を参照してください.
http://www.povray.org/documentation/3.7.0/r3_2.html#r3_2
iniファイルの場所
さて, 前回まではコマンドライン引数を与えなければ
Width=800
Height=600
が指定されていたのでした.
実はこの設定は/etc/povray/3.7/povray.ini
(Ubuntu), POV-Ray\v3.7\ini\povray.ini
(Windows)に記述されています.
(WindowsでのPOV-Ray
ディレクトリはインストール時にしていしたディレクトリで, 通常はDocuments
直下に配置されます)
つまり, POV-Rayではコマンドライン引数が省略された場合にはこのファイル(povray.ini
)を参照して足りないパラメータを補っています.
さらに, POV-Rayでは同一ファイル名のiniファイルが作業ディレクトリと通常参照ディレクトリあった際には, 作業ディレクトリ内のiniファイルが優先されるようになっています.
よって, Atom上のscriptからコマンドラインから回すためには作業ディレクトリにpovray.ini
を配置すれば可能です.
この設定でレンダリングした結果を次に示します.
Width=500
Height=500
Antialias=On
camera{
perspective
location <2,1,2>
look_at <0,0,0>
}
light_source{
<2,3,4>
color rgb<1,1,1>
}
background{rgb<1,1,1>}
sphere{<0,0,0>,0.2}
cylinder{<0,0,0>,<1,0,0>,0.1 pigment{rgb<1,0,0>}}
cylinder{<0,0,0>,<0,1,0>,0.1 pigment{rgb<0,1,0>}}
cylinder{<0,0,0>,<0,0,1>,0.1 pigment{rgb<0,0,1>}}
このようにして, アンチエイリアスを効かせたレンダリングが出来るようになりました.
次回予告
さて, お気づきの方が殆どだと思いますがWidth
, Height
を指定しただけでは画像が引き伸ばされるだけで, 実質的なアスペクト比が変わる訳ではありません.
これの調整はiniファイルだけでは出来ないため, povファイル内のcamera{ }
のパラメータを設定する必要があります.
次回はこれについて書きます.