SlideShare uma empresa Scribd logo
1 de 100
Baixar para ler 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コンテンツの主流フォーマットになってほしいな

Mais conteúdo relacionado

Mais procurados

Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャtorisoup
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす増田 亨
 
【CEDEC2018】Scriptable Render Pipelineを使ってみよう
【CEDEC2018】Scriptable Render Pipelineを使ってみよう【CEDEC2018】Scriptable Render Pipelineを使ってみよう
【CEDEC2018】Scriptable Render Pipelineを使ってみようUnity Technologies Japan K.K.
 
ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx torisoup
 
UnityでUI開発を高速化した件
UnityでUI開発を高速化した件UnityでUI開発を高速化した件
UnityでUI開発を高速化した件Grenge, Inc.
 
Editor Utility Widgetで色々便利にしてみた。
Editor Utility Widgetで色々便利にしてみた。Editor Utility Widgetで色々便利にしてみた。
Editor Utility Widgetで色々便利にしてみた。IndieusGames
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化DeNA
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解したtorisoup
 
はじめてのUniRx
はじめてのUniRxはじめてのUniRx
はじめてのUniRxtorisoup
 
UniRxでMV(R)Pパターン をやってみた
UniRxでMV(R)PパターンをやってみたUniRxでMV(R)Pパターンをやってみた
UniRxでMV(R)Pパターン をやってみたtorisoup
 
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術Unity Technologies Japan K.K.
 

Mais procurados (20)

Epic Online Services でできること
Epic Online Services でできることEpic Online Services でできること
Epic Online Services でできること
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
 
Photonのサービス選択の勘どころ
Photonのサービス選択の勘どころPhotonのサービス選択の勘どころ
Photonのサービス選択の勘どころ
 
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
 
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
 
【CEDEC2018】Scriptable Render Pipelineを使ってみよう
【CEDEC2018】Scriptable Render Pipelineを使ってみよう【CEDEC2018】Scriptable Render Pipelineを使ってみよう
【CEDEC2018】Scriptable Render Pipelineを使ってみよう
 
ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx
 
多機能ボイチャを簡単に導入する方法
多機能ボイチャを簡単に導入する方法多機能ボイチャを簡単に導入する方法
多機能ボイチャを簡単に導入する方法
 
UnityでUI開発を高速化した件
UnityでUI開発を高速化した件UnityでUI開発を高速化した件
UnityでUI開発を高速化した件
 
Editor Utility Widgetで色々便利にしてみた。
Editor Utility Widgetで色々便利にしてみた。Editor Utility Widgetで色々便利にしてみた。
Editor Utility Widgetで色々便利にしてみた。
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解した
 
はじめてのUniRx
はじめてのUniRxはじめてのUniRx
はじめてのUniRx
 
Online MultiPlay Game Design
Online MultiPlay Game DesignOnline MultiPlay Game Design
Online MultiPlay Game Design
 
UniRxでMV(R)Pパターン をやってみた
UniRxでMV(R)PパターンをやってみたUniRxでMV(R)Pパターンをやってみた
UniRxでMV(R)Pパターン をやってみた
 
かわいい女の子になりたいんや! UE4の最新機能を使ってVTuberしてみた!
かわいい女の子になりたいんや! UE4の最新機能を使ってVTuberしてみた!かわいい女の子になりたいんや! UE4の最新機能を使ってVTuberしてみた!
かわいい女の子になりたいんや! UE4の最新機能を使ってVTuberしてみた!
 
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
 
【Unity道場】使って覚えるTileMap
【Unity道場】使って覚えるTileMap【Unity道場】使って覚えるTileMap
【Unity道場】使って覚えるTileMap
 
ロボット好き集まれ!こいつ、動くぞ。星と翼のパラドクス開発事例
ロボット好き集まれ!こいつ、動くぞ。星と翼のパラドクス開発事例ロボット好き集まれ!こいつ、動くぞ。星と翼のパラドクス開発事例
ロボット好き集まれ!こいつ、動くぞ。星と翼のパラドクス開発事例
 

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

UnityとOculus Riftでフルダイブなゲームを作ってみた話
UnityとOculus Riftでフルダイブなゲームを作ってみた話UnityとOculus Riftでフルダイブなゲームを作ってみた話
UnityとOculus Riftでフルダイブなゲームを作ってみた話Shohei Yamamoto
 
Autowareの紹介と物体検出
Autowareの紹介と物体検出Autowareの紹介と物体検出
Autowareの紹介と物体検出Yuhki Iida
 
内蔵化、モバイル化に向かうDepthセンサー
内蔵化、モバイル化に向かうDepthセンサー内蔵化、モバイル化に向かうDepthセンサー
内蔵化、モバイル化に向かうDepthセンサーKaoru NAKAMURA
 
Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13
Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13
Oculus 体験・勉強会「VRコンテンツ制作入門」 2015/05/13Hiromichi Yamada
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンスKaoru NAKAMURA
 
Pepper tech festival_2014_技術セッション基本
Pepper tech festival_2014_技術セッション基本Pepper tech festival_2014_技術セッション基本
Pepper tech festival_2014_技術セッション基本Atelier Akihabara
 
現実世界コンピューティング 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...Yusuke Furuta
 
A-Frameコンポーネントを公開しよう
A-Frameコンポーネントを公開しようA-Frameコンポーネントを公開しよう
A-Frameコンポーネントを公開しようJun Ito
 
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)
とっとるびー第29回発表資料(RICOH THETAの全天球画像を部分転送して遠隔地のOculusでみる)mecha mogera
 
喋って、DEMOで 伝える 僕がHerokuを使う理由
喋って、DEMOで 伝える 僕がHerokuを使う理由喋って、DEMOで 伝える 僕がHerokuを使う理由
喋って、DEMOで 伝える 僕がHerokuを使う理由Masaru Gushiken
 
HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編Monaca
 
Xcode で gulp を使うお話
Xcode で gulp を使うお話Xcode で gulp を使うお話
Xcode で gulp を使うお話Yoichiro Sakurai
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ真吾 吉田
 
A-Frameで作ったギャラリーのお話
A-Frameで作ったギャラリーのお話A-Frameで作ったギャラリーのお話
A-Frameで作ったギャラリーのお話KatsuyaENDOH
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublishedYoichiro Sakurai
 
第5回業開中心会議
第5回業開中心会議第5回業開中心会議
第5回業開中心会議Kaoru NAKAMURA
 
Presentation on your terminal
Presentation on your terminalPresentation on your terminal
Presentation on your terminalTakuya ASADA
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platformToru Yamaguchi
 
今すぐ始められるモバイルVR〜あなたも今日からVRエンジニア〜
今すぐ始められるモバイルVR〜あなたも今日からVRエンジニア〜今すぐ始められるモバイルVR〜あなたも今日からVRエンジニア〜
今すぐ始められるモバイルVR〜あなたも今日からVRエンジニア〜Kazuya Hiruma
 

Semelhante a 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エンジニア〜
 

Mais de torisoup

Doozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_ltDoozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_lttorisoup
 
UniTask入門
UniTask入門UniTask入門
UniTask入門torisoup
 
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunityUnityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunitytorisoup
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作るtorisoup
 
Photon Cloud ことはじめ
Photon Cloud ことはじめPhoton Cloud ことはじめ
Photon Cloud ことはじめtorisoup
 
アバター生放送支援アプリ「アバれぽ」
アバター生放送支援アプリ「アバれぽ」アバター生放送支援アプリ「アバれぽ」
アバター生放送支援アプリ「アバれぽ」torisoup
 
UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話torisoup
 
Task vs Observable
Task vs ObservableTask vs Observable
Task vs Observabletorisoup
 
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話torisoup
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介torisoup
 
UniRxでPUNを使いやすくする
UniRxでPUNを使いやすくするUniRxでPUNを使いやすくする
UniRxでPUNを使いやすくするtorisoup
 
未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-torisoup
 
みくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウみくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウtorisoup
 
Unity講習会(初級)
Unity講習会(初級)Unity講習会(初級)
Unity講習会(初級)torisoup
 

Mais de torisoup (14)

Doozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_ltDoozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_lt
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 
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を作る
 
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でオンラインゲーム作った話
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
 
UniRxでPUNを使いやすくする
UniRxでPUNを使いやすくするUniRxでPUNを使いやすくする
UniRxでPUNを使いやすくする
 
未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-
 
みくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウみくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウ
 
Unity講習会(初級)
Unity講習会(初級)Unity講習会(初級)
Unity講習会(初級)
 

Último

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 

Último (8)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 

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