Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

Organization

POV-Rayのコマンドライン実行とiniファイルの書き方

はじめに

これは POV-Rayによる数学お絵かき入門 Advent Calendar 2017 の3日目の記事です.

前回作成した画像

には

などの問題がありました.
これらの条件を指定するには, 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ファイルと同じ場所)に配置します.

test.ini
[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の段落を読み込むための命令です. hoge800hoge400に置き換えれば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を配置すれば可能です.

この設定でレンダリングした結果を次に示します.

povray.ini
Width=500
Height=500
Antialias=On
test.pov
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{ }のパラメータを設定する必要があります.
次回はこれについて書きます.

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What are the problem?