AKAGI Rails

鉄道模型シミュレーターで遊んでいたはずが、気づいたらPythonなども。

VRMNXのレイヤーベース地形を使ってみよう(前編)

(5/18 23:43 テクスチャーを修正)
(5/19 21:15 一部リライト)

VRMNXの新しい機能のひとつに「レイヤーベースの地形」があります。これを使って海のようなシーナリーを試作してみました。

Gtex_lay

Gtex11_sea

Gtex11_sea2

ごらんのように,微妙なグラデーションの塗り合わせができるので表現の幅が広がります。

レイヤーベース地形では,4枚のレイヤーの「透明度(0.0~1.0)」に基づいて最大4つのテクスチャーを合成することができます。(公式マニュアルも参照。図がわかりやすい。)ここでは濃いブルーのレイヤーの上に,薄いブルーのテクスチャを乗せて海面を表現しています。要するに薄いブルー境界部分は半透明になっていてお互いの色,模様がブレンディングされます。

VRM5の地形ブレンディングは,グループの違うテクスチャパターンの境界が滲むような感じでブレンドされる仕様でしたが,要するにNXでは,レイヤーの違うテクスチャ同士を半透明に重ねてブレンディングする感じです。

レイヤーが4層ということは,VRM5では6種類(または12種類)の地面種別をブレンディングの効くものとして使えていたけど,NXでは4種類に減ってしまうの?と気になりますよね。

互換モードを使わないのであれば,実質的にYESではないかという気がしています。

でも,できるだけたくさんの地面種別(草,水,砂利,etc)がなんとかうまいことブレンドしてくれるような,うまい4レイヤーの使い方がないか。

4色定理に基づいた方法をひとつ考えたので紹介します。

4色定理

  • (飛び地などのない普通の地図に限って言えば)地図は,かならず4色で塗り分けられる
  • 平面グラフは,4彩色可能である

まずは,理屈を抜きにしてやり方だけを説明しましょう。


(Step 1) レイアウトで使いそうな地面の種別を紙に書き出します。

Gtex_step1

(Step 2) 隣り合ったときにブレンディングしたい組み合わせに線を引きます。このとき,線どうしが交わらないようにします。
うまく線が引けないときは,配置をずらしてまた試すか,線を何本か諦めます。

Gtex_step2

(Step 3) 地形種別に0~3のレイヤー番号を振ります。このとき,線でつながっている種別どうしが同じ番号にならないようにします。
引いた線が交差していなければ,必ず番号を振り切ることができます。(ここが平面グラフの頂点彩色=4色定理)

Gtex_step3

(Step 4) Step3までにできた図に基づいてテクスチャーを描きます。


Step2やStep3はパズル的なところがありますが,「絶対に線を交差させない」を守れば,Step3までたどり着くことができます。

この状態ではまだまだ余裕があるので,もう少し欲張って,次の図を書いて,テクスチャーにしてみました。ここでは(やや)裏技的なこととして,「草原」をLayer-0とLayer-1の2枚に配置することを前提として,それ以外の地形種別の配置を考えています。

Gtex_ex

Layer0_1 Layer1_1 Layer2 Layer3

ご使用の際は4x4分割の指定にして使ってください。水回りのテクスチャーにパターンを割きすぎたような気もしますが,これでいろんな地形をテクスチャーで表現できるはずです。まだ空きもあるので,個別のニーズに基づいてテクスチャを追加することもできます。

もちろん,4つのレイヤーにすべて同じテクスチャーを指定すれば,あらゆるパターンでブレンディングを自在に行うことが理論上は可能ですが,この場合は「地図の4色塗り分け」をレイアウトを作りながらその都度考えなくてはならず,作業性があまり良くないものと思われます。


まとめ

レイアウトを作る前にテクスチャーで表現する地形の種別と,隣り合ってブレンディングしたい組み合わせを予め想定しておくことで,使いやすい地形テクスチャーの作り方をご紹介しました。

後編ではレイアウター上での塗り方をご説明したいと思いますが,若干バグっぽい挙動を発見したのでI.MAGICに確認中です。それが終わり次第執筆するかもしれませんし,そのまま忘れるかもしれません(笑)


VRM界隈で,NXに関する話題がPythonばかりで退屈だという鬱憤もあるようですが,私も全くそのとおりだと思っていましたので(いや,オレがPythonの話しかしてなかったんだけど・・・),今回はレイアウトづくりの話をしてみました。

最近はNXレイアウターの出来はずいぶん完成してきた印象がありますので,これまで尻込みしていたみなさんもVRMNXを試してみてはどうでしょうか。