X-Plane11のシーナリーで島を作る方法
画面に表示されるツールと操作を整理し,自分のために「島を作る」ための資料を作りました。
この資料は既存の地形を修正する目的ではなく,実際には地形があるけれどもX-Plane11にない地形を復活させる方法を書いたものです。
例としてNIUE島を復活させた手順を説明いたします。
島を復活させる方法
地形を作成する大まかな手順
Laminar researchからは地形データ(Mesh)を作る公式ツールとしてmeshtoolが公開されています。
この記事を書いている時点でWindows版の最新バージョンは2.1r1で3.0β1も公開されています。
meshtoolは,緯度・経度各1度の範囲内のデータを元に地形を作成します。
これは,X-Plane11で利用するシーナリーや地形を記述するdsfファイルの仕様によるものです。
meshtoolは,Windows10のCGIであるコマンド画面で利用するコマンド型式のツールです。
私のような昔人間にとって,コマンドツールはCP/MやDOSで見慣れていて懐かしく感じるものですが,最近のGUIに慣れ親しんでおられる方にとってはとっつきにくいものだと思います。
また,このツールに与える命令は,スクリプトファイルにフォーマット(書き方)とコマンドの綴りを間違えないように書く必要があります。
meshtoolは,スクリプト内で使うコマンドを1文字でも間違えると,エラーメッセージもなく終了します。
meshtoolを初めて使ったとき,私は大昔に使ったFortranコンパイラを思い出しました(笑)
meshtoolに並べるパラメータは次のとおりです。
meshtoolは次のようなパラメータ(付帯情報)を書かなければ動かない仕様です。
(+:度数の前につける記号で北緯が+南緯はー,東経が+西経はーになります)
無理矢理日本語化すると次のようになります(^^;
各ファイル名を拡張子を省略せず正しく記述し,各ファイル名の間には1文字のスペースを入れます。
meshtool,スクリプトファイル,属性ファイル名および高度情報ファイルは,必ず同じフォルダー内に入れておきます。
スクリプトファイルを除く各データファイル名は,後ほど説明するページから探してダウンロードします。
仮にMeshtoolを入れたフォルダーを”C:\Mesh”という名前としたときの,NIUE島のコマンドラインは次のようになります。
NIUEを作ったときに利用した各データファイルをここからダウンロードできるようにしました。
これを利用してmeshtoolが無事に動くかどうかを確認してください。
スクリプトファイルは,皆様が作成されるスクリプトファイルのひな形にも利用できます。
利用するツール
Meshtool以外で利用するツールは次のとおりです。
すべて必要となるので,ダウンロードして導入を済ませてください。
導入先フォルダーは,プログラムフォルダー以外にするのが無難です。
ツールのダウンロード
メッシュツール
Laminar researchからダウンロードします。
2.1r1と3.0b1を両方ダウンロードして試して見てください。
今回の島作りでは3.0b1を使いました。
ポリゴンデータを作るためのツール
現在はフリーウェアになっている”Google Earth pro”を使います。
テキストエディタ
ポリゴンデータやスクリプトデータ編集にはメモ帳は使えません。
フリーウェアでは,”notepad++“が定評があります。
私は昔から「秀丸」を愛用しています。
正規表現でテキストを編集できるツール
フリーウェアでは”TextCrawler Free Edition“があります。
このツールは扱おうとするテキスト内の部分をハイライト表示してくれる機能があるので,英語版ですがGUIに親しんでいる方にも使いやすいと思います。
なお「秀丸」では正規表現を利用することができ,確認画面はありませんが失敗しても数操作前まで戻ることのできる機能があるので,TextCrawlerは不要です。
meshtoolを動かすために必要なデータ
スクリプトファイル作成手順の説明は,一番長くなるのでおしまいに書いています。
緯度経度
meshtoolを動かすためのデータは1度単位の緯度経度を知る必要があります。
今回NIUE島を対象とする緯度経度は,NIUE空港シーナリーから入手しました。
“Earth nav data”フォルダーの中にあるdsfファイルを探します。
“-20-170.dsf”ですから,南緯20度西経170度です。
属性ファイル(土地クラスファイル)
Laminar researchから提供されている”土地クラスファイル”を使います。
各zipファイルは緯度経度10度ごとの区分になっているので,これを展開したフォルダーの中から緯度経度1度ごとに区分されたファイルを見つけ出します。
NIUEの場合は”-20-170.xes”です。
高度情報ファイル
”Viewfind”で公開されているデジタル標高データを使います。
クリックして表示される地図の中の区域をクリックするとデータフォルダーをダウンロードできます。
その中から目的の緯度経度のデータを探すことになります。
下の図は,”SA01”という区域のデータをダウンロードするときの手順です。
目的の緯度経度のデータを簡単に見つける方法がわからなかったので,行き当たりばったりでダウンロードをくりかえすことになり時間がかかってしまいました。
NIUEのデータは,”SE02”データの中にある”E0”フォルダーの中にありました。
該当のデータは,”S20W170.hgt”です。
スクリプトファイル
スクリプトファイルの基本的なコマンド
NIUEを作るときに使ったスクリプトファイルをご覧ください。
まず,ダウンロードした”ForTestofMeshtool.zip”を新しく作ったC:\MESHフォルダー内に展開します。
このなかにあるscript.txtファイルをエディターで開きます。
最初の行にある はメッシュの一番下になるところが水か陸かということを記述するものであり,これは作成するメッシュ全体に適用されます。
島であればもちろん水ですから”BACKGROUND terrain_Water
“です。
次の行からは各ポリゴンを記述したものです。
BEGIN_POLYGONとEND_POLYの間の行が,各ポリゴンの端点です。
最初の”BEGIN_POLYGON “は島の陸地全体の記述です。
つぎの”BEGIN_POLYGON “は島の空港部分の記述で平坦になる部分です。
そのほか,必要であればポリゴンに湖や川などの水面,街,工場,森,農場などの属性をつけることができます。
なお今回のスクリプトでは,島と空港だけにしています。
属性を記述したデータは”terrain_Define.txt“という名前でダウンロードフォルダーに入れています。
この中の左側の3属性が基本的なものです。
右側の属性は,利用状況を表しますが,今回は利用していません。
ポリゴンデータの作成
スクリプトファイルには,島の範囲や区域の範囲をポリゴンデータで記述します。
NIUEでは,島全体と空港部分の範囲のポリゴンだけを作成しました。
この二つの部分のポリゴンデータの作成方法を説明します。
空港データである”-20-170.dsf”ファイルの数字は,シーナリー記述範囲の西北端(私たちが使う地図の左上角)の緯度経度を示しています。
このファイル名から,島が1度の範囲内にあるかもしれないと期待が持てます。
空港が,2つの度数の範囲にまたがっていれば複数のdsfファイルがあるはずです。
Google Earth proを起動します。
”NIUE”で検索するとすぐに表示してくれます。
念のために南緯20度から21度,西経170度~171度の範囲にマーカーをつけます。
マーカーの範囲に入っていれば,島を一つのdsfファイルでつくることができます。
NIUE島は範囲内に収まっていたので楽に作ることができました。
下の画面の目印は,例示のためそれよりも狭い範囲で目印を打っています。
仮に二つの範囲にまたがっていたら,その緯線経線で分割してデータを作る必要があります。
Google Earthのメニューにあるポリゴン追加のボタンをクリックし,島の周囲を丹念にクリックしていきます。
範囲を指定するとき,ポリゴンの表示方法を指定します。
下の画面で白くなっているのは,範囲を白く塗りつぶしたためです。
赤い枠線だけにすると次の画面のようになります。
ポリゴンの範囲修正ができますが,細かく分けるとポリゴンはきれいになる反面,データ処理が大変です。
今回,私が適当に荒っぽく指定しても極端に見栄えは悪くはなりませんでした。
島の周囲をクリックし終わったら,できあがったデータに名前をつけてDSL型式でMeshフォルダー内に保存します。
次にGoogle Earthの画面を拡大して,空港敷地範囲のポリゴンデータを作ります。
島の周囲に比べるとかなりおおざっぱです。
このデータも名前をつけてDSL型式でMeshフォルダー内に保存します。
スクリプトファイル編集の練習
別のウインドウで島のポリゴンデータである”island-ポリゴン.kml”を開きます。
ファイルの後半に,ポリゴンデータを数字で記述した長い1行があります。
Meshtoolが使うのは,範囲内にある端点のデータだけですが,Google Earthは閉じたポリゴンを表示するために最初の点を重複して記述しています。
そこでこの行の,一番最後の端点のデータを除いた部分をコピーして,script.txtファイルの最初のBEGIN_POLYGONとEND_POLYの間に貼り付けます。
つぎに空港データのポリゴンデータも同様にコピーして次のBEGIN_POLYGONとEND_POLYの間に貼り付けます。
自分で街や砂浜など様々な属性のポリゴンを作るときには,この作業を繰り返します。
今回は砂浜は作成しませんでしたが,島のシーナリーには砂浜が再現されていました。
使い方はBEGIN_POLYGONの後ろに記述するだけです。
“terrain”データ名は,”config_MT3”フォルダー内のconfigフォルダーにある”エクセルで開くことのできる”terrain_infos.ods”に記述されています。
砂浜なら”sand”を含むterrain名を検索でさがします。
2列目のデータがterrain名です。
今回は練習ですから,”scripts – start.txt”というポリゴンデータを貼り付けた状態のファイルを添付しています。
このファイルを開き,編集の練習を行います。
使っているエディターは,「秀丸」です。
(1)”,0”を削除する
ポリゴンデータにある不要な部分である”,0”を削除します。
(2) 緯度経度の間にある”,”をスペースに置き換えます
(3) 行の先頭の経度データの前にスペースを入れます。(これはnotepad++において別の処理をすれば不要な手順です。)
(4) 経度データの前に”+POLYGON_POINT <space> ”を入れ,下の画面のように置き換えます。
(5) ”\+”を改行データである”\r\n”に置き換えます。
これで,スクリプトファイルができあがりました。
meshtoolは経線境界を越えたら,データをカットしてしまうのかもしれません。
Meshtoolを使う
データがそろったので,コマンド画面を開きます。
メニュー内のWindowsシステムツールの中に入っています。
これから頻繁に使うのであれば,メニューに貼り付けておきましょう。
”C:\Mesh”フォルダーに移動します。
コマンドは,”cd ¥Mesh”です。
コマンドプロンプトが”C:\Mesh>”になっていることを確認します。
コマンドラインに”Commandline.txt”の内容をつぎのように貼り付けます。
なおエラー内容は理解できませんでした(^^;
シーナリーフォルダーを構成する
この記事は,次の製品のオンラインバージョンアップ版11.41で表示確認をしています。