POVRAY基礎講座
 
1.はじめに
 ちょっと真面目にPOVRAYを解説してみようかと思う。POVRAYを使って
どんな事が可能かは素敵な機能を見てもらうとして、POVRAYの 扱いかたを
ちょっと書いてみようかと。
 間違いとかあったり、解説が不十分だったりするかもしれないが、
気が付いた人はメールで知らせてくれるととても良い。なんか俺偉そう。
なお、白い字で書いたプ ログラムは他には何が?でダウンロード出来るはず。
 
2.POVRAYの歴史
 あまり深く知らないので簡単に書くが、「3Dレイトレーシングをもっと身近に、
もっと手軽に色々な人に楽しんでほしい。」と願う人々が集まって、彼らの余暇を
利用してPOVRAYの開発が始まった。
 POVRAYはフリーソフトでありそのくせ機能はかなり高い。
「フリーな物がそんなに機能が高いはずがあるかいな、」と思う人もおるかもしれない が、
そんな考えはPOVRAYのサンプルシーンをレンダリングすれば消えるだろう。
 POV-TeamはCompuServeと呼ばれる所(日本のNiftyServeみたいな物だと思う)に
POVRAYフォーラムというものを開設していてそこに本拠地を構えている。頑張れ。
 
3.レンダリングの仕方
 POVRAYを適当なディレクトリに展開したらDocsdemoとかPov3demoとかPovscnとかいう
ディレクトリが出来てると思うんやけど。そん中にさがしたら拡張子がpovのファイルが あるやろ?
つまりatmos1.povとか。それを
povray +Iatmos1.pov +W320 +H240 +D
みたいに実行すんねん。
ちなみにDos用はautoexec.batでpovray.exeのあるディレクトリをpathで指定するよう に。例えば
SETPATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\MYPROG\DOS\POVRAY3
みたいな感じ。
Windows用はpvengine.exeっていうのを実行すればよい。ほんで適当なpovファイルをopen したら良い。
そしてrenderingのボタンを押せば良い。
 
うーん、機種ごとにちょっと違うし、詳しくは自分で追求して。もしくはメールくれ。
 
ちなみに*.povファイルとは別に同じディレクトリに*.iniファイルがある場合、例えば
pov3demoのanimのambientの中。ambient.povとambient.iniとstdcam.incっていうのがあ る。
そんときは povray ambient.ini ってやるとそのシーンを書いた人が望む形でレンダリン グ出来る。
 
4.POVファイルってどんなもの?
 ambient.povとかatmos1.povとか、こういうファイルを「POVファイル」と呼ぶことにし よう。
これは僕が勝手に決めただけで、POV-Teamとか日本の他のユーザーがなんて呼んでるかは 知らない。
POVファイルはテキストファイルで、DosならEDITで、Windowsならメモ帳とか秀丸で、 UnixならEmacsとかで
編集出来るファイルである。
サンプルファイルを見れば、どういう風に書けばどういうシーンがレンダリングされるか わかってくると思う。
頑張れ。
こんな書き方では2度と僕のページに来てくれないので少し書いてみようかと思う。
camera {
 location <0, 5, -3>
 look_at <0, 0, 0>
}
light_source { <10, 20, 0>
 color rgb <1.0, 1.0, 1.0>
}
sphere { <0, 0, 0>, 2
 texture {
  pigment { color rgb <0.8, 0.2, 0.7> }
  normal { bumps 0.1 scale 0.2 }
  finish {
   ambient 0.2
   diffuse 0.4
   reflection 0.4
   specular 0.5
  }
 }
}
plane { y , -4
 texture {
  pigment { checker rgb <0.3, 0.6, 0.3> rgb <0.1, 0.3, 0.7> }
  finish { ambient 0.4 }
 }
}
 
こんなファイルをレンダリングするとこんなのが出来る。下の。
カメラとライトと球と板
ちなみに上の画像はpovlec1.jpgと言う名のJPEGファイルですが
JPEGファイルという物はデータの大きさは小さいのですが、
元々のデータをある程度失ってしまいます。なんとなくぼやけていて
球の影のタイル等にムラがあるのが見えると思います。
POVRAYにより生成されたpovlec1.tgaと言う名のTARGAファイルは
もっと綺麗ではっきりとした画像です。
なお、球にムラがあるのはもともとです。
 
camera {
 location <0, 5, -3>
 look_at <0, 0, 0>
}
この部分はカメラの設定です。
カメラの位置を3次元でx座標を0に、y座標を5に、z座標を-3に、また
カメラが見るところを x座標を0に、y座標を0に、z座標を0にしています。
なお、座標軸の向きはPOVRAYの標準では下のような左手座標系というものです。
            ^+Y
            |   /+Z
            |  /
            | /
  -X        |/       +X
  <---------|--------->
           /|
          / |
         /  |
      -Z/   |
            v-Y     
カメラの設定にはもっと色々な設定がありますが、最低限必要な物は
このくらいだと思います。
 
light_source { <10, 20, 0>
 color rgb <1.0, 1.0, 1.0>
}
この部分は光源、ライトの設定です。x座標10、y座標20、z座標0にライトを置きます。
で、ライトの色は Red、Green、Blueの光の3原色でそれぞれ1.0、1.0、1.0の強さです。
つまり白い光です。強さは0から1.0だと思います。なんか適当。
 
sphere { <0, 0, 0>, 2
 texture {
  pigment { color rgb <0.8, 0.2, 0.7> }
  normal { bumps 0.1 scale 0.2 }
  finish {
   ambient 0.2
   diffuse 0.4
   reflection 0.4
   specular 0.5
  }
 }
}
ここは一杯書いてしまって後悔している。
sphereは球のことです。球の中心を<0,0,0>に、半径を2にしている。
ここからがちょっと複雑そうですな。
texture { という文はここからテクスチャー(物体の表面の属性)を設定します、と言って る。
pigmentはどんな色から出来ているかを指定する。
赤0.8、緑0.2、青0.7の強さである。紫っぽいっすね。
normalは表面のでこぼこを指定する。bumpsは普通のでこぼこにする事を指定し、
0.1の深さ、0.2の幅を指定する。
球の白っぽく光ってるところなんかでこぼこやね。
normalには他にも色々ありますねん。
finishは仕上げ?みたいなもので、
ambientは光りが当たってないところがどの位の明るさに見えるか、
環境光ってやつです。
diffuseは光りが当たっているところがどの位の明るさに見えるか、
拡散光ってやつです。
reflectionは周りの風景がどの位映るかを
指定する。球にチェックが映ってるやん。
specularは球の光沢です。白っぽく光ってますね。
finishは他にも色々ある。ちゃんと勉強した方が良い物が出来ると思うっす。
 
plane { y , -4
 texture {
  pigment { checker rgb <0.3, 0.6, 0.3> rgb <0.1, 0.3, 0.7> }
  finish { ambient 0.4 }
 }
}
planeって平面のことです。y座標が-4のところを無限に?続いています。
textureが始まって、pigmentが始まって、checkerはチェックです。
あとの二つの色のチェックになります。
finishが始まってambient、環境光ですね。
これはあっさり終わりました。
 
POVファイルとはこんな感じです。
 
5.おい、アニメーションってどうやんだ?
 POVRAYで静止画像は作れるようになりましたか?綺 麗、上手いは別として、
とにかくできたら次はアニメーションを作ってみましょう。
静止画像で面白い物が出来なくても、アニメでは作れるかもしれん。
アニメを作る原理は、少しずつ変化のある静止画像をたくさん作って
それらを動画にするソフトで加工します。そんでアニメの出来上がり。
では頑張れ。
すみません、いつもつまらない事ばかり書いて。
 
まず、少しずつ変化のある静止画像を作る為にclockという機能を使います。
具体例を示します。
camera {
 location <0,3,-7>
 look_at <0,0,1>
}
light_source {
 <30,300,-30>
 color <1,1,1>
}
plane {y,0
 texture {
  pigment {checker color <0,1,0> color <0,0,1>}
  finish {ambient 0.3 diffuse 0.3}
 }
}
sphere {<0,0,0>,1
 texture {
  pigment {color <1, 0.2, 0>}
  normal {bumps 1 scale 0.1}
  finish {ambient 0 diffuse 0.5}
 }
 rotate <0,0,-clock*360*6/6.283>
 translate <-3+clock*6,1,0>
}
 
sphere文のrotateとtranslateというのがありますね。
rotateは回転を、translateは位置移動を指示します。
上のファイルをいつもどおりにレンダリングすると、
POVRAY +I umeboshi.pov +W320 +H240
みたいな感じでしょうか。
こうした場合、clockのところは0になります。で、生成される画像を見ると
左の方に赤い梅干しの様な物が見えると思います。
ところが、
POVRAY +I umeboshi.pov +W320 +H240 +KFF60
と実行すると
clockが効いてきます。+KFF60というのは静止画像を60枚作ります。
つまり、umeboshi01.tga,umeboshi02.tga,,,,,,umeboshi60.tgaが出来ます。
ごめん、Dosやったらumebos01.tga,umebos02.tga,,,,umebos60.tgaかもしれん。
なんと、Win95でもumebos01.tga,,,umebos60.tgaになってしまう。<追加
その過程でclockの値は0から1に少しずつ増えていきます。
つまり、umeboshi01.tgaが生成されるときclockは0です。
umeboshi02.tgaが生成されるときはclockは0.01694ぐらいでしょう。
umeboshi60.tgaが生成されるときはclockは1になってると思います。
1/(60-1)の値が増えていく値です。
この辺の解説はちょいとあやしいかも。
なんとか少しずつ違う静止画像が60枚できたでしょうか?
この下でそれを動画ファイルにしていきます。
 
Dosの場合、
Flicムービーを創ろうと思ったら、
DTAというソフトでFlicという動画(*.flc,*.fli)を作れ るぞ。
Netscapeなどでは表示出来ないが、動画のファイルでは結構有名?
DTA umeboshi*.tga /Oumebo
とやるとumebo.flcちゅうファイルができる。で、
umebo.flcの見方ですが、とりあえず
playflc.exeというプログラムがありました。
Dosプロンプトから
playflc umebo とやるとMovieが始まると思います。
0から9までの数字でスピード調整、Escキーで終了です。
赤い梅干しのような物体が左から右へ転がっていき、突然左に飛んで
またころころ。そうなると思います。
ただし、Win95とかでplayflcを使う場合、Dosプロンプト は
フルスクリーンでやった方が良さそうです。
ハングったらごめん。
MPEGムービーを創ろうと思ったら、
CMPEGっちゅうのを使うのがよろしいかと。
umebos01.tga,,,umebos60.tgaをMPEGムービーにするには
cmpeg -v1 -t01 -ipb.ctl umebos%02d.tga umeboshi.mpg
やと思う。が、バグかなんか知らんけどumebos00.tgaが 無いと
エラーが出る。だからumebos01.tgaをコピーして umebos00.tgaをつくって
上のコマンドを実行しようぜ。
俺の使い方が間違ってんのかもしれへんけど、それやったら分かりづらいぞ。
で、ばっちりActiveMovieで再生出来た。
ちなみにcmpeg.exeとかipb.ctlとかのファイルは小さいので
umebos01.tga等があるディレクトリにコピーして使ったらええんとちゃうやろか。
MPEGムービーをどうやって見んねん?
vmpegちゅうのでいけるわ、きっと。
と思ってたんやけど、なんか面倒やしdmpegっちゅうのを使おう。
dmpeg -d4 -s1 umeboshi.mpg
でええんとちゃうかな。
自分の環境でちょいと変更。
ほな。
MPEGはこんなもんでいいやろ。
AnimGIFは調査中、というかDosでAnimGIFって聞いた事無 いぞ。
再生ソフトや作成の為のソフト、あんのか?
これを探す必要があるかどうかも疑問である。
よってリクエストがあれば探してみるが、今のところは放置。
   
Win95の場合、
Flicムービーを創ったり見ようと思ったら、
Dosと基本的に一緒です。DTAplayflcを使ってください。
たぶん、Flicファイル再生に関してはもっと良いプログラムがあるはずです。
探してみますが、playflcはなかなか高速です。
playflcはフルスクリーンで実行。
ありました。Win用のFlic再生ソフト。aawinです。
「知ってたよ僕は。」という声がかなり聞こえてきそうです。Thanx>funkyさん
MPEGムービーを創ろうと思ったら、
Dosと基本的に一緒でしょう、きっと。
うん、やっぱCMPEGや ろ。おれはCMPEGを使った。
ActiveMovieで再生出来たから文句ない。
Win95用のGUIでMPEGを創るフリーソフトなんて聞いた事無い。
作れん事はないやろけど、見たことは無い。
MPEGムービーを見ようと思ったら、
ActiveMovieVMPEGでっしゃろか。
ActiveMovieで問題ないんやけど、VMPEGはMPEG再生専用だけあって
いろいろ細かい設定ができる。やっぱVMPEGちゃうかな。
スピードも速そうやし。ConfigureのVideoのFramesはAllで良いと思う。
再生ウインドウはサイズを変えられるぞ。
AnimGIFの作成方法やねんけど、
フリーのGIFAnimatorを 使ってみたんやけど、どうもうまくいかん。
別に創れへんわけじゃないけど、なんか使いづらい。
GIFAnimatorがMovieを作成するのに向いていないのかもしれへんけど。
で、できた物を下に示す。
 
tantaka
 
くだらないMovieだが一応POVファイルを書いておく。
と、思ったがあまりにもへたくそで、汚らしいPOVファイルなので
ここには見せず、ダウンロードにしておく。これ です。
これをレンダリングすると
POVRAY +I animchar.pov +W320 +H50 +KFF60
やねんけど、Win95の場合、animchar.povを開いて、Renderの
Edit Settings/Renderの中の、Command line optionsに
+W320 +H50 +KFF60 などを書き加えるのだ。
animch01.tga,,animch60.tgaができるだろう、
たぶん。
レンダリングしてみればわかると思うが本来は何も無いところへ
文字が流れてくるのをねらったPOVファイルだ。
で、PaintShopProで60個 のファイルをまとめてGIFファイルにする。
BatchConversionとかいう機能だ。やってみてちょ。ほんで
GIFAnimatorを起動して画像ファイルを左側の四角いところにドラッグ
するのだが、60個ぐらいのファイルをまとめてドラッグすると
上の方、つまり始めに再生されるファイルはanimch60.gifとなってまう。
くそう。おまけにTranseparencyとかUndrawMethodとかをいちいち
60個のファイルに対して指定しなくてはならん。めんどい!
なんとかならんのかと試行錯誤してみたがわからん。だめだ!
で60個のファイル全てに対してTranseparencyを無効にした。
デフォルトではTranseparency、たぶん透明色が黒になってるので
背景が透明になる。別に良いけどやっぱ嫌。でUndrawMethodやねんけど
まだよくわからん。べつにそのままでええかもしれん。
ほかにはLoopingはRepeatForeverにせなあかんやろな。
Previewで再生出来るぜ。
ほんで、気に入ったらセーブ。でirfanviewとかNetscapeとかで見る。
うまくいってたらよしとする。うまくいってなかったら俺かあなたか
GIFAnimatorかPaintShopProかNetscapeかirfanviewのせいではなかろうか?
追加です。ええと、フリーのAnimGIF作成のソフトを探し ているときに
なかなかナイスなソフトをゲット致しました。GIAMというソフトです。
これ自体AnimGIF作成のソフトなんですが、今のところ複数ファイルを
一括してAnimGIFにする事は出来ないという事を除けば、かなりよろしそうです。
なぜかというとPOVRAYにより生成されるTarga画像をサポートしています。
GIAMを作った方もPOVRAYをよろしく思っているようです。
ほんで、このソフトで作ったAnimGIFは容量が小さい。つ・ま・り
HPに載せて他の人が見るときすぐ見れる!上のくだらんムービーは
もとは90KBほどでしたが、GIAMで読み直してセーブし直したら
55KBほどになりました。これはすげーや。
ちなみにTarga画像を読み込ますときはこまの付け足し、挿入を使おう。
 
 
Unixの場合、
Flicムービーを創ろうと思ったら、
ppm2fliというプログラムがありました。
勘の良い人はわかると思いますが*.ppmを*.flcに変換します。
「ぐはっ!umeboshi01.tga,,,umeboshi60.tga作ってもうたっちゅうねん!」
という方、ごめんなさい。tgatoppmというプログラムがありますんで
それでumeboshi01.ppm,,umeboshi60.ppmに変換しましょう。
使い方はかなり不安であるが、foreachというのを使うとよさそうだ。
% foreach image (umeboshi*.tga)
? tgatoppm $image > $image:r.ppm
? end
みたいな感じであるらしい。が、foreachは一般のコマンドではなくCシェルの
コマンドであるそうだ。だから普段Cシェル使っていない人は
% csh
などと実行してから上のを実行すると何とかなるんではないかと思うんです。
Unixはほとんど知らないので嘘八百を書いてまうかもしれんが許して。
ちなみに$image:r.ppmの:rは元々ある拡張子(tga)を取り去って、
ppmを新たな拡張子として付ける、ということだそうだ。
「俺まだ作ってへんけど。」
という方、良かったすね。でもファイル変換のプログラムは何かと
便利みたいなので持ってて損はないっすよ。たぶん。
povray +I umeboshi.pov +W320 +H240 +KFF60 +FP
とやってください。+FPをつけると
umeboshi01.ppm,,umeboshi60.ppmを作ります。
そして、ちょっと、いや、かなりだるいねんけど、適当なファイルに
umeboshi01.ppm
umeboshi02.ppm
..............
..............
..............
..............
umeboshi60.ppm
と書きます。umeboshi01.ppmのppmの後でスペースキーとか押したらあきまへん。
ppm2fliで文句いわれます。これ何とかしたいねんけど、つい最近見つけた
ばっかりなんでちょっと研究中。
上で作ったファイル名がanim-fileならば
ppm2fli anim-file umebo.flc でumebo.flcができるんちゃうん。
ほんで、
Flicムービーを見ようと思ったら
xanimで再生できまっせ。
xanim umebo.flc でOKちゃいまっか?
MPEGムービーを創ろうと思ったら、
mpeg_encode-1.5bを使うのが良さそうですぜ。
で、いじってみた。sample.paramなどという名を付けたファイルに必要事項を記入して、
mpeg_encode sample.param
と実行するのだ。Win95のActiveMovieでも再生出来た。よしとする。
誰かのHPからMPEGムービーをゲットしてもActiveMovieで再生できひんかったこと
結構あったしなぁ。で問題のsample.paramやねんけど、
# Simple parameter file

OUTPUT          ./tantaka.mpg
GOP_SIZE        15
SLICES_PER_FRAME        1

BASE_FILE_FORMAT        PPM
PPM_SIZE        320x50

INPUT_CONVERT   *

INPUT_DIR       /root/CG/povray
INPUT
tantaka*.ppm    [01-60]
END_INPUT

PATTERN         IBBPBBPBBPBBPBBPBBPBBP

# quality parameters

IQSCALE         4
PQSCALE         5
BQSCALE         12

# motion vector search parameters

PIXEL           HALF

RANGE           10 4

# LOGARITHMIC, TWOLEVEL, SUBSAMPLE, EXHAUSTIVE
PSEARCH_ALG      LOGARITHMIC

# CROSS2, SIMPLE
BSEARCH_ALG     CROSS2

# DECODED or ORIGINAL
REFERENCE_FRAME ORIGINAL
細かい意味とか全然わかってないままやけど、
これでいけた。出来たらええねん、出来たら。基礎講座やし。
変更しなあかん所は
OUTPUT
PPM_SIZE
INPUT_DIR

INPUT
tantaka*.ppm
END_INPUT
のあたりでしょうな。
Unixいじるような人はこれぐらいへのかっぱですね。
見たらわかると思いますが、tantaka01.ppm,,tantaka60.ppmから
tantaka.mpgを作ります。
もっと詳しく知りたい方はマニュアルを読みましょう。
MPEGムービーを見るときは、
mpeg_playを使った。俺は。xanimのMPEG再生は一部分し かできへん。
で、何も考える事あらへん、
mpeg_play tantaka.mpg などとやればエエはず。
 
AnimGIFを創りたーい場合、
WhirlgifってのをGetしたっす。いじってみたっす。
静止画のGIFを集めてAnimGIFを創れます。
tgatoppm,ppmtogif等を使ってGIFファイルを作ってください。
foreachの使い方はちょっとだけ上に書いてます。ほいで、
whirlgif -o umeboshi.gif -loop 0 -time 1 umeboshi*.gif
やってみそ。umeboshi01.gif,,umeboshi60.gifからumeboshi.gifっちゅうAnimGIFを
無限ループで速いムービーとして作るであろう。
AnimGIFを見たいんだ俺は!
まぁ、落ち着け。たしかxanimで見れたんじゃなかったか。
まあNetscapeで見るというのが一番良いかもしれんし。
 
ちなみに白い字で書いて るプログラムはコンパイルせなあかんかもしれません。
が、ここではそこまで書きません。
が、要望があれば。
 
Macの場合、
やっぱマックと言えばQuickTimeMovieであります。
マック版POVRAYはデフォルトでpictファイルを生成するようで、
pictファイルを複数選び、MooVerというプログラムのアイコンにドラッグすれば
QuickTimeの動画ができるようです。
そしてできたファイル(.qt?.mov?)をMoviePlayerというプログラムのアイコンに
ドラッグすれば動画を見れるはず。
りゅむさんにかなり教えて頂いた。それをもとに書きました。
 
GIFBuilderとかいう奴が 君のGIFAnim作成を手伝ってくれるぞ!
おそらく。きっと。がんば。
 
りゅむさんがMacPOVのHPを創ってはる。POVRAYのリンクか ら行って。
 
WARNING
このページはPOVRAY基礎 講座なので画像ファイルの減色とかについては
一切省いておりますのであしからず。
なお、このページには間違い、うそ、などが含まれている可能性があり、
その内容により著しく気分を害する場合がありますので、
18才未満の方はご遠慮ください。うそ。
 
BACK