LoginSignup
6
11

PLATEAU Hands-on 03(初心者向け:VR空間の作り方)~Unity で遊んで、ついでにメタバースも作ってみる

Last updated at Posted at 2022-10-09

1.初めに

1-1. 今日やること

PLATEAU のデータダウンロードやファイル変換は講師が説明し、
PLATEAU データを使ってUnity のハンズオンをし、
最後はcluster にデータを上げます。

(参考)講師のPCのスペック
  • CPU : Intel Core i7-11800H
  • RAM : 32GB
  • GPU : NVIDIA GeForceRTX3070

※ZOOMの画面共有でUnityがサクサク動いたスペックです。
ここまでなくても、RAM 8GB あれば大丈夫だとは思います。


1-2. 事前準備確認

  • 3D都市モデルCityGMLをFBX形式に変換したファイル(松山市)
  • Unity 2021.3.4f1 のインストール
  • Unityアセットダウンロード(ユニティちゃん、花火)
  • Clusterのアカウント作成


2.データ入手・変換 (説明のみ)

2-1. PLATEAUの3D都市モデルのダウンロード

「G空間情報センター」にアクセス
https://www.geospatial.jp/ckan/dataset/plateau

Image from Gyazo

使いたい都市の3D都市モデル(CityGML または FBX)をダウンロードする。
今回のハンズオンでは松山市のモデルを使用します。

※なお、東京都、札幌市はFBXファイルがありますので、このような変換作業は不要です。

詳細 > ダウンロード
Image from Gyazo

zip ファイルがダウンロードされる。
解凍すると、こんな感じ。
Image from Gyazo

2-2. データ変換

ダウンロードしたCityGMLファイルは、Unityでは使えませんので、以下の手順でデータ変換してください。
※東京などFBX、OBJをダウンロードした人は、データ変換は不要です。

2-2-1. 3D都市モデル(CityGML形式)に記述されたURLの更新

2021年9月に3D都市モデル(CityGML)に記述されたURLが変更になったため、エディターで修正する必要があります。

方法は3D都市モデルのデータ変換マニュアルに書かれていて、
「3D都市モデルのファイル内の名前空間とschemaLocationに記載されている旧URLを、新しいURLに更新してください」とのこと。

つまり、CityGMLファイルをVisual Studio 等のテキストエディタで開き、スクリプトの中の文字列を新URLに置換します。

修正前、修正後のURLは、3D都市モデルのデータ変換マニュアルに書かれている。
Image from Gyazo

ここでは、Visual Studio Code での方法を記載

VSCodeを起動して、メニューから[ファイル]→[フォルダーを開く]をクリックし、該当のフォルダを選択して、開きます。


今回のハンズオンの該当するフォルダは[udx]です。


※ウインドウがクラッシュする場合は、小分けにするか、該当のファイルだけ変換

(例1)udx > bldg と udx > dem と2回に分けて変換
(例2) 該当のファイルだけ(今回のハンズオンでは、 udx > bldg > 50326610_bldg_6697_op.gml と udx > dem > 50326610_dem_6697_op.gml)

左側にフォルダ内のファイルが一覧表示されます。

001.png

そのまま、以下のコマンドを押す。
Windows:Control + Shift + H
Mac:Command + Shift + H (未検証)

これで、開いているファイル全てを一括で検索・置換できるようになるので、それぞれの欄にさきほどの3D都市モデルのデータ変換マニュアルで指定のURLを入力する。

002.png

新旧URLを入力したら、「Replace All」ボタンをクリック

003.png

先ほどのURLを全て変換したら、URLの修正作業は終了です。

※ウインドウがクラッシュする場合は、該当のファイルだけ変換


2-2-2. 3D都市モデル(CityGML形式)をFBXファイルに変換

以下を2つを用意

  • (1) FME Desktop
  • (2) 3D都市モデルのデータ変換スクリプト
(1) FME Desktop

FME Desktop というソフトでCityGML(3D都市モデル)のデータを変換します。

FMEはHome use /非営利目的に限り申請すれば無料利用できます。

以下のURLにあるFormより、申し込みできます。
https://www.safe.com/free-fme-licenses/home-use/

Image from Gyazo

(2) 3D都市モデルのデータ変換スクリプト

「3D都市モデルのデータ変換マニュアル」から入手できます。 
 → https://github.com/Project-PLATEAU/Data-Conversion-Manual-for-3D-City-Model

Code > Download ZIP
Image from Gyazo

ZIPファイルを解凍すると
FMEで使用できるスクリプトがたくさんあります。
Image from Gyazo

ここからは、公式サイトのマニュアルのとおりの手順でやってみましょう。

使うスクリプトは、citygml2fbx.fmwt です。
Image from Gyazo


松山市の3D都市モデル(CityGML)は土地・建物あわせて約600あります。 今回のハンズオンでは、そのうちの松山市街中心部の以下の場所の3D都市モデルを使用します。

どこでもいいのですが、ハンズオンなのでみんな統一します。
番号でいうと 「50326610」
 

この青い四角が3次メッシュといって、一辺の長さは1キロメートルです。


「3D都市モデルのデータ変換マニュアル」(リンク先のPDFの1つ)
https://www.mlit.go.jp/plateau/file/libraries/doc/plateau_doc_0007_ver01.pdf
Image from Gyazo

マニュアルのとおりやった結果、
変換できました!

Image from Gyazo

と思いきや、
この例は最低単位の範囲のデータにもかかわらず、lod2.fbx 247メガと、大容量です。

merge_bldg_surface.fmwt を使えば、先ほどのより大幅に少ないサイズのFBXに変換してくれます。

Image from Gyazo

これについては、
「3D都市モデルのデータ変換マニュアル」
P54「2.5 建物データのサーフェスのマージ(OBJ/FBX)」をご覧ください。
Image from Gyazo

さきほどの松山市のlod2と同じ3D都市モデルCityGMLが、model.fbmフォルダ とmodel.fbx に変換されました。

lod2.fbx 247メガ に対して、
model.fbx が25メガ と、約10分の一のサイズです。

Image from Gyazo



3.Unity で遊ぶ 

ここから実際に手を動かします

3-1. Unityを開く

3-1-1. Unityを開く

Unity Hubを開く

「新しいプロジェクト」をクリック

Image from Gyazo

(1) すべてのテンプレート
(2) エディターバージョン 2021.3.4f1 (cluster の対応バージョン)
(3) 3D
(4) プロジェクト名、保存場所

Image from Gyazo

開いた
Image from Gyazo

こんなポップアップがでたら、スキップする。
Image from Gyazo

もし私と同じレイアウトでなければ、
レイアウトをデフォルトにしてください。
Image from Gyazo

下図の「Scene」タブをクリック
ここにバーチャル空間を作成します。
Image from Gyazo

3-1-2. 各ウィンドウの説明

Image from Gyazo

  • Hierarchy (ヒエラルキー)ウィンドウ
    シーンにある全オブジェクトを階層的に表示

  • Scene(シーン)ビュー
    編集画面

  • Inspector(インスペクター)ウィンドウ
    選択中のオブジェクトの内容の表示・編集

  • Project(プロジェクト)ウィンドウ
    プロジェクト全体のオブジェクトやスクリプト等の全てを表示


3-2. Unity に3Dモデルを置く

3-2-1. Unity に3Dモデルを置く

事前に準備したFBXファイル と model.fbm フォルダを UnityのProjectへドラック&ドロップする。 (1-2分)
Image from Gyazo

FBXファイルをシーン上へドラック&ドロップ
Image from Gyazo

画面上には変化ないように見えますが、3Dモデルが原点から遠い位置に置かれたためです。
Image from Gyazo

3D都市モデルCityGMLは緯度経度による地理座標系、すなわち地球に沿った球体の座標系で定義されていますが、FBXファイルでは測量や建築・土木の図面などによく使われる平面直角座標系に変換されているからです。

なお、PLATEAUの座標系については、PLATEAU AWARD 2022 説明会 (2022年7月20日開催)での技術解説がとてもわかりやすいです。
こちらの動画をご参照ください。
https://youtu.be/EBnB83Vva5w?t=1806




では、3Dモデルをカメラの方に移動します。

Hierarchy の 3Dモデル(dem, lod1, model) を選択したままで、
Image from Gyazo

GameObject > Move to View
または、Ctrl + Alt + F
Image from Gyazo

3Dモデルがカメラの位置に移動します。
Image from Gyazo

拡大するとlod2の建物(model.fbx) には、自動的にテクスチャがついてます。
Image from Gyazo

3-2-2. Unity の画面操作の練習

マウスを使います。

マウスないと無理です。

  • 視点の回転 :マウス右ボタンドラッグ
  • 視点の平行移動 :マウス中ボタンドラッグ
  • 視点のズーム :マウスホイール
  • オブジェクトに視点をフィットさせる :Hierarchyでオブジェクトをダブルクリック

1分間、以下の動画のように適当に操作の練習をしてください。



3-2-3. 調整

ビルと地形の高さが合ってない場合は
下の画像のように、dem , lod1 , model(lod2のこと)のYの位置を合わせる。
Image from Gyazo


このままだと、アバターを置いた場合、地面がすり抜けるので、地面にCollidar(コライダー)を付ける。

Hierarchy で dem を選択
Inspector で Add Componentをクリック
Image from Gyazo

検索窓に「Mesh」といれて、
検索結果の中から「Mesh Collidar」を選択
Image from Gyazo

Inspector に Mesh Collider が追加される。
Image from Gyazo

3-3. 巨大ユニティちゃん出現

※本記事はユニティちゃんライセンス条項の元に提供されています
© Unity Technologies Japan/UCL


事前順位事項でご用意いただいてる ユニティちゃんのアセット をダウンロードしインポートします。

Window > Package Manager

(1) My Assets
(2) Unity-Chan! Model
(3) download したあと、 Import

Image from Gyazo

こんな画面が出る。
[Import] をクリック

本当は必要なものだけ選択するところですが、とりあえず全部インポートします。

Image from Gyazo

Project > Assets >UnityChan! > UnityChan!Model > Prefabs > for Locomotion
にあるunitychan_dynamic をシーンにドラッグする。

Image from Gyazo

なお、Unityちゃんが超巨大に見えますが、基本身長約150センチメートルです。
3DモデルはFBXではだいたい100分の1に変換されています。

以下 Inspector を調整

参考までに私の数値

Image from Gyazo

(1) ユニティちゃんの大きさ (好きな数字で)
(2) Spring Manager のチェックをはずす
(3) Rigidbody の Constraints を上画像のようにチェックしたらユニティちゃんの挙動が安定した
(4) お好みでスピードなどの値を調整


カメラの位置を調整
Image from Gyazo


PLAYボタンを押す。

Image from Gyazo

Game ウインドウに再生されます。
矢印ボタンでユニティちゃんを操作できます。
その他の操作方法はゲームシーン右上にUIをご覧ください。

Image from Gyazo

では、編集に戻ります。
編集に戻るには、もう1度「PLAY」ボタンを押してください。
PLAY中に編集したものはPLAYを終えた後には反映されませんので、ご注意ください。



次に、ユニティちゃんにカメラを追従させます。
そのためには。MainCamera のチェックを外し、
ユニティちゃん専用カメラを Hierarchy のユニティちゃんへドラッグ&ドロップ
Image from Gyazo

こうなればOK
Image from Gyazo


これでPLAY ボタンを押すと、 ユニティちゃんの背後にカメラが追従します。

建物を素通りしてるので、建物にコライダーをつける。
建物のオブジェクト(lod1 , model(lod2のこと) )を全部選択して、 Inspector で Add Component > Box Collidar

Image from Gyazo

※Mesh Collidar の方が正確ですが負荷が高いので、Box Collidar を選択しました。


講師メモ (開始45分)

以上です。

3-4. 花火を上げる

筆者は7月30日に呉市の3D都市モデルを使って、バーチャル花火大会をしました。


事前順位事項でご用意いただいてる 花火のアセット をインポートします。
※バーチャル呉花火大会とは違うアセットです。

Window > Package Manager

(1) My Assets
(2) Fireworks
(3) downlod のあと、 Import

Image from Gyazo

こんな画面が出る。
[Import] をクリック

本当は必要なものだけ選択するところですが、とりあえず全部インポートします。

Image from Gyazo

Project > Assets >Fireworks > Battery > Prefabs > Battery
にあるBattery をシーンの花火を打ち上げしたいところにドラッグする。

Image from Gyazo

以下 花火の大きさをInspector で調整
高さは -250 から -200 くらい

Image from Gyazo

PLAYボタン!

こんな感じに

3-5. 巨大ユニティちゃん 街破壊

ちなみに、建物(lod1, model(lod2のこと) )全部を選択して、Inspector にRigid Body を追加して、Use Gravity をチェックすると、
Image from Gyazo

ユニティちゃんがゴジラのように都市を破壊します。


ちなみに、Use Gravityのチェックを外すと、人智を超えた力で街が破壊されます。



4. cluster 対応 

まず、ユニティちゃんと、花火のアセットを削除してください。
さきほどユニティちゃん街破壊をした人は、建物(lod1、model)のRigid Body を削除してください。



この章では、clusterの公式サイトを参考にしました。

4-1. Cluster Creator Kit

Edit > Project Settings
Image from Gyazo

ウィンドウ内左のタブから「Package Manager」を選択し、「Scoped Registries」に以下のように追加し、「Save」をクリックする。

Name: Cluster
URL : https://registry.npmjs.com
Scope(s) : mu.cluster

Image from Gyazo

ここは閉じてOKです。

Window > Package Manager
Image from Gyazo

ウィンドウ上部のドロップダウンより「My Registries」を選択します。
Image from Gyazo

表示されたリスト内から Cluster, Inc. > Cluster Creator Kit を選択し、「Install」ボタンを押します。
Image from Gyazo

Unityのメニューに「Cluster」の項目が追加されていればCreator Kitの導入は完了です。
Image from Gyazo

4-2. 設定

4-2-1. 3Dモデルの位置、大きさ

Hierarchy ウィンドウで、空のオブジェクトを作成します。
プラスマーク > Create Empty

Image from Gyazo

Hierarchy ウィンドウに新しく GameObject ができる。
Image from Gyazo

あとで判別しやすいように名前を「Matsuyama」に変える
Image from Gyazo

dem , lod1 , model(lod2のこと) を選択したまま、さきほど作成した「Matsuyama」オブジェクにドラッグアンドドロップする

Image from Gyazo

こんな感じになる。
これをMatsuya を親オブジェクト、dem,lod1,model を子オブジェクトという。
Image from Gyazo

Matsuyama の位置を 0,0,0
スケールを15にします。

Image from Gyazo

※原寸大にする場合はスケールを100にします


微妙に地面と建物の高さが乖離してるので、dem,lod1,model を選択したまま Inspector のYをゼロにする。

Image from Gyazo




次に
cluster へアップロードする必要最低限の設定をします。

  • SpawnPoint(プレイヤーの出現ポイント)
  • DespawnHeight(プレイヤーが消滅する高さ)
  • Collider(衝突可能なオブジェクト)

4-2-2. SpawnPoint

プレイヤーの出現ポイントを設定します。

Hierarchy ウィンドウで、空のオブジェクトを作成します。
プラスマーク > Create Empty

Image from Gyazo

Hierarchy ウィンドウに新しく GameObject ができる。
Image from Gyazo

あとで判別しやすいように名前を「Spawn」に変える
Image from Gyazo

Inspector ウィンドウで、
(1)Add Component
(2)spawn で検索
(3)Spawn Point を選択
Image from Gyazo

Inspector ウィンドウに 新しいコンポーネント[Spawn Point(Script)]が追加され、
シーンビューに緑色の球体が現れる。
Image from Gyazo

この緑色の球体を、ワールドに訪問した人を最初に出現させたい位置へマウス操作で移動する。
(赤い細い線の向きが正面)

Image from Gyazo

4-2-3. DespawnHeight

プレイヤーが消滅する高さを設定します。

Hierarchy ウィンドウで、空のオブジェクトを作成します。
プラスマーク > Create Empty

Hierarchy ウィンドウに新しくGameObject ができる。
Image from Gyazo

名前を「Despawn」に変更
Image from Gyazo

Inspector ウィンドウで、
(1)Add Component
(2)despawn で検索
(3)Despawn Height を選択

Image from Gyazo

プレイヤーがこの黄色の床にの高さに落ちたら、最初の場所に戻ります。
この黄色の高さ(Y)を、dem より低い値にします。
Image from Gyazo

4-2-4. Camera の削除

Hierachy の main camera は削除してください。
(cluster の場合)

Image from Gyazo

4-3. Play

これで cluster へのアップロードの準備ができました。

アップロードする前に、挙動を確認しましょう。
「Play」ボタンを押します。

Image from Gyazo

Image from Gyazo

Playで確認し、気に入らないところは直しましょう。

4-4. cluster へのアップロード

まず、この画像をデスクトップにダウンロードしてください。
(あとで使います)

3aac9d02d10dfa6ed039cbcb93eef766.jpeg

4-4-1. 設定

Edit > Project Settings
Image from Gyazo

以下の通り設定します。
Player > Other Settings > Rendering > Color Space

Linear に設定

Image from Gyazo

こんなメッセージが出たら「Change to Linear」をクリック
Image from Gyazo

私のPCでは処理に2、3分かかる。

処理が終わったら、ここは閉じて結構です。


4-4-2. アップロード

cluster > ワールドアップロード

初めての人はこんな画面

Webトークン発行を押す
Image from Gyazo

clusterが立ち上がり、
「トークン作成」
Image from Gyazo

トークンをコピーし、
Image from Gyazo

さきほどの、ここに張り付ける。

Image from Gyazo

新規作成
Image from Gyazo

・画像の選択 (とりあえず、さっきダウンロードした画像)
・ワールド名、ワールドの説明を入力
・「〇〇としてアップロードする」
Image from Gyazo

数分後、こんな画面になれば、成功です。

「ワールドに入る」を押して、ワールドに入ってみましょう。

Image from Gyazo

「cluster を起動」
Image from Gyazo

Image from Gyazo

さっきの画面で、
「公開する」をクリックすると、全世界に公開されます。

Image from Gyazo


こちらが実際に公開されたワールドです。



5.おまけ

VRChatに上げる場合

  • OS: Windows (Macは不可)
  • Unityのバージョン: 2019.4.31f1.


以上です。
6
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
11