Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails以外の開発一般

Unity: リモート勢だけどオープンデータを駆使して出社した気になりたい

この記事は「3D都市モデル(Project PLATEAU)横浜市(2020年度) - データセット」(国土交通省)を使って作成されました。

🔗 目次

  1. まえがき
  2. 解決したい問題
  3. PLATEAUとは?
  4. 完成品
  5. 環境紹介
  6. 環境構築
  7. いでよ横浜
  8. ECN周辺を歩いてみる
  9. あとがき

🔗まえがき

皆様こんにちは、BPSの協力会社として横浜を拠点に活動しております、株式会社ECNのFuseです。
突然ですが、みなさんはイベント、してますか?夏も本番、海水浴にBBQなど、
やりたいことが皆さんもたくさんあることでしょう。

ですが…

↑目次に戻る

🔗 解決したい問題

私Fuseリアルで会える友達がいません。
じゃあ社内イベントとかはどうかといわれると
私Fuse地方在住在宅ワーカーです。気軽に同僚に会えません。
めっちゃ寂しいです。

なので今回は国土交通省が主導するPLATEAUというプロジェクトにて
配布されている横浜市中区の3Dデータを使い、
バーチャル空間に再現した神奈川に行って少しでも寂しさを紛らわせようと思います。
↑目次に戻る

🔗 PLATEAUとは?

PLATEAUは2020年に始まり今もなお続いている都市デジタルツインの社会実装プロジェクトです。
「3D都市モデル」と呼ばれる都市空間のデジタルツインデータの整備・活用・オープンデータ化を行っており、
配布されたデータは街づくりや防災防犯、さらにはシミュレーションやメタバースなど、様々な分野で活用されています。

↑目次に戻る

🔗 完成品

動作動画

↑目次に戻る

🔗 環境紹介

言語&エンジン バージョン
C# 11
.NET 7.0.101
unity 2021.3.5
ライブラリ&パッケージ バージョン
PLATEAU-SDK-for-Unity v1.1.6

↑目次に戻る

🔗 環境構築

PLATEAUの地図データをUnityで扱う際は、専用のSDKを使うと便利です。
空っぽのプロジェクトにPLATEAU-SDK-for-Unityを導入していきます。

パッケージマネージャを開き、「Add package from git url...」を選択します。

するとURLの入力を求められるので、

https://github.com/Project-PLATEAU/PLATEAU-SDK-for-Unity.git#v1.1.6

と入力、しばらく待てば導入が完了するはずです。

結構時間がかかるので気長に待ちましょう。

↑目次に戻る

🔗 いでよ横浜

導入が完了したらUnityのメニューバーから PLATEAU → PLATEAU SDK を選択し、専用のウィンドウを開き、
インポートする大まかな都市を選択します。

そのあとウィンドウ最下部の「範囲選択」を押すとこのような画面に映るので、赤い四角を操作して必要な部分だけを切り取りましょう。

今回の目的はあくまで見た目部分だけなので、地物別設定は下のように設定します。

インポートには例によってかなりの時間がかかります。気長に待ちましょう。
インポート完了後の景色はこんな感じ、

になるはずなのですが、メモリ不足でテクスチャが読み込めず、こうなりました。

↑目次に戻る

🔗 ECN周辺を歩いてみる

というわけで最後に一人称視点でオフィス周辺をうろついてみます。
自分の身長ぐらいのカプセルを作成し、顔の高さぐらいの位置にカメラを取り付けます。

その後、以下のような操作用スクリプトを作成して取り付け、再生します。

// FPSController.cs
using UnityEngine;

public class FPSController : MonoBehaviour
{
    [SerializeField] private float MOVESPEED=15;//移動速度(秒速)
    [SerializeField] private float RPS=60;//回転速度(秒速)
    [SerializeField] private Camera playercam;//視界用カメラ
    [SerializeField] private Camera initcam;//目標座標取得用カメラ
    void Update()
    {
        if(Input.GetKey(KeyCode.W)){
            transform.Translate(transform.forward*MOVESPEED*Time.deltaTime);
        }
        if(Input.GetKey(KeyCode.S)){
            transform.Translate(transform.forward*MOVESPEED*Time.deltaTime*-1);
        }
        if(Input.GetKey(KeyCode.A)){
            transform.Rotate(Vector3.up*RPS*Time.deltaTime*-1);
        }
        if(Input.GetKey(KeyCode.D)){
            transform.Rotate(Vector3.up*RPS*Time.deltaTime);
        }
        var pos=initcam.ScreenToWorldPoint(Vector3.forward*0.01f+Input.mousePosition);
        playercam.transform.LookAt(pos);
    }
}

まずは地図上だと駅があった場所からパシャリ、たくさんの大きな建物たちが出迎えてくれました。
(次回に続く)

↑目次に戻る

🔗 あとがき

そんなわけで、今日はバーチャル世界に作られた神奈川県横浜市中区蓬莱町1丁目付近を一人称視点で歩き回ってみました。次回は、このバーチャル神奈川県にNPCを放ってもっとにぎやかにする記事を書く予定です。それでは、また明日会いましょう!

↑目次に戻る


株式会社ECNはPHP、JavaScriptを中心にお客様のご要望に合わせたwebサービス、システム開発を承っております。
ビジネスの最初から最後までサポートを行い
お客様のイメージに合わせたWebサービス、システム開発、デザインを行います。



CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。