Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
トラッキングできたら アバターを動かしたい!
Search
sh_akira
June 11, 2021
Programming
0
2k
トラッキングできたら アバターを動かしたい!
https://connpass.com/event/214152/
トラッキング技術勉強会の登壇資料です
sh_akira
June 11, 2021
Tweet
Share
More Decks by sh_akira
See All by sh_akira
【令和最新版】意のままに身体を動かすキャリブレーション
sh_akira
3
2.3k
Other Decks in Programming
See All in Programming
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDesktopの紹介
thehaigo
2
910
Synchronizationを支える技術
s_shimotori
1
150
Googleのテストサイズを活用したテスト環境の構築
toms74209200
0
270
go.mod、DockerfileやCI設定に分散しがちなGoのバージョンをまとめて管理する / Go Connect #3
arthur1
10
2.3k
C#/.NETのこれまでのふりかえり
tomokusaba
1
150
VR HMDとしてのVision Pro+ゲーム開発について
yasei_no_otoko
0
100
Jakarta Concurrencyによる並行処理プログラミングの始め方 (JJUG CCC 2024 Fall)
tnagao7
1
230
Amazon Neptuneで始めてみるグラフDB-OpenSearchによるグラフの全文検索-
satoshi256kbyte
4
320
推し活の ハイトラフィックに立ち向かう Railsとアーキテクチャ - Kaigi on Rails 2024
falcon8823
6
2.1k
Vitest Browser Mode への期待 / Vitest Browser Mode
odanado
PRO
2
1.7k
Kotlin2でdataクラスの copyメソッドを禁止する/Data class copy function to have the same visibility as constructor
eichisanden
1
130
What’s New in Compose Multiplatform - A Live Tour (droidcon London 2024)
zsmb
1
330
Featured
See All Featured
Navigating Team Friction
lara
183
14k
Building Better People: How to give real-time feedback that sticks.
wjessup
363
19k
KATA
mclloyd
29
13k
Embracing the Ebb and Flow
colly
84
4.4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
7
150
What's in a price? How to price your products and services
michaelherold
243
12k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Producing Creativity
orderedlist
PRO
341
39k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.8k
Building an army of robots
kneath
302
42k
Why You Should Never Use an ORM
jnunemaker
PRO
53
9k
Transcript
トラッキングできたら アバターを動かしたい! バーチャルモーションキャプチャー、VMCProtocol、VMT、DVRSDK あきら@VMC 2021/06/11
あきら DMM VR lab所属 チーフエンジニア/コミュニティマネージャー バーチャルモーションキャプチャーの作者です Twitter: @sh_akira GitHub: sh-akira
https://akira.works/
バーチャルモーションキャプ チャー VirtualMotionCapture 3
バーチャルモーションキャプチャーとはとは 4
バーチャルモーションキャプチャーとは 5 ➢ トラッキングしてVRMアバターを動かせるアプリ ➢ 改良を続けているキャリブレーション ➢ VRゲームと同時起動可能
➢ コントローラーやトラッカーを好きな部位に自由に割り当て可能 ➢ コントローラー/キーボード/MIDIのボタンに自由にキー設定可能 ➢ OSCでモーションデータの送受信が可能(VMCProtocol) ➢ MR合成に対応 ➢ 通称 ばもきゃ ➢ https://vmc.info/ オープンソースで全てのソースコードを公開中
動きはSteamVR+Final IKがベース 6 ➢ SteamVR Pluginの機能には依存せずに直接OpenVRを叩いている ➢ OpenVRの初期化を自分で書くことで同時起動をしている ➢ キャリブレーション処理をこだわってFinal
IKに渡す
キャリブレーションは手の位置を最優先 7 詳細は歌舞伎座.tech#15で話した「バーチャルモーションキャプチャーとは」の 資料を参照してください https://akira.fanbox.cc/posts/168685
同時起動はOpenVRをOverlayモードで初期化 8 選べる種別: • Scene : 通常のVRゲーム (SteamVRの初期化あり/複数起動不可) •
Overlay : オーバーレイアプリ (SteamVRの初期化あり/複数起動可) • Background : (SteamVRの初期化なし/複数起動可/SteamVRがいないとエラー) • Utility : セットアップ用 (ハードウェアが無くても起動する/複数起動?) →ばもきゃは同時起動したいしSteamVRが必須なのでOverlayを選択 Scene以外だと通常の方法では3DモデルをHMDに表示できない。 SteamVRダッシュボードと同じように2Dのパネルをオーバーレイ表示できる。
つまり・・・ 9 ➢ ばもきゃはどんな(Steam)VRのゲームとも同時起動できる ➢ 良い感じのキャリブレーションで良い感じにアバターが動く ➢ とりあえずアバター動かすならこれ
せっかく良い感じのモーションが取れてるなら他でも使いたい→
VMCProtocol Virtual Motion Capture Protocol 10
Virtual Motion Capture Protocol (VMCProtocol)とは 11 ➢ バーチャルモーションキャプチャーのあらゆる情報を 送受信するためのプロトコルとして生まれました。 ➢
UDP(OSC)とVRMを前提に、シンプルな数値・文字列の送受信のみで構 成されています。 ➢ 高度な知識が必要なアバター制御やVR機器の取り扱いを ばもきゃ等に任せ、利用者は受信ライブラリを使うだけで とてもシンプルにアバター撮影環境を構築できます。 ➢ https://protocol.vmc.info/ メインメンテナ:gpsnmeajp(@Seg_Faul)
VMCProtocol 受信ライブラリ 12 Unity Unreal Engine EVMC4U VMC4UE @Seg_Faul
@HAL9_HARUKU
EVMC4Uとはとは 13
14 広がるVMCProtocolの輪 Performer(モーション送信) バーチャルモーションキャプチャー waidayo 360KinectGum ThreeDPoseTracker/TDPT VSeeFace Marionette(モーション受信) EVMC4U
VMC4UE Virtual Streamer 360 だれでもVsinger Collaboll Oredayo4V/4M VSeeFace VMC-Websocket-OBS ゆかりねっとコネクター VMCProtocolModelViewer VMCProtocolRotationCamera Assistant(拡張情報送信) waidayo QuestOSCTransformSender Simple Motion Tracker VMCOculus Sknuckle VMCSaberTraining vmc2bvh パイロットクロス VMCAvatar-BS VMCProtocolMonitor VMCbroadcaster VMCProtocolRefrector Remote Marionette
15 構成例1 waidayo (iPhoneでフェイストラッキング) Sknuckle (Noitom Hi5でハンドトラッキング) バーチャルモーションキャプチャー (トラッカーでフルボディトラッキング) EVMC4U
(Unityでオリジナルの配信環境を作る) デバイス VMCProtocol
16 構成例2 ThreeDPoseTracker(Win) / TDPT(iOS) (カメラの映像で全身トラッキング) バーチャルモーションキャプチャー (仮想トラッカーで受け取る) VSeeFace (ボーン情報で受け取る)
デバイス VMCProtocol Oredayo4V(Win) / 4M(Win, Mac, Linux) (ボーン情報で受け取る)
構成例3 ばもきゃ (フルトラ) デバイス VMCProtocol EVMC4U (遠隔地とコラボする) #解釈不一致 / memex インターネット経由
つまり・・・ 18 ➢ VMCProtocolはアバターを動かしたいときのあらゆる情報を 送受信できるプロトコル ➢ 多種多様な対応アプリを組み合わせてあらゆるスタイルに適応 ➢ VMCProtocolに対応すれば既存の資産を活かせる
せっかくトラッキングが出来てるならSteamVRで動かしたい→
VMT Virtual Motion Tracker 19
VMT (Virtual Motion Tracker)とは 20 ➢ シンプルなOpenVR 仮想トラッカードライバ ➢ UDP(OSC)で姿勢を受け取り、トラッカーとして
SteamVR上で利用できます。 ➢ 難易度の高いVRトラッキングデバイスの自作をと ても簡単に行えるようになります。 ➢ https://github.com/gpsnmeajp/VirtualMotionTracker 作者:gpsnmeajp(@Seg_Faul)
どのくらい簡単か 21 OSCで、 /VMT/Room/Unityに トラッカー番号と PosとRot送るだけです。
使われているアプリ 22 KawaiiSitter 通常の3点トラッキングで可愛く座ることが できるアプリ。腰と足の位置を自動計算し てVMTで仮想的に動かす MocapForAll 普通のWebカメラを複数使い簡易なモー ションキャプチャをするアプリ。 Unity/UEで受信するサンプルもある
つまり・・・ 23 ➢ VMTは簡単に使えるSteamVRの仮想トラッカー ➢ 難しいトラッカードライバの事を考える必要がなくなる ➢ 誰でもSteamVR対応のトラッカーデバイスが作れちゃう
トラッカーが動いたらトラッカーを使うアプリも作りたい→
DVRSDK DMM VR Connect SDK 24
DVRSDK(DMM VR Connect SDK)とはとは 25
DVRSDK (DMM VR Connect SDK)とは 26 ➢ DMM VR ConnectをUnityで使えるSDK
➢ 誰でもつかえて無料配布中 ➢ サンプル開けばすぐに使える簡単設計 ➢ VRのアプリ作りたいときに困るあれこれが 詰まったSDKです。 ➢ https://devs.connect.vrlab.dmm.com/
27 DVRSDKのコンポーネントたち DVRAuth Connectの認証 ユーザーデータの取得 アバターデータの取得 他者のアバターの取得も可能 DVRStreaming Unityから直接RTMP配信 YouTube/Twitch等に配信可能
Oculus Quest/Quest2対応 Windowsも対応 DVRCamera 第三者視点カメラ カメラワーク オートシーケンス 複数カメラの制御 DVRAvatar SteamVRのトラッカー処理 VRMの様々な制御 キャリブレーション 表情や指の制御、自動まばたき
トラッカーでアバター動かすには難しいこといっぱい 28 ➢ まずSteamVRでトラッカーちゃんと扱うのが難しい ➢ ボタンの取得とかSkeletal Inputも大変 ➢ アバターは人によって全然大きさも身体の比率も違う ➢
キャリブレーションが大変 ➢ Final IKを理解するのも難しい ➢ 表情の実装も必要だしリップシンクが欲しいし合成が必要 ➢ そもそもアバターのファイルの管理も要るし・・・
29 SteamVRむずかしいんですけど SteamVR 1.x →トラッカーはIndex番号で管理する SteamVR 2.x →トラッカーは役割(ロール)で管理する (ボタンはBindingして・・・指はSkeletalで・・・) 例えば2.xで腰(Waist)にトラッカーを割り当てて使いたいときは
PoseのActionをSteamVR_Inputに定義して、SteamVRでそのActionを バインディングして、それをデフォルトバインディングとしてアプリに入れ て、Actionのフルパスを取得して、Actionのハンドルを取得して、 InputSourceハンドルを取得して、ActionとInputSourceからPoseを取得 して、生のMatrixからUnity座標を取得します。
30 もちろん大丈夫です 3点(頭と両手)~11点(頭、両手、両ひじ、胸、腰、両ひざ、両足)を トラッカー3つまではVRChat方式でロール関係なく自動で、 それ以上はロールを参考に自動で割り当てます
31 キャリブレーションもむずかしいんですけど! Final IKで出来ると聞いてやってみると超いろんなことが起きる
32 なんと DVRSDKには ソースコードごと 全て入ってます すべてを詰め込んだキャリブレーション処理もDVRSDKを入れれば 誰でもご利用可能です! (さらに指のSkeletal Inputとスティックでの表情変更も入ってます)
33 身長だけで自動計算をするキャリブレーション 詳細はDMM meetup #27で話した「意のままに身体を動かすキャリブレーション」の 資料を参照してください https://dmm.connpass.com/event/208446/
つまり・・・ 34 ➢ DVRSDKは様々なアバターの処理を詰め込んだSDK ➢ 難しいアバターの動かし方を考える必要がなくなる ➢ 何かアプリを作るとき最初に入れておくととても楽!
35 まとめ バーチャルモーションキャプチャー とりあえずアバター動かした くなったらこれ!沢山の連携 ツールでやりたいことがきっ と見つかります。 vmc.info VMCProtocol モーションを送受信したくなった
らこれ!多彩なビューアーも 揃っているので色々な拡張と組 み合わせられます。 protocol.vmc.info VMT SteamVRの仮想トラッカーが 作りたくなったらこれ!超簡 単に仮想トラッカーデバイス が使えてしまいます。 github.com/gpsnmeajp/VirtualMotionTracker DVRSDK アプリにアバター入れたくなったら これ!難しい事無しで入れるだけ で動きます。VRアプリ開発するとき は最初に入れよう。 devs.connect.vrlab.dmm.com