読者です 読者をやめる 読者になる 読者になる

aokcub::Blog

/PIC|dsPIC|Perl|Terragen3|風景CG|CSS3/

Painted Shaderを使ったPopulationの分布指定

Terragen2

Terragen2 入門 もくじ

はじめに

今回はPainted shaderでお絵描き感覚で草木を生やす方法について書きます. Painted shaderはβ版で追加された機能です.というともう4年くらい前の話ですが,Terragen 2に関する日本語チュートリアル記事はβ以前にリリースされていたTechnology Preview時代に書かれたサイトが多いため,ほとんど取り上げられていません.日本語化マニュアルさんを除くとある程度解説したのは日本語サイトでは初.だと思う.

Painted shader自体はオブジェクトだけでなく地形,雲,陰影等どこでも使えるShaderです.本来ならShaderがどのように働いているのかを取り上げてからにすべき気がしますが,それはまた今度書くつもりです.気力があれば(おい

「ちょうてきとうなTerragen 2かいせつ」シリーズ第11話の続きみたいな感じですが,少し応用になってあのシリーズのコンセプトに反するかなと思ったので別で. あと,あの雰囲気でこの話を書くのちょっと辛かった

試してみる

さて,このシーンでは今,BL02a_Sweet_Birch.tgoのpopulationが置かれています.

1

ここでこのような順序でPainted shaderを作り,そのダイアログを開きます.

2

3

出ましたね.とりあえず何も考えずに"Brush size in meters"を100に,"Flow"を1にしてください.

4

5

それができたら,3Dプレビュー上部のボタンから下の図のようにたどってください.

6

なんか雰囲気変わりましたね.

7

そのまま地形の上でマウスの左ボタンを押しながら動かしましょう.

白い線が引けましたね.

8

線を消そうと思ったら"Eraser mode"に切り替えることで消せます.もう一度描くにはその上の"Paint mode"に戻します.

9

10

全部消したければPainted shaderダイアログの"Clear"を押せばいいです.

11

さて,今このままだと線を少し引くたびにプレビューの再描画が始まり,少しうざいです.そこで,プレビューの描画が落ち着くまで少し待ちます(だいたいRendering detailが80になるくらいまで)

12

そこまで待ったらプレビュー左上の"Pause"ボタンを押します.すると,プレビューのレンダリングが一時停止します.

13

その状態で好きなように線や絵を描きましょう."Brush size in meters"を変えると線の太さを変えられます.

14

終わったらプレビュー左上の"Pause"ボタンを押し,描画を再開させておきます.そして,"Stop painted shader"でPainted Shaderから抜けます. ここまでやったらもう何が起きるか予想がつくと思いますが,"Populate Now"ボタンで木を生やしましょう.

15

はい,この通り.

16

"Invert density shader"にチェックを入れることで,「塗ったところには生やさない」こともできます.

17

実例

Painted shaderを使った草木の配置の実例を示すために,ちょっと前にアップしたこのCGを取り上げます.

Waterfront (deviantART)

このシーンでは6種類の草花,木をPopulationを使って配置しています(注:フリー版では一度に使えるのは3種類までです).

20

このうち,1, 2, 6についてはDistribution shaderを使って高さを制限するだけでできますね.しかし3, 5についてはそれではできません.

そこでPainted shaderを使っています.

3番の草(カメラの後方上部から俯瞰):

21

5番の花(同上):

22

さて,ここまではDistribution shaderまたはPainted shaderをそれぞれ単独で使っています.ここで,4番の草について見てみましょう. 下の図は4番の草の配置です.

23

Distribution shaderを使って水面の少し上から,1番の木が生え始める高さの少し上までの範囲に配置しています.その上で,5番の花が生えているところは生やさないようにしています.これは,Distribution shaderで4番の草に高さの範囲を指定したうえで,"blend by shader"として5番の花の"Painted shader"を反転したもの(Invert blendshaderのチェック)して指定しています."blend"なので,つまりこの二つのshaderが混ぜ合わさった結果になります.

24

25

<補足>

実際の動作としては,まず"Painted shader"の範囲を見ます.その反転なので,「ここには生やさないぞ!」という情報が"Distribution Shader"に伝わります.そして,その生やさない範囲と,"Distribution shader"で指定した範囲(ここでは高さ)の情報が合わさり,上の図のようにぽっかり空いた空間が生まれます.

</補足>

このように,Painted shader(やDistribution shader,または他のシェーダー)をうまく組み合わせることで,植物の複雑な棲み分けを実現することができます.

Painted shaderノードのパラメータ

書こうと思ったけど日本語化マニュアルさんの"シェーダー"の章に説明があったので省略. 普通は"Use absolute brush"を使って描くことになると思います.

30

公式WikiでのPainted shader nodeの説明はこちら.

http://www.planetside.co.uk/wiki/index.php?title=Painted_Shader

その他

Painted shaderはpopulationだけでなく,大気やシェーダーについても使うことができます.これらについてはやったことが無いので触れません.このあたりのページが参考になると思います(英語).

http://www.planetside.co.uk/wiki/index.php?title=Painted_Shader_Guide

http://www.mrlamppost.com/tg2/guides/paintsky.htm