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
2.3k
トラッキングできたら アバターを動かしたい!
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.7k
Other Decks in Programming
See All in Programming
AWS×クラウドネイティブソフトウェア設計 / AWS x Cloud-Native Software Design
nrslib
16
3.2k
「やめとこ」がなくなった — 1月にZennを始めて22本書いた AI共創開発のリアル
atani14
0
390
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
15
8.7k
AI 開発合宿を通して得た学び
niftycorp
PRO
0
120
Claude Codeログ基盤の構築
giginet
PRO
7
3.3k
2026年は Rust 置き換えが流行る! / 20260220-niigata-5min-tech
girigiribauer
0
230
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
1.1k
[SF Ruby Feb'26] The Silicon Heel
palkan
0
100
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
390
クライアントワークでSREをするということ。あるいは事業会社におけるSREと同じこと・違うこと
nnaka2992
1
340
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
470
Goの型安全性で実現する複数プロダクトの権限管理
ishikawa_pro
2
330
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
480
Crafting Experiences
bethany
1
87
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
SEO for Brand Visibility & Recognition
aleyda
0
4.4k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
640
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
120
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
Evolving SEO for Evolving Search Engines
ryanjones
0
150
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