Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ARでVRアバターを表示するシステムを構築しよう

 ARでVRアバターを表示するシステムを構築しよう

次の講演資料です。
・どっかんナゴヤ'18 Jun. https://dcn.connpass.com/event/87240/
・ABC 2018 Spring https://abc.android-group.jp/2018s/

プロジェクトファイル
https://github.com/TORISOUP/AR_VR_Viewer

torisoup

June 09, 2018
Tweet

More Decks by torisoup

Other Decks in Technology

Transcript

  1. できること • VR側 • アバターの操作 • 表情変更 • AR側カメラがどこにあるかを知る •

    AR側 • マーカーレスで認識した平面にアバターを配置 • アバターのサイズ変更
  2. 使ったもの(ソフト) • Unity 2018.1 / .NET 4.6 / C#6.0 •

    VRM / UniVRM • ARCore • SteamVR、Final IK • Photon Cloud, Photon Voice • UniRx, PhotonRx • Zenject
  3. Photon Cloud/Voice • Photon Cloud • ドイツのExit Games社製の通信フレームワーク&クラウドサーバ • 20人同時接続までなら無料で利用可能

    • Unity向けSDK(PUN)を利用して開発する • Photon Voice • Photon Cloudと連動して音声通信機能を追加するサービス
  4. その他 • UniRx • Reactive Exntensions for Unity • イベント処理、非同期処理の整備に使った

    • Zenject • 依存性注入(DI)のフレームワーク • コンポーネントの参照解決に使った
  5. 開発方針 • 「モダンな開発をしたい」 • .NET 4.6 + C# 6.0 で開発

    • 全体的に挙動を非同期にする(Task, Observable, async/awaitの活用) • DIをメインに使った開発 • static変数を使った参照解決をしない • GameObject.Find禁止
  6. ネットワーク同期 まとめ • Photon Cloudを使えばクライアント実装のみで完結する • VRMの動的ロードと合わせるには工夫が必要 • 同時接続数は1部屋あたり10人くらいが限界そう •

    Photon Cloudの制約(メッセージ数上限) • デモ用途なら十分 • 不特定多数への生放送に用いるには専用のインフラ構築が必要
  7. その他実装のコツ まとめ • 非同期処理は対処法を知っておくべし • async/await, Task, UniRxの使い方を覚えておくと良さげ • Zenjectを使ったDIが非常に便利

    • 無駄なif文/switch文を減らせる • わざわざマネージャクラスをシングルトン化する必要がなくなる • デバッグやテストがやりやすくなる