$30 off During Our Annual Pro Sale. View Details »

ARマイクラで使った技術を 軽率に解説する/Introducing technologies of AR Minecraft

ARマイクラで使った技術を 軽率に解説する/Introducing technologies of AR Minecraft

MS Tech Camp #13にてLT登壇した資料です

にー兄さん

March 19, 2022
Tweet

More Decks by にー兄さん

Other Decks in Technology

Transcript

  1. ARマイクラで使った技術を
    軽率に解説する
    にー兄さん(ninisan_drumath)
    MS Tech Camp #13

    View Slide

  2. にー兄さん(@ninisan_drumath)
    - 筑波大学 情報科学類(coins18)
    - HoloLab inc.アルバイト
    - Microsoft Learn Student Ambassadors
    - Iwaken Lab.
    趣味はUnity、ギター、コーヒー、VTuberオタ活
    唐突な愛猫自慢→

    View Slide

  3. agenda
    ARマイクラの概要
    Unityクライアント
    Azureバックエンド
    おわりに

    View Slide

  4. ARマイクラの概要

    View Slide

  5. View Slide

  6. ARマイクラの仕様
    - 大学キャンパス内の特定の場所でプレイ
    - マイクラ的にブロック配置ができる
    - マルチプレイができる(リアルタイムなブロック配置の検知)
    - ブロックは現実の場所にずっと保存される

    View Slide

  7. 開発のモチベーション
    - 個人活動 Project TSUin-MIのデモンストレーション
    - ARクラウドの検証開発

    View Slide

  8. Project TSUin-MI
    - つくば市全体のARクラウドを構築を目指すプロジェクト
    - 現状の技術で「どこまで可能か」「どんな価値があるか」
    を提示することが目的
    - 成果はすべてネットに公開
    https://scrapbox.io/project-TSUin-MI/

    View Slide

  9. Unityクライアント

    View Slide

  10. クライアントでやっていること
    ARにまつわる処理
    - Unity ARFoundationによるAR表現
    - Immersalによる空間の位置合わせ
    コンテンツにまつわる処理
    - ブロック配置ロジックの実行
    - バックエンドサービスとの通信

    View Slide

  11. ブロック配置ロジック
    1. カメラ前方からレイを発射
    2. 衝突判定
    (平面 | ブロック | other)
    3. 法線方向にブロック配置

    View Slide

  12. 空間の位置合わせ
    Immersalによる位置合わせを実行
    これができるとARでも
    マルチプレイができるようになる
    事前に現実空間を3Dスキャン
    画像⇔3次元マップでの照合
    (Visual Positionng System)

    View Slide

  13. バックエンドとのやりとり
    Unity
    (Androidクライアント)
    Azure
    (詳細後述)
    ブロック配置
    (双方向リアルタイム)
    全ブロックデータ
    3Dマップ上の座標を使う
    ことでマルチプレイが可
    能に

    View Slide

  14. Azureバックエンド

    View Slide

  15. 使用したリソースと構成

    View Slide

  16. リアルタイム通信
    Azure Web PubSubを使用
    WebSocketを使ってソケット通信できる
    NuGetに.NET Standard 2.0対応のdllがある
    →つまりUnityで使える
    もともとSignalR使ってたけど
    IL2CPPビルドでこけたので変更
    (なんでだろ)
    Azure Web PubSub

    View Slide

  17. ブロックの保存
    FunctionsとCosmosDBの組み合わせ
    ちゃちゃっと作りたかったので
    サーバレスで実装
    FunctionsのコードはTypeScript
    GitHub ActionsでCI/CD

    View Slide

  18. おわりに

    View Slide

  19. まとめ
    - 空間の位置合わせによってARマルチプレイなどが可能になる
    - バックエンドも(簡単であれば)Azureのサーバーレスで完結
    - ARマイクラ楽しい!

    View Slide

  20. 参考文献
    Immersal
    https://immersal.com
    Azure CosmosDBとAzure Functions
    https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-integrate-store-unstructured-data-c
    osmosdb?tabs=csharp
    Azure Web PubSub
    https://azure.microsoft.com/ja-jp/services/web-pubsub/
    Web PubSubをUnityで使うサンプル
    https://github.com/drumath2237/PubSub-Android-Test

    View Slide