2010/01/08

Blender - シーンの自動生成(3)

20100108_1

前回は大まかに踊り場を作るところまでやりましたが、今回はさらに以下の変更を加えました。


  • (1)踊り場の形状をタンジェントとか使って厳密に計算した

  • (2)道路同士をなめらかに繋ぐようにした



と、さらっと書きましたが、実装は結構面倒でした。

(1)は、各頂点について、上から見た時の辺の角度(9時の方向を -PI として反時計回りに大きくなる)で辺をソートして、隣り合う辺から生成される道路同士の交点を計算した後に、各辺について左右の交点のうち手前の方に合わせて逆側の点を作って、これらの凸包を踊り場にする...という感じのことをやっています。

(2)は、水平面との角度が踊り場の 0 から坂の角度になるまで、坂と踊り場の間にちょっと傾いたポリゴンを作っていきます。ポリゴンを入れるたびに坂の角度がちょっとずつ急になるのに気付かずハマリ。


拡大図。

20100108_0

あと、よく考えたら道路がない部分に地面を作らないと。道路が全部平らなら地面ポリゴンを1枚置けばいいですが、傾斜があるのでうまいこと地面を生成しないといけないかもです。方針としては、元のグラフ構造からループ部分を検出してポリゴンを作る感じでしょうか。。あと、立体交差のときは地面いらないとか考えないといけなさそうです。む〜ん。