Nanashi-softプログラマ専用POV-Ray


◇POV-Ray (ポブレイ) -球で円を描くをアニメーションしてみよう-

○どういう意味か?

前のページで球で円を描きました。
この動きをアニメーションさせてみようと思います。

○ツールの設定

アニメーション・レンダリングの方法はヘルプに載っていません(探しても見つからない)
インターネット上で検索しても、回転とか移動とか、難しいワードが多くてアホな私には意味が分かりませんでした(^^;
もっと直感的に説明して下さい(誰に言ってるんだか(^^;)

POV-Rayはそのままでは 1枚絵しかレンダリングできません。
レンダリング時の起動オプションで指定を行います。
メニュー ==> Render ==> Edit Setting/Renderを選択するとダイアログが表示されます。
その Command line options:に「Initial_Frame=最初のフレーム Final_Frame=最後のフレーム」を記述します。

問題は、このフレーム数をどうするか? です。
前のページで描いた球の数を数えると 32コですので「Initial_Frame=0 Final_Frame=31」と指定しましょう。

○どのようにフレーム制御するか?

色々と英語のページを調べたところ、一番分かり易い方法はコレでしょう。
clockと言う変数に、0~1の間の数値が返って来ます。

もっと分かり易く言うと、3フレームのアニメーションの場合、
1フレーム目は clock=0
2フレーム目は clock=0.5
3フレーム目は clock=1
になります。
フレーム数が 10なら、0.1づつ増加していきます。

例えば、1座標から、10座標まで移動させたい場合

#declare Start =  1.0;
#declare End   = 10.0;
#declare X     = Start + (End - Start) * clock;

この Xを座標として使えば、アニメーション可能です。
こうする事で、後でフレームを変えても、正しくアニメーションしますよね。

○球で円を描くスクリプトをフレーム制御する

変数 Iの値を制御すれば良いでしょう。

#declare Start = 0.0;
#declare End   = 3.14 * 2;
#declare I     = Start + (End - Start) * clock;
sphere { <cos(I) * 4, sin(I) * 4, 10>, 0.3
    pigment { color rgb <1,1,1> }
}

light_source { <10, 20, -10> rgb <1,1,1> }

こんな感じです。
前よりもシンプルで見易くなったぐらいですね。

○レンダリングする

普通にメニュー => Render => Start Renderingして下さい。

そうすると、xxx00.bmp~xxx31.bmpの 32枚の画像ファイルが生成されます。
そうです、aviとか mpegとか気の利いたフォーマットでは無く、1枚1枚ベタフォーマットで出力されます。
調子に乗って 1000フレームとか指定するとドエラい事になるので注意して下さい(^^;

○アニメにする

そのままではアニメとしては見られないので、アニメにしてみます。
AviUtlが分かり易くて良いと思います(日本語ですし(^^;)
http://ruriruri.zone.ne.jp/aviutl/

AviUtlは、普通の方法では1ファイルづつしか読み込めません。
それは当然で、名前通り、AVIファイルを編集する為のツールだからです。
以下の手順にて、bmpファイルを一気にツールへぶち込みます。

1. AviUtを起動
2. エクスプローラにて、bmpファイルを 0から順に選択(選択する順番は重要)
3. 一番先頭の 0番の bmpファイルを AviUtlにドラッグ&ドロップする(どのファイルをマウスでクリックしているかは重要)

後は普通に、メニュー => ファイル => AVI出力にて保存して下さい。

AVIファイルは大きいので、GIFアニメで保存してみました。


ついでに、Z方向へも回っているものも作ってみました。

#declare Start    = 0.0;
#declare End      = 3.14*2;
#declare I = Start+(End-Start)*clock;
sphere { <cos(I) * 4, sin(I) * 4, 10>, 0.3
    pigment { color rgb <1,1,1> }
}
sphere { <cos(I) * 4, 0, 10 + sin(I) * 4>, 0.3
    pigment { color rgb <1,1,1> }
}

light_source { <10, 20, -10> rgb <1,1,1> }



こうしてアニメすると、Z方向への動きも良く分かりますね(^_^)


TOPプログラマ専用POV-Ray


Melonbooks DL