SlideShare a Scribd company logo
PUN2×OculusQuestで
ハンドトラッキング
(のマルチプレイヤー)同期実装
登壇者:KENTO
Twitter : @okprogramming
仕事 : XR関連のR&D
話すこと
・Photon Unity Networking 2 を用いた同期通信のやり方
・OculusQuestのハンドトラッキングの流れ
・ハンドトラッキングの同期のやり方
なぜ話すのか?
引用元: https://uploadvr.com/sign-language-vr-asl/
海外勢が成功しているにも関わらず
日本語(日本人)の実装例が見つけられなかった。
同じ苦労をする人を一人でも減らしたい!!
大変
・Photon Unity Networking 2 を用いた同期通信のやり方
・OculusQuestのハンドトラッキングの流れ
・ハンドトラッキングの同期のやり方
PUN2 を用いた同期通信のやり方
・オブジェクト同期
・RPC(Remote procedure call)
・カスタムプロパティ
①お互いのクライアントにオブジェクトを生成
②手の座標を送り合う
③送られてきた座標で
相手クライアント側の手を動かす
例) ハンドトラッキングの同期
見た目 データ
・Photon Unity Networking 2 を用いた同期通信のやり方
・OculusQuestのハンドトラッキングの流れ
・ハンドトラッキングの同期のやり方
ハンドトラッキングの流れ
①手を認識
②ボーンとなるオブジェクトを生成
③手のメッシュを作成
④手のメッシュにボーンを設定
⑤生成したボーンを認識した手の関節の座標に合わせる
何が大変だったか
①手を認識
②ボーンとなるオブジェクトを生成
③手のメッシュを作成
④手のメッシュにボーンを設定
⑤生成したボーンを認識した手の関節の座標に合わせる
見た目 データ
Oculus Integrationは同期通信のためのライブラリではない。
見た目とデータを切り離すために
OVR系コンポーネントを切り分けていく。
・Photon Unity Networking 2 を用いた同期通信のやり方
・OculusQuestのハンドトラッキングの流れ
・ハンドトラッキングの同期のやり方
送信
受信
詰まりポイント
IPunObservable.OnPhotonSerializeView
➥ データをシリアライズ(直列化)して送信
順番が大切!
詰まりポイント
IOVRSkeletonDataProvider
から渡ってきたボーン情報の順番
➥“指先以外”→”指先”
引用元: https://qiita.com/divideby_zero/items/4949fadb2c60f810b3aa
送信
受信
もっと詳しい情報
Twitter : @okprogramming
Twitter : @Up_frontier
参考リンク
【Unity(C#),PUN2】OculusQuestのハンドトラッキング同期実装
https://qiita.com/OKsaiyowa/items/80fb857a285ee4aed95c
PUN2で始めるオンラインゲーム開発入門【その1】
https://connect.unity.com/p/pun2deshi-meruonraingemukai-fa-ru-men-sono1
アップフロンティア株式会社 note
https://note.com/upfrontier

More Related Content

What's hot

FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYOFINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
Game Tools & Middleware Forum
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
 
Node-REDのノード開発容易化ツール Node generator
Node-REDのノード開発容易化ツールNode generatorNode-REDのノード開発容易化ツールNode generator
Node-REDのノード開発容易化ツール Node generator
BMXUG
 
HoloLensで音声認識をする方法を色々試してみた
HoloLensで音声認識をする方法を色々試してみたHoloLensで音声認識をする方法を色々試してみた
HoloLensで音声認識をする方法を色々試してみた
Takahiro Miyaura
 
さるでも分かりたい9dofで作るクォータニオン姿勢
さるでも分かりたい9dofで作るクォータニオン姿勢さるでも分かりたい9dofで作るクォータニオン姿勢
さるでも分かりたい9dofで作るクォータニオン姿勢
ytanno
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
gree_tech
 
UnityとVuforiaで始めるAR開発
UnityとVuforiaで始めるAR開発UnityとVuforiaで始めるAR開発
UnityとVuforiaで始めるAR開発
Takashi Yoshinaga
 
StackStorm Workflowの設計
StackStorm Workflowの設計StackStorm Workflowの設計
StackStorm Workflowの設計
Shu Sugimoto
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
 
【Unite 2017 Tokyo】Unity+WebGLでゲームを開発・運用して見えてきたメリット・デメリット
【Unite 2017 Tokyo】Unity+WebGLでゲームを開発・運用して見えてきたメリット・デメリット【Unite 2017 Tokyo】Unity+WebGLでゲームを開発・運用して見えてきたメリット・デメリット
【Unite 2017 Tokyo】Unity+WebGLでゲームを開発・運用して見えてきたメリット・デメリット
Unite2017Tokyo
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介
Shinya Okano
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
torisoup
 
WebRTC Build MCU on browser
WebRTC Build MCU on browserWebRTC Build MCU on browser
WebRTC Build MCU on browser
mganeko
 
サムライスピリッツキャラクター制作事例 キャラクターモデル編
 サムライスピリッツキャラクター制作事例 キャラクターモデル編 サムライスピリッツキャラクター制作事例 キャラクターモデル編
サムライスピリッツキャラクター制作事例 キャラクターモデル編
SNK
 
キメるClojure
キメるClojureキメるClojure
キメるClojure
Yoshitaka Kawashima
 
あの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoRあの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoR
shinnosuke kugimiya
 
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Masahito Zembutsu
 
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
Masahito Zembutsu
 
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...Insight Technology, Inc.
 

What's hot (20)

FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYOFINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
Node-REDのノード開発容易化ツール Node generator
Node-REDのノード開発容易化ツールNode generatorNode-REDのノード開発容易化ツールNode generator
Node-REDのノード開発容易化ツール Node generator
 
HoloLensで音声認識をする方法を色々試してみた
HoloLensで音声認識をする方法を色々試してみたHoloLensで音声認識をする方法を色々試してみた
HoloLensで音声認識をする方法を色々試してみた
 
さるでも分かりたい9dofで作るクォータニオン姿勢
さるでも分かりたい9dofで作るクォータニオン姿勢さるでも分かりたい9dofで作るクォータニオン姿勢
さるでも分かりたい9dofで作るクォータニオン姿勢
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
UnityとVuforiaで始めるAR開発
UnityとVuforiaで始めるAR開発UnityとVuforiaで始めるAR開発
UnityとVuforiaで始めるAR開発
 
StackStorm Workflowの設計
StackStorm Workflowの設計StackStorm Workflowの設計
StackStorm Workflowの設計
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
 
【Unite 2017 Tokyo】Unity+WebGLでゲームを開発・運用して見えてきたメリット・デメリット
【Unite 2017 Tokyo】Unity+WebGLでゲームを開発・運用して見えてきたメリット・デメリット【Unite 2017 Tokyo】Unity+WebGLでゲームを開発・運用して見えてきたメリット・デメリット
【Unite 2017 Tokyo】Unity+WebGLでゲームを開発・運用して見えてきたメリット・デメリット
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
 
WebRTC Build MCU on browser
WebRTC Build MCU on browserWebRTC Build MCU on browser
WebRTC Build MCU on browser
 
サムライスピリッツキャラクター制作事例 キャラクターモデル編
 サムライスピリッツキャラクター制作事例 キャラクターモデル編 サムライスピリッツキャラクター制作事例 キャラクターモデル編
サムライスピリッツキャラクター制作事例 キャラクターモデル編
 
キメるClojure
キメるClojureキメるClojure
キメるClojure
 
あの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoRあの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoR
 
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
 
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
 
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
 

More from 尾上 兼透

リアル店舗連動型インフルエンサーARライブコマース
リアル店舗連動型インフルエンサーARライブコマースリアル店舗連動型インフルエンサーARライブコマース
リアル店舗連動型インフルエンサーARライブコマース
尾上 兼透
 
Gotanda unity18 withARハッカソンに参加した話
Gotanda unity18 withARハッカソンに参加した話Gotanda unity18 withARハッカソンに参加した話
Gotanda unity18 withARハッカソンに参加した話
尾上 兼透
 
翻訳VR作ってみた
翻訳VR作ってみた翻訳VR作ってみた
翻訳VR作ってみた
尾上 兼透
 
OculusQuestで音声認識
OculusQuestで音声認識OculusQuestで音声認識
OculusQuestで音声認識
尾上 兼透
 
PUN2 × OculusQuest でハンドトラッキング同期実装(プロジェクト公開しました)
PUN2 × OculusQuest でハンドトラッキング同期実装(プロジェクト公開しました)PUN2 × OculusQuest でハンドトラッキング同期実装(プロジェクト公開しました)
PUN2 × OculusQuest でハンドトラッキング同期実装(プロジェクト公開しました)
尾上 兼透
 
第1回 AROWスマホゲームアプリコンテスト 尾上兼透 応募作品
第1回 AROWスマホゲームアプリコンテスト 尾上兼透 応募作品第1回 AROWスマホゲームアプリコンテスト 尾上兼透 応募作品
第1回 AROWスマホゲームアプリコンテスト 尾上兼透 応募作品
尾上 兼透
 

More from 尾上 兼透 (6)

リアル店舗連動型インフルエンサーARライブコマース
リアル店舗連動型インフルエンサーARライブコマースリアル店舗連動型インフルエンサーARライブコマース
リアル店舗連動型インフルエンサーARライブコマース
 
Gotanda unity18 withARハッカソンに参加した話
Gotanda unity18 withARハッカソンに参加した話Gotanda unity18 withARハッカソンに参加した話
Gotanda unity18 withARハッカソンに参加した話
 
翻訳VR作ってみた
翻訳VR作ってみた翻訳VR作ってみた
翻訳VR作ってみた
 
OculusQuestで音声認識
OculusQuestで音声認識OculusQuestで音声認識
OculusQuestで音声認識
 
PUN2 × OculusQuest でハンドトラッキング同期実装(プロジェクト公開しました)
PUN2 × OculusQuest でハンドトラッキング同期実装(プロジェクト公開しました)PUN2 × OculusQuest でハンドトラッキング同期実装(プロジェクト公開しました)
PUN2 × OculusQuest でハンドトラッキング同期実装(プロジェクト公開しました)
 
第1回 AROWスマホゲームアプリコンテスト 尾上兼透 応募作品
第1回 AROWスマホゲームアプリコンテスト 尾上兼透 応募作品第1回 AROWスマホゲームアプリコンテスト 尾上兼透 応募作品
第1回 AROWスマホゲームアプリコンテスト 尾上兼透 応募作品
 

Recently uploaded

シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Eventシグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
 
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet DocumentationRaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
GrapeCity, inc.
 
Bhyve Management Daemon Version 3.0 on FreBSD
Bhyve Management Daemon Version 3.0 on FreBSDBhyve Management Daemon Version 3.0 on FreBSD
Bhyve Management Daemon Version 3.0 on FreBSD
Yuichiro Naito
 
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdfクラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
TatsuyaHanayama
 
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer EventSolanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
 
RayBarcode Product Description Documentation - 2024.6.19
RayBarcode Product Description Documentation - 2024.6.19RayBarcode Product Description Documentation - 2024.6.19
RayBarcode Product Description Documentation - 2024.6.19
GrapeCity, inc.
 
RayPen Product Description Documentation - 2024.6.19
RayPen Product Description Documentation - 2024.6.19RayPen Product Description Documentation - 2024.6.19
RayPen Product Description Documentation - 2024.6.19
GrapeCity, inc.
 
RaySheet Product Description Documentation - 2024.6.19
RaySheet Product Description Documentation - 2024.6.19RaySheet Product Description Documentation - 2024.6.19
RaySheet Product Description Documentation - 2024.6.19
GrapeCity, inc.
 

Recently uploaded (8)

シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Eventシグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
 
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet DocumentationRaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
 
Bhyve Management Daemon Version 3.0 on FreBSD
Bhyve Management Daemon Version 3.0 on FreBSDBhyve Management Daemon Version 3.0 on FreBSD
Bhyve Management Daemon Version 3.0 on FreBSD
 
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdfクラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
 
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer EventSolanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
 
RayBarcode Product Description Documentation - 2024.6.19
RayBarcode Product Description Documentation - 2024.6.19RayBarcode Product Description Documentation - 2024.6.19
RayBarcode Product Description Documentation - 2024.6.19
 
RayPen Product Description Documentation - 2024.6.19
RayPen Product Description Documentation - 2024.6.19RayPen Product Description Documentation - 2024.6.19
RayPen Product Description Documentation - 2024.6.19
 
RaySheet Product Description Documentation - 2024.6.19
RaySheet Product Description Documentation - 2024.6.19RaySheet Product Description Documentation - 2024.6.19
RaySheet Product Description Documentation - 2024.6.19
 

PUN2×OculusQuestでハンドトラッキング同期実装