というわけで本日の成果はこちら パッチワーク地形生成…とでもいうのだろうか いわゆるMinecraft特有の役割付けされた地形を生成したいと思った たとえばここで緑を平地として、薄青を丘とするといい具合に「それっぽく」見えると思う pic.twitter.com/7TuEDQt38s
— Takafumi Fukuyo (@TakafumiFukuyo) 2014, 12月 7
というわけでTwitterにこういったpostをした。
書ききれないところと、ソースコードの構成の解説をしたい。
ソースコードはgithubにアップロードしておいた。
https://github.com/TakafumiFukuyo/LookLikeTerrain/tree/master/ChildrenDraw
簡単に説明すると、ランダムウォークする4つの点(増加可能)が、既存の描画部分を上書きするか否かをランダムに決定しつつ、手持ちのペンの色(ランダム)とサイズ(固定)でキャンバス内を塗りつぶしていく。
キャンバスがすべて塗りつぶされたら終了である。
点は初期位置と最大到達可能距離、そして上書きするかどうかの毎ループごとの決定に使う値(powerと呼んでいる)を持っている。
1ループごとに、ランダムな角度と到達可能距離以内の範囲を極座標系でえらび、そこまでまっすぐに塗りつぶす(塗りつぶし可能であれば)。
ペンの情報は単純にintである。デバッグ用の描画関数がintをColorに変換してTexture2Dに入力している。
キャンバスの1単位分の情報が0のとき塗りつぶしていないと判定している。
単純にランダムにキャンバスを塗っていくだけなので、きまぐれな子供のような動きと思って名付けたのだが、これがなかなか面白い模様を作ってくれるように思える。
動かすまでまさかそんなうまく行くわけないと思っていたのだが。
このあとこのキャンバスの情報から塊の情報を得て、その塊に対して特定のアルゴリズムで地形を作る。
最後に地形の境界をなだらかにしてやれば、およそMinecraft風の「役割付けされた地形」のようなものができるように思える。
…ところでMinecraftの実際の地形生成はどうなっているのだろうか…。企業秘密というやつだろうか…。
0 件のコメント:
コメントを投稿