POV-Ray のウォーミングアップ

今回から中間試験まで,プログラミングの対象を 3D-CG とする. 3D-CG 記述言語 POV-Ray を利用し, 複雑なシーンのアニメーションを効率的に記述できるようになろう.

今回は,初心者用の学習キットで練習し,POV-Ray の雰囲気をつかもう.


とりあえず使ってみる
モデリング(シーンファイルの編集)

モデリング(modeling)とは,CG の設計作業のことだ. POV-Ray の場合,人間が シーンファイル(拡張子:.pov)を エディタで編集することになる.

なお,シーンファイルをゼロから作るのは大変なので, 今回はとりあえず,シーンファイルのサンプル test.pov をダウンロードして使おう. (本日の作業用ディレクトリにダウンロードせよ.)

このシーンファイルの内容をエディタで確認してみよう:

$ gedit test.pov &

今回はまだ,内容を理解できなくても良い.

レンダリング(画像の作成)

レンダリング(rendering)とは,CG の描画処理のことだ. POV-Ray の場合,povray コマンド によって, コンピュータがシーンファイルを画像ファイルへ自動的に変換してくれる:

$ povray  test.pov

うまく行けば,画像が(一瞬だけ)表示された後, 画像ファイル test.png ができているハズ.

$ ls
test.png    test.pov
結果確認(画像の表示)

画像を再確認するには,display コマンドを使えばよい:

$ display  test.png &
この display は, 画像処理ソフト集 ImageMagick の一部であって, POV-Ray 専用のものというわけではない. 画像表示の他の手段としては,ウェブブラウザも使えるし, 最近の Linux では,eog コマンドとかでもよい.

またはレンダリングの際, コマンドにオプション +P を指定すれば, 結果表示を一時停止(pause)できる.

$ povray  +P  test.pov

場合に応じて,これら2通りの方法を使い分け, 作業を効率的に進めよう. 例えば:

もう少し具体的に?

  • 単純なシーンの場合,レンダリングは一瞬で完了するので, 毎回レンダリングしなおすのでも問題はない. → +P 方式だけでも OK.
  • 複雑なシーンや高品質な画像の場合, レンダリング処理には相応の時間(数分〜数時間!〜数日!!)がかかるので, 毎回レンダリングし直すのは非効率. → +Pdisplay を併用.
  • アニメーションのように複数枚の画像を連続的・自動的に生成したい場合, 1枚ずつ確認するのは非常に面倒. → +P は不使用.
povray コマンドの使い方

povray コマンドの一般形は,こんな感じ:

$ povray  オプション引数  シーンファイル名

次表のような,複数のオプション引数を自由に組み合わせ可能である.

povray コマンドの主要オプション
引数意味既定値
(ver.3.7)
+P画像を表示したまま一時停止
+W整数画像の横方向のサイズを指定800
+H整数画像の縦方向のサイズを指定600
+A実数画像の微細度(品質)を指定1.0

ここで,画像サイズについては,通常は, 縦横比が 4:3 になるように指定する必要がある. また,微細度については,値が小さいほど高品質になる.

縦横比を変更したい場合,シーンファイル内で,その旨の指定が必要になる. が,初期段階では気にせず,最終仕上げ段階で変更すればよい.

なお,解像度が高い(サイズが大きく,微細度が小さい)ほど, レンダリングに時間がかかってしまう. この原則に注意して,作業を効率的に進めよう. 例えば:

シーンファイル作成の練習

今回は肩慣らしのためのお遊びです. 中学生向けの POV-Ray 体験コースを試してみよう.

この体験コースでは,F1 マシンの部品があらかじめ用意されているので, 作業はプラモデル感覚で,作品は簡単に出来上がってしまう. 今後は,より基本的な形状を元にして, 必要な部品を独自に作り出して行くことになる. もちろん題材は,F1 に限らず,自由だ.

ちなみに,POV-Ray では,レイトレーシング(ray-tracing)等の 高度なレンダリング手法が利用されており, モデリング次第では,極めて現実的 or 幻想的な画像を生成できる. また,特別研究などで説明図の作成に利用すれば, プレゼンの説得力が増すかもしれない. 次回から,さまざまな技を習得して行こう.

本日の課題

POV-Ray でオリジナル F1 マシンの CG を作成せよ.

担当教員へレポートを送信せよ: