Skip to content

20240604_notes

Takanobu INAFUKU edited this page Jun 27, 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エディターを再起動する必要があるので、確認を求めるポップアップが出ますので、了承して再起動します。

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-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になっているため、配置したアセットが アバター もしくは 車両 の場合、設定された速度でアニメーションしながらトラック上を移動します。
    • ゲームビューのカメラの位置がデフォルトのままだと意図しない視点に移動してしまう場合があります。その場合は下のキャプチャのように、HierarchyMain Camera を選択した状態で、シーンビュー内で視点を調整し、ちょうどよい視点で [Ctrl + Shift + F] を押すことで、ゲームビュー開始時の視点をシーンビューと揃えることができます。

fig_v4

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

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

  • Sandbox Toolkit からウィンドウの トラック 以外のタブの下部にある 汎用機能 というセクションにある カメラマネージャーを作成 ボタンをクリックして PlateauSandboxCameraManager というオブジェクトを Hierarchy に追加します。
  • シーン内に配置されている割り当て可能なオブジェクト(アバター もしくは 車両)のインスペクターを開き、Is Camera View Available というオプションにチェックが入っていることを確認します(チェックが入っていなかったらチェックを入れます)。

fig_17

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

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

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

fig_v5

...TBA

Clone this wiki locally