SlideShare a Scribd company logo
1 of 100
Download to read offline
ARでVRアバターを
表示するシステムを
構築しよう
2018/06/09
とりすーぷ
自己紹介
• とりすーぷ
• @toRisouP
• 個人ゲーム開発者
• 日本Androidの会Unity部 部員のはず
こういうものを作ってみた
相手:みゅみゅ(@miyumiyuna5)さん
https://twitter.com/toRisouP/status/996761692456435712
これなに?
• VR空間のアバターをARで表示するシステム
• スマホだけでVR空間をそれっぽく見たい
• VR側での演者の動きをそのままARで表示する
• 通話機能で会話できる
• ARカメラの位置をVR側から視認できる
Unityプロジェクト
• githubで公開済み
• https://github.com/TORISOUP/AR_VR_Viewer
• CC0 で公開(一部スクリプトファイルを除く)
今回の発表内容
• どうやって作ったか?のノウハウ共有
• 構成
• ワークフロー
• VRMの使い方
• ネットワーク同期の話
• VR/ARの実装
• その他実装のコツ
構成
全体図
VR側 AR側
・コントローラ入力
・アバターの姿勢・座標
・音声
・ARカメラの位置
・音声
プロジェクト構成
• 1つのプロジェクトでAR/VRの両方をビルドする
• 同じプロジェクトから両パターンビルドできるようにする
• 単にプロジェクトを分けるのが面倒くさかっただけ…
使ったもの
• HTC Vive、Galaxy S8
• Unity 2018.1 / .NET 4.6 / C#6.0
• VRM / UniVRM
• ARCore
• SteamVR、Final IK
• Photon Cloud、 Photon Voice
VRM
• VRアプリケーション向け人型3Dアバターフォーマット
• オープンソースで様々なプラットフォームで利用可能
• 利用ライセンスをファイル自体に埋め込める
• 今回はVRMのUnity向けインポータ「UniVRM」も使用
ARCore
• Google製のARライブラリ
• Tangoの後継
• マーカ検知、マーカレストラッキング、床・壁の検知、光源推測、特
徴点抽出、認識した空間の共有
• 利用可能端末がかなり少ない(アップデートで追加はされている)
• 今回の利用バージョンは1.2.0
SteamVR
• Valve社が提供するVRプラットフォーム & SDK
• PC向けVR開発に利用可能なSDK
Photon Cloud/Voice
• Photon Cloud
• ドイツのExit Games社製の通信フレームワーク&クラウドサーバ
• 20人同時接続までなら無料で利用可能
• Unity向けSDK(PUN)を利用して開発する
• Photon Voice
• Photon Cloudと連動して音声通信機能を追加するサービス
開発方針
• 「モダンな開発をしたい」
• .NET 4.6 + C# 6.0 で開発
• 全体的に挙動を非同期にする(Task, Observable, async/awaitの活用)
• DIをメインに使った開発
• static変数を使った参照解決をしない
• GameObject.Find禁止
ワークフローの話
制作の流れ
1. 通信デバッグ用のビルドを作成
2. VR/AR対応前の状態で動作確認
3. ARCoreを使った実装(InstantPreview)
4. Android実機確認
5. VR実装
6. 結合して動作確認
デバッグ用のビルドファイル
• アバターがアニメーションを自動再生するだけのビルド
• VR側のモック化として利用
• 通信機能だけ実装しておき、モーションデータを送信する
@UTJ/UCL
シンプルなプロジェクトで先に作る
• AR、VRは無視して単体で作れるところまで作る
• モック化等の小技を駆使してデバッグをする
送信 受信
https://twitter.com/toRisouP/status/995230604928036864
ARCoreを導入して実験
• Instant Preview機能が便利
• USB接続されたスマホを使ってUnityEditor上でデバッグできる
←先程のデバッグ用ビルド
https://twitter.com/toRisouP/status/995640657195581440
VR側を実装
• SteamVRを導入して実装
• 詳しくは後述
あとは最終確認
• VR側役をやってくれる友人を用意
• 時間を合わせて起動して動作確認する
https://twitter.com/toRisouP/status/996763932328058881
「ワークフロー」のまとめ
• コア部分は先に作っておくと楽
• AR実装、VR実装、それぞれで共通して動かせる部分を先に作る
• AR/VRの状態をモック化できるようになってるとなお良い
• ARとVRはプロジェクトを分けるべきだった
• Switch Platformがツライ
VRMの使い方
VRMとは
• VRアプリケーション向け人型3Dアバターフォーマット
• https://dwango.github.io/vrm/
VRMファイルを探すには
• ニコニ立体で探すのが良い
• 利用許可なライセンスのモデルを探して利用
• 今回はニコニ立体ちゃんを使用
https://3d.nicovideo.jp/works/td32797
Unityで使うためには
• UniVRMを導入する必要がある
• githubから導入すればOK
• https://github.com/dwango/UniVRM
• バージョンアップが頻繁
• (まだ安定している感じはしない)
Unity上でのVRMの取り扱い方
• 2パターンある
• Prefab化する方法
• 動的にロードする方法
Prefab化する方法
• vrm拡張子のファイルは自動的にロードされてPrefab化される
• ビルドファイルにモデルを埋め込むならこの手法が楽
• あとからユーザがモデルを差し替えるみたいなことはできない手法
動的ロードする方法
• ランタイムロードしてモデルを生成する
• 後から自由にモデルを変更できるようにするならこっち
• VRMの使い方として、おそらくこの方法がメイン
• 今回はこちらの方法でやる
直接ファイルパスを指定してロードする場合
おすすめのロード方法
• WWWで先にロードしてからVRMImporterに渡すのがおすすめ
• VRMImporterのデフォルトはなぜか同期読み込み
• Android実機ではWWWじゃないとロードできないディレクトリがある
UniRxを導入しているとWWWもawaitできる
https://github.com/TORISOUP/AR_VR_Viewer/blob/master/Assets/VrmArPlayer/
Scripts/Scene/Main/Common/AvaterProvider.cs
動的ロードしたVRMはどうなるのか
• コンポーネントがアタッチされたGameObjectが生成される
最初からアタッチされてるコンポーネント
←メタ情報が格納されたコンポーネント
←身体の構造の設定値が格納されたコンポーネント
←表情を制御するコンポーネント
←HMDを配置するときに使うコンポーネント
←視線制御に使うコンポーネント
←同上
オリジナルの制御を加える場合は
• AddComponentで自作コンポーネントを設定する
• 同時に初期パラメータもこのタイミングで設定する
• 初期化完了のタイミングを通知する機構を用意すると便利
指の曲げ制御コンポーネント
https://github.com/TORISOUP/AR_VR_Viewer/blob/master/Assets/VrmArPlayer/
Scripts/Scene/Main/Common/AvaterController.cs#L46
VRMアバターの制御
今回組み込んだ機能は3つ
• 表情の操作
• 指の曲げ伸ばし操作
• リップシンク
表情
• Viveコントローラのタッチパッドで表情を変更する
喜
怒
楽
哀
表情の変え方
• VRMBlendShapeProxyコンポーネントを使えばOK
←これ
コントローラ操作で表情変更
• VRMBlendShapeProxy.SetValue()を使って設定する
• 0 – 1の範囲で指定
タッチパッドを触った座標(2次元ベクトル)と設定された表情のベクトルとの内積をとった値を使う
https://github.com/TORISOUP/AR_VR_Viewer/blob/master/Assets/VrmArPlayer/
Scripts/Scene/Main/Common/AvaterController.cs#L137-L140
表情変更:ポイント1
• 表情を合成する場合はSetValue()の第三引数にfalseを指定
• trueの場合はその時の値で強制上書きになる
• falseを指定した場合はApply()を呼び出すと合成値が反映される
このタイミング(Update()内)ではすべてfalseにしておく
LateUpdate()のタイミングでApply()
表情変更:ポイント2
• Lerp(線形補間)を入れると柔らかくなる
Lerpなし Lerpあり
https://twitter.com/toRisouP/status/995322292346306560
指の曲げ伸ばし
• VRMにデフォルトでは用意されていない
• スクリプトを自分で用意する必要がある
• FingerControllerコンポーネント
(みゅみゅさん作のスクリプトを許可をもらって改変・配布)
• これを動的にアタッチして使う
https://github.com/TORISOUP/AR_VR_Viewer/blob/master/Assets/VrmArPlayer/
Scripts/Scene/Main/Common/FingerController.cs
コントローラ操作で指の曲げ伸ばし
• 各コントローラのトリガーキーの入力を反映
• 曲げる/伸ばす の2段階のみ
https://github.com/TORISOUP/AR_VR_Viewer/blob/master/Assets/VrmArPlayer/
Scripts/Scene/Main/Common/AvaterController.cs#L44
手の曲げ伸ばし:ポイント
• 2段階しかなくてもLerpを入れればなめらかになる
https://twitter.com/toRisouP/status/995312888070860801
リップシンク
• 音声に合わせて口パクする機能
• 今回は Oculus Lipsync Unity を使った
• https://developer.oculus.com/downloads/package/oculus-lipsync-
unity/
リップシンク設定
• 音声の解析結果をそのままBlendShapeに反映すればOK
• OVRLipSyncContextコンポーネントが解析結果を保持している
https://github.com/TORISOUP/AR_VR_Viewer/blob/master/Assets/VrmArPlayer/
Scripts/Scene/Main/Common/AvaterController.cs#L81-L93
VRM まとめ
• アバター制御の基本的な機能が揃っており便利
• Humanoidの制御に必要なことは最低限はできそう
• 「動的ロード」はちょっと難しめ
• プログラムが書けないとキビシイ
• まだ出て間もないのでドキュメント不足気味
ネットワーク同期の話
ネットワーク同期する情報
• アバターの姿勢
• 頭、腰、手先、足先の座標と角度
• コントローラ入力値(表情・手の曲げ伸ばしに使用)
• タッチパッドの座標とトリガーキーの状態
• ARカメラの座標
• VR空間内にARカメラがどこにあるかを表示するため
ネットワーク同期のやり方
• PUN (Photon Unity Networking) の機能をそのまま使うだけ
https://github.com/TORISOUP/AR_VR_Viewer/blob/master/Assets/VrmArPlayer/
Scripts/Scene/Main/Common/AvaterSynchronizer.cs#L90-L134
ハマりどころ
• VRMの動的ロードとPhoton Cloudの相性が悪い
• Photon Cloudの同期の仕組みに乗せるにはPrefab化が必要
• VRMの動的ロードを使っているとPrefabが用意できない
• VRMのアバターを直接同期する仕組みにすることができない
図解
VRMの動的ロードを使うと同期ができない
(PhotonViewはAddComponentできないため)
アバター アバター
通信
解決策
• 「同期管理オブジェクト」と「アバター」を分離して作る
• アバターを独立したGameObjectとして生成する
• アバターが生成されたら同期管理オブジェクトに登録する
• 同期管理オブジェクトがアバターの情報を同期する
図解
同期オブジェクトを仲介させることで、
データの同期を実現する
アバター アバター通信
同期オブジェクト 同期オブジェクト
姿勢書き込み 姿勢反映
同期オブジェクトの様子
• 白い箱が可視化した同期用オブジェクト
コツ
• 受信側で姿勢の再現時にもLerpを入れるといい感じ
• 補間が入って動きがなめらかになる
https://twitter.com/toRisouP/status/995579063405195264
ネットワーク同期 まとめ
• Photon Cloudを使えばクライアント実装のみで完結する
• VRMの動的ロードと合わせるには工夫が必要
• 同時接続数は1部屋あたり10人くらいが限界そう
• Photon Cloudの制約(メッセージ数上限)
• デモ用途なら十分
• 不特定多数への生放送に用いるには専用のインフラ構築が必要
VR側の実装の話
Steam VRを導入
• Asset Storeから導入する
IK
• 終端を指定し、そこに向かって関節を制御する機能
• Inverse Kinematics(逆運動学)
• IKのゴールにViveのHMDとコントローラの座標を
設定することでアバターが操作できるようになる
Final IK
• Unity向けのIKアセット
• VR対応
• IKやるならコレ
実装
VRのときはコントローラのTransformをIKのターゲットにする
ARのときは同期オブジェクトをIKのターゲットにする
https://github.com/TORISOUP/AR_VR_Viewer/blob/master/Assets/VrmArPlayer/
Scripts/Scene/Main/Common/AvaterScynchronizeDispatcher.cs#L81-L94
VR実装 まとめ
• vtuberを実装する方法をそのまま行うだけ
• ググったら情報いっぱい出てくる
• VRで「結月ゆかり」になって生放送する
https://qiita.com/toRisouP/items/14fe62f89808013f9f6e
AR実装の話
ARCore SDKを導入
• Githubからダウンロード
• https://github.com/google-ar/arcore-unity-sdk/releases/tag/v1.2.0
サンプルコードをそのまま流用
• HelloAR
• 平面を認識してタップした位置にドロイド君を表示するサンプル
• これを流用し、タップ地点の座標を取り出せるようにした
実装
• ArViewManager
https://github.com/TORISOUP/AR_VR_Viewer/blob/master/Assets/VrmArPlayer/
Scripts/Scene/Main/ForSmartphone/AR/ArViewManager.cs#L107-L114
タップ位置を基準座標にする
• アバターの親Transformの座標をタップ位置に設定
• これでアバターの表示位置が変わる
https://github.com/TORISOUP/AR_VR_Viewer/blob/master/Assets/VrmArPlayer/
Scripts/Scene/Main/ForSmartphone/StageController.cs#L56
Androidビルドして実機確認
• 動かすとだいたい最初は上手くいかない
動かなかった理由
• パーミッションが足りない
• マイクが不許可になってた
• カメラの認可ダイアログは出たのに、マイクは出なかった
• モデルデータがロードできない
• StreamingAssetsはWWWでしかロードできない問題と衝突
• UniVRMをそのまま使うとFile.ReadAllBytesでVRMをロードしようとする
Androidビルドでデバッグするときは
• Android Device Monitorが使える
• Android SDKについてくるログ閲覧ツール
• ビルド時にDevelopment BuildにするとDebug.Logがここに流れる
問題発生:Windowsビルドが通らない!
• ARCoreを導入するとWindowsビルドが通らない
• スタンドアローンビルド向けのdllが用意されていないから
回避策
• Android向けdllを無理矢理よみこませてビルドする
• かなりバッドノウハウ
• やはりARとVRでプロジェクトを分けたほうが良さそう…
これを追加して無理矢理よみこませる
AR実装 まとめ
• ARCoreのサンプルコードをそのまま使っただけ
• ARCoreの自体の機能はほとんど活かせてない
• VRプロジェクトとの混在は避けたほうが良さそう
• ビルドは無理矢理通るようになったけど、
今度はInstant Previewがおかしくなった
その他実装のコツ
その1:処理の非同期化
• アバター読み込み、ネットワーク通信などで非同期処理が多い
• async/await & UniRx が大活躍
UniRx
• Reactive Exntensions for Unity
• 非同期処理、イベント処理に強くなるライブラリ
• Asset Storeから導入可能(無料)
• MITライセンス
async/await + UniRx
• コルーチンを使わずにWWWをawaitで待てる
• VRMのロードもawaitで待てる
Photonの初期化周りの処理
• PhotonRxを導入するとPUNのメソッドをTask化できる
• https://github.com/TORISOUP/PhotonRx
その2:設計の話
• どのモードで動いているか意識せずに作りたい
• いまARなのか、VRなのかをできるだけ意識せずにコードを書きたい
• オープン・クローズド原則を守りたい
どういうこと?
• たとえば「コントローラ入力」
• VR時:Viveコントローラの入力を使う
• AR時:ネットワーク通信で送られてきた値を使う
• デバッグ時:キーボードの入力を使いたい
• これをif文で書き分けるみたいなことはしたくない
• DIで乗り切ろう
DI(依存性注入)
• 抽象化した場所に、具象クラスを後から指定する
• クラスを差し替えるだけで挙動を後から変更できるようになる
Zenject
• Unity向けのDIのフレームワーク
• DIするならこれが便利
• Asset Storeから導入可能(無料)
• MITライセンス
抽象化
• 入力イベントを発行するインタフェースを定義
• UniRxのReactiveProperty化が便利
https://github.com/TORISOUP/AR_VR_Viewer/blob/master/Assets/VrmArPlayer/
Scripts/Scene/Main/Common/Inputs/IInputEventProvider.cs
利用時はこのインタフェースのみを触る
• 実体がどのクラスであるかは無視して書く
• 使うときはインタフェースしか意識しない
Installer(Zenject)
• どのインタフェースにどの実装を使うかを定義する機能
• このインタフェースにはこのクラスを使う、みたいなのを書く場所
読み方
IInputEventProviderおよびIInputSetableが要求された場合は、
VrInputEventProviderを注入する(その際は同じインスタンスを使い回す)
Installerをシーンごとにわけて用意する
• VRモード、ARモードのシーンでそれぞれ中身を変える
• VRのときはVR用InputEventProvider
• ARのときはネットワーク同期用InputEventProvider
VRモードのときのInstaller ARモードのときのInstaller
https://github.com/TORISOUP/AR_VR_Viewer/blob/master/Assets/VrmArPlayer/
Scripts/Scene/Main/ForPC/ForPCInstaller.cs
https://github.com/TORISOUP/AR_VR_Viewer/blob/master/Assets/VrmArPlayer/
Scripts/Scene/Main/ForSmartphone/ForSmartphoneInstaller.cs
SceneにそのInstallerを配置する
• シーンを切り替えると自動的にDIする実装が切り替わる
VR用のシーンで使うInstaller
後はそのまま実行すれば終わり
• 設定に応じて自動的に実装が注入される
• SceneLoad時に自動的に注入されていく
DIはムズカシイ
• 疎結合な設計ができてないと効果がない
• オープン・クローズド原則
• 依存関係逆転の原則
設計の勉強をするには
• この資料を見て
• Unity開発で使える設計の話+Zenjectの紹介
• https://www.slideshare.net/torisoup/unityzenject
Zenjectを使う上での注意点
• DIの実行にはオブジェクトの存在をZenjectに認識させる必要
がある
• 直接Instantiateしたり、AddComponentするとDIされない
• あらかじめSceneに配置しておくか、Zenjectのコンテナ経由で
GameObjectを作る/AddComponentを実行する必要がある
Photonと相性が悪い
• Photon.Instantiateで生成したオブジェクトはZenjectが
検知できない
• Photon経由で作ったオブジェクトはDIが実行されない
解決策
• ZenAutoInjecterコンポーネントをアタッチする
• これを対象につけておくとオブジェクト生成後にZenjectに認識される
• 後追いでDIが実行されるようになる
ZenAutoInjectorを使う上での注意
• DIのタイミングがいつになるかわからない
• Start()の実行までにDIが実行されないことがある
• DIが終わったことを検知して処理を開始する仕組みにしよう
DIの実行を検知する方法
• メソッドインジェクションを使う
• DIが実行されたタイミングでメソッドが実行される
• その中でフラグを立てるなり、イベント飛ばすなりすればよい
https://github.com/TORISOUP/AR_VR_Viewer/blob/master/Assets/VrmArPlayer/
Scripts/Scene/Main/Common/SynchronizeCamera.cs#L30-L42
その他実装のコツ まとめ
• 非同期処理は対処法を知っておくべし
• async/await, Task, UniRxの使い方を覚えておくと良さげ
• Zenjectを使ったDIが非常に便利
• 無駄なif文/switch文を減らせる
• わざわざマネージャクラスをシングルトン化する必要がなくなる
• デバッグやテストがやりやすくなる
さいごに
現状の問題点
• 技術デモの領域を出ない設計になってる
• VR1人-AR1人、の1対1通信を想定した作りになってる
• VR複数-AR複数、の多対多は現状の設計じゃ無理
• スケール性がない
• まともにサービス化するなら通信サーバの開発、インフラ構築が必要
• 個人開発じゃ技術デモくらいが限界
さいごにまとめ
• VR空間をARで可視化するのは夢がある
• AR/MRデバイスがもうちょっと普及してくれたらありがたい
• VRMが便利でオススメ
• 簡単に人型アバターを動的ロードして扱えて良さげ
• 今後の3Dコンテンツの主流フォーマットになってほしいな

More Related Content

What's hot

What's hot (20)

【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
 
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
 
猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
 
日本一詳しい人が教えるUE4
日本一詳しい人が教えるUE4日本一詳しい人が教えるUE4
日本一詳しい人が教えるUE4
 
Photonのサービス選択の勘どころ
Photonのサービス選択の勘どころPhotonのサービス選択の勘どころ
Photonのサービス選択の勘どころ
 
UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-
UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-
UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
 
Cocos2d-xを用いた "LINE タワーライジング" の開発事例
Cocos2d-xを用いた "LINE タワーライジング" の開発事例Cocos2d-xを用いた "LINE タワーライジング" の開発事例
Cocos2d-xを用いた "LINE タワーライジング" の開発事例
 
UE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろうUE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろう
 
猫でも分かるUMG
猫でも分かるUMG猫でも分かるUMG
猫でも分かるUMG
 
猫でも分かるUE4のポストプロセスを使った演出・絵作り
猫でも分かるUE4のポストプロセスを使った演出・絵作り猫でも分かるUE4のポストプロセスを使った演出・絵作り
猫でも分かるUE4のポストプロセスを使った演出・絵作り
 
UnityでUI開発を高速化した件
UnityでUI開発を高速化した件UnityでUI開発を高速化した件
UnityでUI開発を高速化した件
 
ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx
 
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られたNintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
 
そうだPostProcess Materialで見た目を変えよう
そうだPostProcess Materialで見た目を変えようそうだPostProcess Materialで見た目を変えよう
そうだPostProcess Materialで見た目を変えよう
 
Epic Online Services でできること
Epic Online Services でできることEpic Online Services でできること
Epic Online Services でできること
 
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
MetaHumanサンプル解体新書  UNREAL FEST EXTREME 2021 SUMMERMetaHumanサンプル解体新書  UNREAL FEST EXTREME 2021 SUMMER
MetaHumanサンプル解体新書 UNREAL FEST EXTREME 2021 SUMMER
 
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
 

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

Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
Kaoru NAKAMURA
 
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
mecha mogera
 
HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編
Monaca
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublished
Yoichiro Sakurai
 
第5回業開中心会議
第5回業開中心会議第5回業開中心会議
第5回業開中心会議
Kaoru NAKAMURA
 

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

UnityとOculus Riftでフルダイブなゲームを作ってみた話
UnityとOculus Riftでフルダイブなゲームを作ってみた話UnityとOculus Riftでフルダイブなゲームを作ってみた話
UnityとOculus Riftでフルダイブなゲームを作ってみた話
 
Autowareの紹介と物体検出
Autowareの紹介と物体検出Autowareの紹介と物体検出
Autowareの紹介と物体検出
 
内蔵化、モバイル化に向かうDepthセンサー
内蔵化、モバイル化に向かうDepthセンサー内蔵化、モバイル化に向かうDepthセンサー
内蔵化、モバイル化に向かうDepthセンサー
 
Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13
Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13
Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
 
Pepper tech festival_2014_技術セッション基本
Pepper tech festival_2014_技術セッション基本Pepper tech festival_2014_技術セッション基本
Pepper tech festival_2014_技術セッション基本
 
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
 
A-Frameコンポーネントを公開しよう
A-Frameコンポーネントを公開しようA-Frameコンポーネントを公開しよう
A-Frameコンポーネントを公開しよう
 
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
 
喋って、DEMOで 伝える 僕がHerokuを使う理由
喋って、DEMOで 伝える 僕がHerokuを使う理由喋って、DEMOで 伝える 僕がHerokuを使う理由
喋って、DEMOで 伝える 僕がHerokuを使う理由
 
HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編
 
Xcode で gulp を使うお話
Xcode で gulp を使うお話Xcode で gulp を使うお話
Xcode で gulp を使うお話
 
UE4モバイルでノンゲームコンテンツ
UE4モバイルでノンゲームコンテンツUE4モバイルでノンゲームコンテンツ
UE4モバイルでノンゲームコンテンツ
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ
 
A-Frameで作ったギャラリーのお話
A-Frameで作ったギャラリーのお話A-Frameで作ったギャラリーのお話
A-Frameで作ったギャラリーのお話
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublished
 
第5回業開中心会議
第5回業開中心会議第5回業開中心会議
第5回業開中心会議
 
Presentation on your terminal
Presentation on your terminalPresentation on your terminal
Presentation on your terminal
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platform
 
今すぐ始められるモバイルVR〜あなたも今日からVRエンジニア〜
今すぐ始められるモバイルVR〜あなたも今日からVRエンジニア〜今すぐ始められるモバイルVR〜あなたも今日からVRエンジニア〜
今すぐ始められるモバイルVR〜あなたも今日からVRエンジニア〜
 

More from torisoup

More from torisoup (19)

Doozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_ltDoozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_lt
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
 
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunityUnityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解した
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
 
Observableで非同期処理
Observableで非同期処理Observableで非同期処理
Observableで非同期処理
 
Photon Cloud ことはじめ
Photon Cloud ことはじめPhoton Cloud ことはじめ
Photon Cloud ことはじめ
 
アバター生放送支援アプリ「アバれぽ」
アバター生放送支援アプリ「アバれぽ」アバター生放送支援アプリ「アバれぽ」
アバター生放送支援アプリ「アバれぽ」
 
コールバックと戦う話
コールバックと戦う話コールバックと戦う話
コールバックと戦う話
 
UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話
 
Task vs Observable
Task vs ObservableTask vs Observable
Task vs Observable
 
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
 
UniRxでPUNを使いやすくする
UniRxでPUNを使いやすくするUniRxでPUNを使いやすくする
UniRxでPUNを使いやすくする
 
はじめてのUniRx
はじめてのUniRxはじめてのUniRx
はじめてのUniRx
 
未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-
 
みくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウみくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウ
 
Unity講習会(初級)
Unity講習会(初級)Unity講習会(初級)
Unity講習会(初級)
 

Recently uploaded

Recently uploaded (7)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

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