072 · 生成

walls

細かいグリッドに fBm ノイズで高さを与え、高さで塗ってバイオームを、等値線で洞窟の壁を描く。一枚に見えて、場のいくつかの技法が順に積み重なっている。

格子点をその場で結ぶと、結ぶ順しだいで辺が交差したり鋭く尖ったりする。代わりに各点へ高さを置き、同じ高さをたどる線を引く。

高さは value ノイズの重ね合わせ。整数格子のランダム値を smoothstep で補間して連続なノイズにし、周波数を倍にしながら振幅を半分にして 4 枚重ねる(fBm)と、大きな山と細かい起伏が混じった有機的な地形になる。これを階調に量子化してセルをブロックで塗ると、谷が暗く山が明るい高度図 = バイオームの段になる。同じ素材から地形を起こす流れは ノイズで高さ場をつくる にもある。

洞窟の壁は marching squares で引く。各セルの四隅の高さを閾値と比べ、閾値をまたぐ辺の上で交点を線形補間し、セル内でその交点どうしを結ぶ。隣り合うセルの交点は辺を共有するので線が途切れずつながり、構造上どこでも交差しない。四隅すべてがまたぐ鞍点だけは、中心の高さの内外で対角の結び方を選んで交差を避ける。閾値を変えれば洞窟の広さが変わり、複数の閾値で引けば等高線の地図になる。CA で空洞を広げる別経路は CAで洞窟を彫る にある。