木陰のある木が欲しいという要望があったので、ちょっと検討してみました。
今あるRailSimの樹木の主流はビルボードだと思っています。
ビルボードとは、1ポリゴンの長方形の板に樹木の透過画像を貼った単純なもの。RailSimではカメラの方向に対応してオブジェクトを自動回転させる設定が出来るので、ペラペラの絵でも常に正対した状態となってまるで立体の木がそこにあるように映ってくれるというものです。
しかしながら、ビルボードの実体はペラペラのポリゴンなので、RSの機能で影を落とそうと思っても長方形の影が出てしまいます。
RSの機能を使ってちゃんとした影を落とすならばフルポリの樹木を作ってあげないといけないのですが、これは手間も掛かる上に数百単位で配置する木を全てフルポリにするのはあまり現実的ではありません。
なので、今回は簡易シャドウを使って疑似的に木陰を用意してあげることにします。
単純ですね。ポリ数は2倍になりますが所詮2ポリです。
texは樹木用と影用(黒ベタ80%)で二つ用意しています。影のtexは別個に用意しなくても樹木用のものを黒く塗り潰して材質設定で半透明にすれば表現できるのですが、DayAlphaを使って日の出と共にボワッと影が浮き出るやつをやりたかったので影専用texを用意しています。
さてそれではこの影を動かしていきましょう。時刻の変化と共に影をどうやって動かそうかなぁと考えていたら、RSには光源の向きによってオブジェクトを自動回転させる便利機能もあるようで、これを使ってやります。
適用した結果がコレ。隣の便所はRSが描画するシャドウとの比較用です。
時刻と共に影は伸び縮みすることはありませんが、これだけ動けば簡易シャドウとしては十分でしょう。
+αで月ごとに影のポリゴンの長さを変えることで、夏は短い影、冬は長い影が出るようにしてみました。しかしこの機能、RSの時計の数字を拾っているので実際にその月まで時計を動かさないと影の長さが変わらないので微妙かもしれません。
また、簡易シャドウ系で悩みの種なのはZバッファの干渉によるチラつきですが、これはシャドウのポリゴンに微妙に傾斜を付けることで低減しています。(影の端の方を5cmくらい上げています。)
最後に使用例。影が付くことで、樹木が浮いてる感じがマシになっているのではないでしょうか。(特にこういった雪原では)
今回の樹木PIはtexにPhotoshopCCで自動生成されたイラスト5種を使用しています。また、透過設定を甘めにしているので場所によっては後ろのオブジェクトが透ける場合があります。(遠景で目立たない程度にしています。アンチエイリアスを活かしたいがための処置です。)
コメント