• 7
    7DTD WIKI 共同管理人 2016/12/18 (日) 16:27:16 修正

    2つの地形の組合わせ--TerraGenその2

    前回は、丘と平地からなるなめらかな地形を作りました。今回は標高が高く稜線の入った山脈と、なめらかな低地をミックスします。

    moduleの種類

    FastNoise

    特徴のない波を-1.5~1.5くらいに発生させる

    FastRidgedMultifractal

    標高が+の地域が稜線のように連なった地形の波を-1.5~1.5くらいに発生させる。

    Select

    2つの地形を切り貼りして1つの地形にする。

    FastTurbulence

    地形を歪めて特徴を持たせる。

    とりあえず山を作ってみる

    まずはワールド全体に山を生成させて、ScaleとFrequencyの調整を行います。標高に関しては合成したときの影響を考える必要はありません。ScaleBiasOutputで目標の高さまで調整してください。
    今回は、前回は特に説明していないfrequencyについて詳しく触れていきます。

    frequencyを変えながら生成した結果は上段になります。(左から、frequency=0.25、0.5、1です。)下段は、その山を使って作れる最終的な地形です。0.5前後が良さげですね。

    mountain

    frequencyは地形の波の頻度を変えますが、それは言い換えると標高の緩急を変更するということです。今回は特に山の緩急に関わるパラメータとして出てきます。

    同様に平地も作っておきます。

    こちらはfrequencyを上げればボコボコと荒れた地形が、下げれば滑らかな地形ができます。
    land

  • 8
    7DTD WIKI 共同管理人 2016/12/20 (火) 01:36:55 修正

    平地と山の合成

    ここまでに作った2種類の地形を合成していきます。使うのはSelectのmoduleですが、これがなかなか複雑です。

    合成したい2つの地形をsourceMoudule1、sourceModule2にそれぞれ設定し、controllModuleには別の波を設定します。これは処理速度も考えてFastNoiseで作成したものをそのまま入れるのがいいでしょう。このcontrollModuleと次に設定するboundsの組み合わせが、2つのsourceModuleが現れる比率を決めます。controllModuleがboundsの範囲内の時sourceModule2が、範囲外の時sourceModule1が生成結果になります。
    Scale

    物は試しです。生成してみましょう。continentMixedのmoduleでは、continentControllerが0以下の時にlandScaledが、continentControllerが0以上の時にmountainScaledが生成されるようにしています。(continentControllerが100を超えることはありません。)

    RawContinent
    生成結果を見ると、平地と山の地域に分かれていることが分かります。ここでboundの左側の値を+方向にずらす、つまりboundsの範囲を狭めると、山が占める割合が減っていきます。(右に行くほどboundsの左側が1.5に近づきます。)

    BoundsValue

    そして、controllerModuleのfrequencyを増やすことで、ひとつひとつの平地・山両方の面積が減ります。逆に値を減らすことで面積は広くなります。Selectのboundsと、controlModuleのfrequencyを調整することで、大規模な山が時々生成する大陸部や、平地がたまにしか生成されない山脈部といった表情豊かな地形が作れます。

  • 9
    7DTD WIKI 共同管理人 2016/12/20 (火) 21:37:24

    ただしこのままだと、山と平地の境界線がかなりはっきりしていて、自然な地形ではありません。2つの地形の境界をなめらかにするにはedgeFalloffを使います。これは、2つの地形の境界線になるboundsの両側で、なめらかにぼかす範囲を指定します。

    これで境界付近がなめらかになりました。
    felloff

    山に特徴を付ける

    最後は調整です。ここではFastTurbulenceを用いて連なる山脈を作ったり、山肌を荒くしたりします。これについては、文章を読むよりも実行の結果を見て、それぞれのpropertyにどういった効果があるのか知るのが分かりやすいです。

    下の画像では、frequencyとpowerを変えた時の地形の変化を表にしています。
    freq_pow

    どちらも低いと、元の地形から変化はなく、frequencyが高くpowerが低いと、ノイズの入った様な地形になり、
    frequencyが低くpowerが高いと、引き延ばされたような地形になり、どちらも高いと、元の地形は失われます。
    バランスを見つけるのは難しいですが、これが最終的な地形に大きくかかわるので、しっかりこだわるべき場所です。
    間違ってもバニラのような極端な値にするのはやめましょう・・・・。

    続いて、roughnessですが、これはfrequencyの違う変形済みの地形をいくつ重ねるか指定します。1~30の整数を指定できますが、これを2倍にすれば処理時間も2倍になります。個人的に1でも良いと思います。下の画像は、左からroughness=1,2,4,8,16の地形です。
    rough

  • 10
    7DTD WIKI 共同管理人 2016/12/21 (水) 01:55:12

    最後に

    さて、ここまでで平野と山の地形生成について話してきましたが、実はワールド生成に必要な知識はこれで全てです。
    ここまでの方法を使って川、湖、山、平地を作りました。

    こーんな感じです
    画像1
    画像2
    画像3
    画像4
    画像5
    画像6
    画像7
    画像8

    バイオームは調整が必須ですね。

    次回からは、バニラの地形生成の検証や、珍しい地形を生成する方法を考えていこうと思います。

  • 11
    7DTD WIKI 共同管理人 2016/12/22 (木) 14:42:04

    調べててちょっと思ったのは、実際の標高とterrain_generatorの標高が違うんでは?
    ということですね。

    少し高め、というか、急な形で生成されている気がします。
    biasを使えば検証自体は簡単なので、生成限界と一緒に調べてみましょう。

  • 12
    7DTD WIKI 共同管理人 2016/12/26 (月) 20:54:25

    調べてみました。
    Y座標の0~255がElevationの-60~194に対応。
    TerrainGeneratorではElevationの値に対応する。
    0,255には破壊不可、ブロック設置不可の空間があり、1~3には岩床ブロックがある。

    地形生成の限界範囲は0~222.5で、0まで下げた状態だと、水が中空に浮いている。
    この状態は、水は不可侵ブロックに支えられているわけではないので、荷重再計算が行われるとワールド中の水が崩落してクラッシュする。(絶対試しちゃダメだぜ!)
    (街は32~?)

  • 13
    7DTD WIKI 共同管理人 2016/12/30 (金) 09:48:07

    さて、このページをWIKIにまとめていきたいわけですが、全部そのままコピペとかすると、文字数制限か行数制限であぼんです。

    それぞれのパラメーター説明と、PREVIEWERだけ張り付けていれば、試行錯誤好きな人は自分でできると思います。
    でもどうせなら、調べたことは書いておいた方が時間の短縮になると思うんですよね。

    とここまで書き連ねて、XML書き換え用WIKIを全く更新してないことにきづく。
    あれ使えば良いのでは。

  • 14
    7DTD WIKI 共同管理人 2016/12/31 (土) 19:24:42

    いつも参加してる放送での一コマ
    画像1
    私の地形生成を使ってくれてるんですけど、これはひどすぎるw

    ちょっとね、さすがにもうちょっとうまくやらないとね・・・、これ結局陸地には上がれませんでした。
    山岳地域に川ができると、渓谷みたいになってしまうようです。

    川の生成は平野だけ、山岳地域にはたまに崖とかにする方がいいかもしれません。

  • 15
    7DTD WIKI 共同管理人 2017/01/02 (月) 21:49:22 修正

    いろいろ検証するほどによくわからないことになりますねぇ・・・
    まず、rwgmixerで生成された地形は-30されてからbiomes.xmlに送られます。

    そして、そこでは0~255の表記を基準に水やら土やら石の配置が行われると。

    うーむ、変換がスパゲッティーなことになってるので、いずれきれいにされるんだと思いたいところです。

  • 16
    7DTD WIKI 共同管理人 2017/07/30 (日) 01:01:10

    ここからα16

    α16でも使い方はほぼ同じなものの、地形生成にちょこっと変更が加わりました

    まず、Blendを使った時のweightModulecontrolModuleに変更されました
    元々Blendを使えていた人は少ないと思うので、ここはあまり関係ないですね

    Clampをかませないでも、OutputModuleが限界高度を超えないように、若干修正してくれるようになりました
    これははみ出た部分をすりきりで真っ平らにするわけではなく、標高=限界高度の部分はそのままで、標高>限界高度の部分をへこませてるような気がします
    でも結局限界高度で平らに見えちゃうので私としてはあまり気に入りませんねぇ
    どうにかうまいこと自然にできないものかなぁ・・・

    .
    .
    .

    それから、地形生成以外にも、街の形を自由にいじれるようになったので、こっちの方をしばらくやっていこうと思います。
    地形生成に関しては、今までの物をα16でうまく動くようにしたら、しばらくはあまり手を加えないかも?

    Twitterにも貼ったけど、地形生成は今のところこんな感じです。

    画像1
    画像2
    画像3
    ↑ちょっと水が生成されやすくなった気がするので、ここは直しときたいところ
    画像4
    画像5
    画像6
    ↑このくらいの山が個人的にちょうどいい
    画像7
    ↑すごいところに拠点を構えるトレーダー
    画像8
    ↑ちょっと山を険しくしすぎた時の画像
    画像9
    画像10