Fu-Ken's Room

POV-Ray でイロイロやってみよう!

第七回 背景画像を作ってみよう(後編)

前回は宇宙空間でしたが、今回は地上の背景を作ってみます。
地上の背景といってもイロイロ考えられます。
場所で言えば、都市、森、海など。
時間帯によって空の色なんかも変わりますし、カメラ位置(高度)なんかも問題になりますね。
今回は POV-Ray だけではなく、様々なアプリを駆使して背景画像を作ってみようと思います。

1. 自然の風景

自然の風景を最も簡単に作成することの出来るツールとしては Terragen があります。
背景画像コンバータの説明書にも Terragen での背景用画像の作成方法が書かれています。
さて今回は、地表付近にカメラを設置して遠くに山々が見えるという情景を作成したいと思います。

概念図

つまり、今回作成する背景画像を遠景として使用し、近景は3Dのオブジェクトを作成するといった使い方を前提とした背景画像ということです。

まず、Terragen で地形を作ります。
中心付近に円形の平野を作成するのは Terragen ではちょっと難しいので、この地形をメタセコイアで修正することにします。
Metasequoia LEの場合、ハイトフィールドで地形を作成することは出来ないので、Terragen から Lightwave形式で出力したファイルを読み込みます。
シェアウェア版の場合は、Terragen から ter形式で出力して bmp形式に変換した画像、あるいは Terragen の作業画面をキャプチャーして得られた画像を「凸凹地形」でモデル化することができます。

新規オブジェクトで平面を追加し、地形モデルよりやや下に置きます。
平面を編集不可にして、地形データの中心付近をマグネットツールなどで変形していきます。
このとき、Y軸のみ変形可能にしておきます。

変形後画像

このように中心付近に平野ができたら、dxf形式で保存し、mirさんの作成したツールで ter形式に変換します。
この terファイルを Terragen の Landscapeパネルで開きます。
Terragen の地形データの数値で地表の高さ、山の高さなどを確認し、プレビューなどでも地形を確認します。
全体的に高くしたいとか低くしたい場合は、[Modify Terrain...]をクリックして、高さ方向の拡大縮小率を入力して[Scale Vertical]をクリックして地形を変形させます。
地表の色を設定して地形データが完成したら、雲、大気、太陽の設定をします。
今回の時間帯はお昼を想定し、また、解りやすい数値にしたいので、太陽は真南、地表からの角度は45度としました。
完成した地形としてはこんな感じです。

プレビュー

次に Rendering Controlパネルでカメラを設定し、レンダリングします。
Camera Position で x = 3840m,y = 3840m と設定します。
Fixed Height Above Surface(地表からの高さ固定)にチェックを入れ、2mの高さにします。
[Camera Settings...]をクリックして、Zoom/Magnification =1.0 とします。
(背景画像コンバータの説明書では0.97となっていますがそれは間違いです)
画像出力サイズを Width = 800,Height = 800 と設定し、Ditail を最高(一番右)にします。
Camera Orientation で head = 0,pitch = 0,bank = 0 として1枚目をレンダリングします。
ファイル名の最後に「1」と入れて保存します。
次に、head = 90 に変更して「2」、head = 180 で「3」、head = 270 で「4」とレンダリングしていきます。
head = 0 に直して、pitch = 90 で「0」、pitch = -90 で「5」とレンダリングします。

背景画像コンバータを起動し、前回の宇宙空間のときと同じように読み込んで作成すれば完成となります。

完成画像(小)

2. 都市の風景

今度は都市の風景を CityGen で作成し、背景画像用に加工します。
これも遠景用で近景は3Dモデルで作成することを前提にするので、都市の中心部に大きな空き地が必要となります。
CityGen で中心部の大きさを大きくし、ビルを外側ほど高くなるように設定してから作成します。
中心部のビルとストリートを削除して、大きな空き地を作成します。

CityGen

この都市を POV-Ray に出力します。(時間帯の設定は昼間)
都市だけでは背景としてイマイチなので、最初に作った山の背景画像も合成することにします。
つまり、ビルの谷間から山が見えるというような状況にしたいわけです。

CityGen で作成した都市は 768x768 の大きさなので、それに干渉しないで、照明などの設定にも余裕を持たせられる大きさの球の内側に先程の背景画像(backcg01.jpg)を貼り付けます。
内部の都市の影が背景に出ないように、ambient(環境光)を 1 に、diffuse(拡散反射)を 0 にします。

sphere { <0,0,0>,1 inverse
texture {
pigment { image_map { jpg "backcg01.jpg" map_type 1 } }
finish { ambient 1.0 diffuse 0.0 }
}
scale 10000
}

CityGen で作成された都市には基準となる無限平面や空、照明などがセットされているため、それらを削除します。

/* --- Light Sources --- */



・___(この部分を削除します)



/*-=-=-=-=-= End of Header =-=-=-=-=-=-*/

太陽は真南、地表から45度の位置にあるので、その位置にメインライトを設定します。

light_source { <0,0,0> color rgb 1
area_light <-1,-1,0>, <1,1,0>, 3, 3 adaptive 0
scale 10 translate <0,0,-9000> rotate <45,0,0>
}

既にセットされているカメラを削除し、前回作成した宇宙空間のシーンファイルからカメラの設定をコピーして貼り付けます。

#declare F = 1+clock*5 ;
#declare CT = <0,0,0> ;

#if (F = 1)
#declare CR = <0,0,0> ;
#end

#if (F = 2)
#declare CR = <0,90,0> ;
#end

#if (F = 3)
#declare CR = <0,180,0> ;
#end

#if (F = 4)
#declare CR = <0,-90,0> ;
#end

#if (F = 5)
#declare CR = <90,0,0> ;
#end

#if (F = 6)
#declare CR = <-90,0,0> ;
#end

camera { location <0,0,0> look_at <0,0,1> up <0,1,0> right <1,0,0> angle 90 rotate CR translate CT }

このとき、カメラの最初の命令を以下のように修正してカメラの高さを地表から1の高さにセットします。

#declare CT = <0,0,0> ; → #declare CT = <0,1,0> ;

コマンドラインオプションに以下の設定をしてレンダリングします。

Height=800 Width=800 +A +KFF6

6枚目のファイル名の「6」を「0」に直して、背景画像コンバータで変換して完成です。

完成画像(小)

3. おまけ

今回作成した2枚の背景は、どちらも地表付近でカメラを使用することを想定しています。
空中での戦闘や巨大ロボットの格闘のように高い位置にカメラをセットするようなシーンには使えません。
しかし、Terragen や POV-Ray でレンダリングするときのカメラの位置を調整して、それ用の背景画像を作ることは難しくありません。
Terragen で水面を追加すれば、海や湖の背景も簡単に作れますし、夕暮れや夜といったシーンの作成も、照明の変更、空の色の変更で簡単にできます。
都市の代わりに POV-Tree で木を大量に配置して、森の中の背景画像を作ってみるのもいいですね。
DoGA-L3 でアニメーションを作るとき、あらかじめ入っている背景の中に自分の考えるシーンにピッタリのものが無かったら、この方法で背景を作成してみてはどうでしょう?
今回の背景画像にしても、山や都市が少し遠くにしてしまいすぎたかもしれませんが、作り方さえ分かっていれば修正もそれほど難しくないと思いませんか?

■自然背景画像(JPEG/328KB/3072x1536)

■都市背景画像(JPEG/175KB/3072x1536

◆ NEXT ◆

◆ PREVIOUS ◆

◆ BACK TO SEMINAR ◆