Skip to content

20240604_notes

Takanobu INAFUKU edited this page Jun 28, 2024 · 5 revisions

第8回 PLATEAUのデータの利用 - Unity 導入

事前準備

Unity Hub / Unity のインストール

  • https://unity.com/ja/download から各自のOSにあった Unity Hub のインストーラーをダウンロードしてインストール
  • Unity Hub からアカウント(Unity ID。すでに持っている人は単にサインインしてください)を作成し、ライセンスを取得。基本的にはPersonalライセンスで大丈夫なはずです。
  • インストールエディターをインストール正式リリースその他のバージョン で一番新しいLTSのものを(2024.05.28現在では 2022.3.30f1 )インストール。
  • 次項の「モジュールを加える」は、ひとまず何も選択しなくてもOKです。

PLATEAU SDK for Unity のインストール

https://github.com/Project-PLATEAU/PLATEAU-SDK-for-Unity/releases

から最新版の .tgz ファイルをダウンロードします。

https://project-plateau.github.io/PLATEAU-SDK-for-Unity/index.html

の手順に従ってセットアップします。

  • 上部メニューの WindowPackage Manager から パッケージマネージャーのウィンドウを開きます。
  • ウィンドウ左上の「+」アイコンをクリックし、Add package from tarball を選択します。
  • ダウンロードした .tgz ファイルを選択し、インストールを開始します。

fig_v1

PLATEAU-SDK-Toolkits-for-Unity のインストール

SDK関連の便利なツールキットです。

https://github.com/Project-PLATEAU/PLATEAU-SDK-Toolkits-for-Unity/releases/

から最新の .tgz ファイルをダウンロードします。

  • SDKと同様にパッケージマネージャーからインストールします。
  • インストール完了後、Unityエディターを再起動する必要があります。確認を求めるポップアップが出るので、了承して再起動します。

アセットストアのフリーアセットの利用

便利な機能が実装されたカメラアセットのコレクションです。

https://assetstore.unity.com/packages/tools/camera/camera-controller-gaskellgames-248116

Add to My Assets をクリックして追加します。

PLATEAU SDK for Unity の利用

CityGML データの読み込み

上部メニューの PLATEAUPLATEAU SDK から PLATEAU SDKのウィンドウを開きます。

PLATAUE SDK では、サーバーから直接CityGMLをダウンロードして読み込むか、すでにダウンロード済みデータがあるローカルPC内のフォルダを指定して読み込むかを選択できます。

基本的な手順としては、いずれの場合も

  • データセットを選ぶ
  • マップの範囲を選択して読み込む

となりますが、講義内では時間節約のため、事前にダウンロード済みのデータを使用します。

fig_1

  • 都市の追加 の「インポート元」を「ローカル」にし、参照 ボタンをクリックしてダウンロード・解凍したCityGMLデータがあるフォルダパスを指定します。
    • 基準座標系の選択 は特別な事情がなければそのままで問題ありません。

fig_2

  • マップ選択範囲範囲選択 ボタンをクリックして、マップビューを表示させます。

fig_3

  • ビュー内表示される操作方法も参考に、読み込みたいマップ上の範囲を選択します。
    • 使用するコンピューターのスペックにもよりますが、広い範囲を指定するほど読み込みに時間もかかり、表示の負荷も高くなります。一般的なノートPCであれば、メッシュコードの5マス × 5マス程度までが無難です。

fig_4

  • 決定 をクリックして範囲を決定します。
  • 範囲を決定すると 地物別設定 及び 基準座標系空のオフセット値(メートル) の設定項目が表示されます。必要な場合は各項目を調整します。

fig_5 fig_6

  • モデルをインポート をクリックして読み込みを開始します。
    • 使用するコンピューターのスペック・指定範囲にもよりますが、数分かかる場合があります。

fig_7

  • モデルが表示されます。
    • 指定範囲とオプションの設定によっては、読み込まれたデータがビューポート内に入っていない場合があります。その場合、Hierarchy 内から読み込んだCityGMLのデータに対応した名前のオブジェクトを探して選択し、[ f ] キーを押すとビューポートの中心を合わせることができます。

fig_8

別のファイルフォーマットへのエクスポート - FBXでエクスポートしてBlenderで読み込む

読み込んだCityGMLデータを別のアプリケーションでも扱いやすいファイルフォーマット(今回はFBX)でエクスポートし、Blenderでインポート・表示を行ってみます。

現状のPLATEAU SDKでは、任意の部分だけを選択してエクスポートするということができず、基本的に Hierarchy のルートにあるCityGMLのデータの下層全てが対象となるようです。エクスポートする対象を制限したい場合は、下層の子のオブジェクトを個別に非アクティブにする、などの対応をする必要があります。

  • PLATEAU SDKのウィンドウで、エクスポート タブを選択します。
  • 選択オブジェクトエクスポート対象Hierarchy にあるCityGMLのデータを選択します。
  • 出力形式出力形式 でファイルフォーマットを選択(今回はFBXを選択)。
  • 出力形式Option座標軸 で任意の座標軸を選択。
    • Blenderで読み込む場合、EUN(Unityでの座標系) に指定すると、Blender側のFBXのインポート時のデフォルトプリセットと合致するため、インポート時特に設定を変えることなく正しい配置が可能です。それ以外の場合はインポート時に Manual Orientation で座標軸を変換する必要があります。
  • 出力形式出力フォルダ でエクスポート先のフォルダを指定。
  • エクスポート をクリックしてエクスポートします。

fig_v7-1 fig_18 fig_19

PLATEAU-SDK-Toolkits-for-Unity の利用

PLATEAU-SDK-Toolkits-for-Unity は、PLATEAUが提供するCityGMLデータとUnityを使ったアプリケーションの開発を支援するパッケージです。

メインのリポジトリには下記の

  • Rendering Toolkit
  • Sandbox Toolkit
  • PLATEAU Utilities

の3つのツールキット、また追加のものとして

  • Maps Toolkit
  • AR Extensions

が存在します。

このうち、Rendering Toolkit と Sandbox Toolkit の一部の機能を試してみます。

Rendering Toolkit

上部メニューの PLATEAUPLATEAU TookkitRendering Tookkit からウィンドウを開きます(*キャプチャ画像では、ウィンドウを開いたあと、エディター右側にドッキングしています)。

環境システムの設定

  • 環境システムの設定 (山と太陽のアイコン)をクリックしてタブを選択し、環境要素 をクリックし機能を有効化します。

fig_9

  • タブ内のスライダー等を操作することにより、時間(朝・夜)、天候(雲の量、雨、雪)などのエフェクトを適用できます。

fig_10 fig_11 fig_12

Sandbox Toolkit

上部メニューの PLATEAUPLATEAU ToolkitSandbox Toolkit からウィンドウを開きます。

基本的な使用

  • アバター (人のアイコン)をクリックしてタブを選択し、右下にある ビルトインアセットをインポート をクリックしてアセットをインポートしてます。
    • インポート完了後に何も表示されない場合は、車両プロップ などほかのタブに切り替えると読み込れます。

fig_13 fig_14

  • 任意のアセットを選択し、 配置ツールを起動 からツールを起動すると、シーンビュー内にアセットを配置していくことができます。

fig_v2

トラックを使用した配置・アニメーションの有効化

トラック を使用すると、任意の経路に沿わせてアセットを配置する事ができます。また、アバター車両 については、トラック上に配置したものをゲームビュー有効時に移動・アニメーションさせることが可能です。

  • トラック (道路のアイコン)をクリックしてタブを選択し、新しいトラック をクリックしてツールを起動します。

fig_15

  • シーンビュー上の任意の位置を連続してクリックし、最後に [ Esc ] もしくは [ Enter ] キーを押すことで、トラックを作成できます。

fig_v3

  • 作成したトラックに沿ってアセットを配置するには、配置ツールを起動した際にシーンビュー内に表示されるツールのオプションパネルの 配置位置 オプションを トラックに沿って配置 に変更して配置します。

fig_16

  • 配置後、上部ツールバーの中央にある、Play ボタンをクリックして、シーンをコンパイルしてゲームビューを有効化します。デフォルトで Run On Awake プロパティが True になっているため、配置したアセットが アバター もしくは 車両 の場合、設定された速度でアニメーションしながらトラック上を移動します。
    • デフォルトカメラ(Main Camera)の位置がデフォルトのままだと、ゲームビューで意図しない視点に移動してしまう場合があります。その場合は下のキャプチャのように、HierarchyMain Camera を選択した状態で、シーンビュー内で視点を調整し、ちょうどよい視点で [ Ctrl + Shift + F ] を押すことで、ゲームビュー開始時の視点をシーンビューと揃えることができます。

fig_v4

追尾カメラの設定・外部アセットを利用してシーン内を自由に回遊できるようにする

Sandbox Toolkit の機能で、配置した アバター もしくは 車両 に対し、ユーザーが操作可能なカメラを割り振ることができます。

Sandbox Toolkit ウィンドウの トラック 以外のタブ下部分 汎用機能 というセクションにある カメラマネージャーを作成 ボタンをクリックして PlateauSandboxCameraManager オブジェクトを Hierarchy に追加します。

  • Hierarchy に既に追加されている割り当て可能なオブジェクト(アバター もしくは 車両)のインスペクターを開き、Is Camera View Available にチェックが入っていることを確認します(チェックが入っていなかったらチェックを入れてアクティブにします)。

fig_17

  • Play ボタンを押してゲームビューをアクティブにします。ゲームビュー内で前述の Is Camera View Available をアクティブにしたオブジェクトをクリックすると、カメラがそのオブジェクトを追従するものに切り替わり、カメラ操作が可能になります。
    • マウスドラッグでカメラのパン・チルト操作が行えます。
    • [ 1 ] [ 2 ] [ 3 ] キーでカメラの追従位置を切り替えます(FPS / TP視点等)。
    • [ 0 ] キーでデフォルトのカメラに戻ります。

Camera Controller - Gaskellgames というフリーの外部アセットを使用して、シーン内を自由に回遊できる仮想ドローンカメラを追加してみます。

  • Unityのアセットストアから追加したアセットは、パッケージマネージャーの My Assets から参照できます。アセットストアのフリーアセットの利用で追加した前述のアセットを選択して、プロジェクトにインポートします。
  • インポート処理の際、一部の依存パッケージ(com.unity.inputsystem と com.unity.textmeshpro パッケージ)をインストール・アップグレードするか聞かれますが、PLATEAU SDK 及び PLATEAU-SDK-Toolkits-for-Unity をすでに導入済みの場合、ダウングレードになってしまうので、スキップします。
  • 最終的にバナー画面が表示されればインポートは完了です。

fig_v5

  • プロジェクトブラウザのツリーを AssetsGaskellgamesCamera ControllerContent と辿って、CameraBrainCameraRig (Free Fly) というプレハブアセットを選択し、Hierarchy にドラッグ&ドロップして追加します。

fig_v6-1

  • 追加された CameraBrain のインスペクタで Active Camera を 「CameraRig (Free Fly)」に設定。追加された CameraRig (Free Fly) のインスペクタで Gmk Input Controller を「CameraRig (Free Fly)」に、Camera を「Cemara Brain」に設定します。

fig_v6-2

  • Play ボタンを押してゲームビューをアクティブにします。デフォルトカメラが操作可能な状態でゲームビューが開始されます。
    • マウスドラッグでカメラのパン・チルト操作が行えます。
    • [ w ] [ s ] [ a ] [ d ] キーで前後左右に、[ q ] [ e ] キーで上下にカメラを移動できます。
      • [ Shift ] キーの同時押しで移動速度が変わります。

fig_v6-3