PLATEAUのデータをテクスチャをつけてメタバースclusterにアップする方法
はじめに
今更ですが
PLATEAUの出始めのころはLOD1には地面や建物にテクスチャがなく、豆腐といわれる状態でした。

それが、数年前にできたPLATEAU SDKによって、
地面に航空写真のテクスチャ、建物には建物らしいテクスチャ、
そして道路には車線がつきました。

しかし、これをいったんFBX形式に変換し、再度Unityで開くとこんな状態にになってしまいます。

そこで、なんとかテクスチャを貼って、clusterにアップした記録を以下に綴ります。
環境
* Unity 6000.2.6f2
* PLATEAU SDK
PLATEAU SDK
まず、PLATEAU SDKでデータをインポートします。
範囲を選択して決定します。
※なお、経験則から 複数の2次メッシュがある場合は後ほどPDF化したときにテクスチャが崩れます。
2次メッシュをまたぐ場合は、分けてインポートしたほうがいいです。

いろいろチェック項目がありますが、
「3地物別設定」では「属性情報を含める」にチェックを入れないと、道路が生成されないようです。

「都市計画決定情報」「災害リスク」「土地利用」は、今回は不要なので、チェックは外しました。
しばらくして、CityGML形式のデータがUnityにアップロードされました。

次に、FBX形式でエクスポートします。
PLATEAU SDK > エクスポート

すべての都市データで同じかどうかは分かりませんが、今回は建物だけ角度を調整する必要がありました。

あと、FBX化するとテクスチャが崩れてしまいました。

そこで、CityGMLとFBXを並べて確認しながら、FBX側のテクスチャをInspectorへドラッグ&ドロップして、手動で修正しました。
これで、テクスチャは元に戻りました。

道路の調整
PLATEAU SDKでのインポート
次に、道路を調整します。
PLATEAU SDKで以下を実行します。
道路調整 > 生成

すると、Hierarchyに「RoadNetwork」と「ReproduceRoad」が作成されます。

その後、エクスポートすると

GeoJSON形式のファイルが作成されます。
QGISでの作業
QGISを開き、先ほど作成したGeoJSONファイルのうち、
node以外のファイル(track, link, lane)をドラッグ&ドロップします。
次に、`roadnetwork_lane` を右クリックし、
エクスポート > 新規ファイルに地物を保存
CRSは、自分の地域に合ったものを選択します。
分からない場合は、画面右下のCRS表示部分をクリックして検索します。

私の地域の場合 `EPSG:6671` に変更しました。
同じ作業を、track、linkについても行います。
こんな状況になり、右下の表示もEPSG:6671 に変える。
(ここは変えなくてもいいような気がします)

次に、プロセシングツールボックスで「バッファ」と検索し、バッファ処理を実行します。
(今はまだ線なのでUnityに持っていくためにバッファ処理で厚みを持たせます)

これも、track、linkに対して同様に行います。
バッファ処理が完了すると、新しいレイヤーが作成されます。

Blenderでの作業
Blenderでは、GISアドオンを使用します。
まず、GitHubからBlenderGISをダウンロードします。
https://github.com/domlysz/BlenderGIS
「Clone or Download」から「Download ZIP」を選択します。
ダウンロードできたら、Blenderの画面左上から
編集 > プリファレンス
下図の箇所から、ダウンロードしたZIPファイルをアドオンとして追加します。
ZIPファイルは解凍しなくていいです。

Blenderのオブジェクトモードで、追加メニューに「GIS」が表示されればOKです。
次に、以下のメニューからShapefileをインポートします。
GIS > インポート > Shapefile
先ほど作成したShapefileを選択してインポートします。
※まとめてインポートできなかったため、今回は1つずつインポートしました。
インポート時にCRSの入力欄が表示されますが、ここは何も入力しませんでした。
ただ、このあたりはこれでいいか自信がありません。

その後、以下からFBX形式でエクスポートします。
ファイル > エクスポート > FBX
トランスフォームのところは以下に設定
Unityで位置合わせ
Unityにインポートし、まずは `tran` だけを表示して位置を合わせてみます。
ポジションをX,Y,Zを 0,0,0 にして、
RotationやScaleを調整して位置を合わせましたが、微妙にズレが残りました。
白色が `tran`、オレンジ色が車線です。

しょうがないので、ここからは、手動で調整しました。

これだけズレてました。

このズレの理由が分かる方がいれば、教えてください。
道路にテクスチャを設定
道路に色やテクスチャを設定します。
テクスチャは以下のフォルダにあります。
Assets\PLATEAU-SDK-for-Unity\Materials

ただ、横断歩道の反映がうまくできませんでした。
こちらも、分かる方がいれば教えてください。
建物のテクスチャ設定
建物のテクスチャは、Shaderを
PlateauTriplanerShader(DualTextures)
に設定します。
テクスチャは以下のフォルダから選択します。
Assets\PLATEAU-SDK-for-Unity\Materials\Fallback\MaterialTexture\TexDefaultBuilding
このShaderでは、いろいろ細かい設定ができます。
私は、建物にランダムで一括テクスチャを設定するスクリプトを作りました。
といっても、ChatGPTに相談しながら作ったものですが。
スクリプトをGitHubにあげてますので、お使いください。
https://github.com/tatsuya1970/ApplyRandomBuildingMaterial
実行前

実行後

ちなみに、屋根のテクスチャにも挑戦しましたが、今回はうまくいきませんでした。
誰か詳しい方、教えてください。
以上、
道路とビルにテクスチャを貼った結果、とても街らしくなりました。


Clusterへアップロード
HierachyからCityGMLを削除し、
こちらのサイトを参照して、clusterにアップしてください。
アップできました!!
https://cluster.mu/w/3b1ab6dd-da02-42af-8ef3-a106e4ac6861

テクスチャ無しと有りの比較
メタバース呉市の建物にテクスチャ(模様)を付けました。
テクスチャがあるだけで、街の印象がぐんとリアルに近くなりました。
市内観光バスも全線開通しましたので、ぜひ遊びに来てください!
メタバースのリンクはコメント欄へ #cluster #メタバース呉市 pic.twitter.com/s4T5mXAwN2— たつや (@tatsuya1970)
観光バスを走らせました。
メタバース呉市でバスで市内観光できます。遊びに来てね。この動画は10倍速。https://t.co/gNSwEa5zPt#cluster #plateau #メタバース呉市 #呉市 #メタバース pic.twitter.com/mSm3om1YMd
— たつや (@tatsuya1970)
今後の課題
このままだと、ワールドのサイズが264MBとかなり巨大です。
軽量化が必要です。
Blenderで軽量化する方法は知っているのですが、FBXに変換してUnityへ持っていくと、テクスチャが崩れてしまうことがあります。
そのたびに手動で直す必要があり、それが面倒でまだ本格的には対応できていません。
今後は、テクスチャを崩さずに軽量化する方法を探していきたいです。
ではでは
ad
- Tweet
-
-
この記事が気に入りましたら、ぜひTwitter、facebookボタンをお願いします。
ブログを書くモチベーションになります。よろしくお願いします。
ビットコイン投げ銭ウィジェット
関連記事
-
-
「1日で迷路ゲームを作ってみよう!」というUnityの勉強会に参加しました
今日は、 「1日で迷路ゲームを作ってみよう!」 http://bit.ly/1qHETE2
-
-
3D都市モデルPLATEAUのハッカソン「PLATEAU Hack Challenge 2022」に参加したよ(その2:呉)
この記事は 3D都市モデルProject PLATEAU Advent Calendar 202
-
-
Unity にメタマスクを実装するためにThirdweb を使ったときのNewtonsoftに関するエラー
私の環境 ・Windows 10 ・Unity 2021.3.4f1 エラーについて Uni
-
-
『PLATEAU』の都市3DデータをバーチャルSNS『cluster』にアップロードしてみた
国土交通省が主導するプロジェクト『PLATEAU』 に福山市のデータが公開されたと知り、さっそく
-
-
Xcode7.3にアップグレードした後、Unityで作ったプロジェクトを開いた時に出たエラー「Unknown type name ‘__declspec’」の解決方法
Xcode7.3にアップグレードし、 Unity(5.2.0f3)で作ったプロジェク
_edited-11.png)