$30 off During Our Annual Pro Sale. View Details »

トラッキングできたら アバターを動かしたい!

トラッキングできたら アバターを動かしたい!

https://connpass.com/event/214152/
トラッキング技術勉強会の登壇資料です

sh_akira

June 11, 2021
Tweet

More Decks by sh_akira

Other Decks in Programming

Transcript

  1. トラッキングできたら
    アバターを動かしたい!
    バーチャルモーションキャプチャー、VMCProtocol、VMT、DVRSDK
    あきら@VMC
    2021/06/11

    View Slide

  2. あきら
    DMM VR lab所属
    チーフエンジニア/コミュニティマネージャー
    バーチャルモーションキャプチャーの作者です
    Twitter: @sh_akira
    GitHub: sh-akira
    https://akira.works/

    View Slide

  3. バーチャルモーションキャプ
    チャー
    VirtualMotionCapture
    3

    View Slide

  4. バーチャルモーションキャプチャーとはとは
    4

    View Slide

  5. バーチャルモーションキャプチャーとは
    5
    ➢ トラッキングしてVRMアバターを動かせるアプリ

    ➢ 改良を続けているキャリブレーション

    ➢ VRゲームと同時起動可能

    ➢ コントローラーやトラッカーを好きな部位に自由に割り当て可能

    ➢ コントローラー/キーボード/MIDIのボタンに自由にキー設定可能

    ➢ OSCでモーションデータの送受信が可能(VMCProtocol)

    ➢ MR合成に対応

    ➢ 通称 ばもきゃ

    ➢ https://vmc.info/

    オープンソースで全てのソースコードを公開中


    View Slide

  6. 動きはSteamVR+Final IKがベース
    6
    ➢ SteamVR Pluginの機能には依存せずに直接OpenVRを叩いている

    ➢ OpenVRの初期化を自分で書くことで同時起動をしている

    ➢ キャリブレーション処理をこだわってFinal IKに渡す


    View Slide

  7. キャリブレーションは手の位置を最優先
    7
    詳細は歌舞伎座.tech#15で話した「バーチャルモーションキャプチャーとは」の
    資料を参照してください https://akira.fanbox.cc/posts/168685

    View Slide

  8. 同時起動はOpenVRをOverlayモードで初期化
    8
    選べる種別:

    ● Scene : 通常のVRゲーム (SteamVRの初期化あり/複数起動不可)

    ● Overlay : オーバーレイアプリ (SteamVRの初期化あり/複数起動可)

    ● Background : (SteamVRの初期化なし/複数起動可/SteamVRがいないとエラー)

    ● Utility : セットアップ用 (ハードウェアが無くても起動する/複数起動?)

    →ばもきゃは同時起動したいしSteamVRが必須なのでOverlayを選択


    Scene以外だと通常の方法では3DモデルをHMDに表示できない。

    SteamVRダッシュボードと同じように2Dのパネルをオーバーレイ表示できる。

    View Slide

  9. つまり・・・
    9
    ➢ ばもきゃはどんな(Steam)VRのゲームとも同時起動できる

    ➢ 良い感じのキャリブレーションで良い感じにアバターが動く

    ➢ とりあえずアバター動かすならこれ



    せっかく良い感じのモーションが取れてるなら他でも使いたい→  

    View Slide

  10. VMCProtocol
    Virtual Motion Capture Protocol
    10

    View Slide

  11. Virtual Motion Capture Protocol (VMCProtocol)とは
    11
    ➢ バーチャルモーションキャプチャーのあらゆる情報を

    送受信するためのプロトコルとして生まれました。

    ➢ UDP(OSC)とVRMを前提に、シンプルな数値・文字列の送受信のみで構
    成されています。

    ➢ 高度な知識が必要なアバター制御やVR機器の取り扱いを

    ばもきゃ等に任せ、利用者は受信ライブラリを使うだけで

    とてもシンプルにアバター撮影環境を構築できます。

    ➢ https://protocol.vmc.info/  メインメンテナ:gpsnmeajp(@Seg_Faul)

    View Slide

  12. VMCProtocol 受信ライブラリ
    12
    Unity


    Unreal Engine

    EVMC4U
 VMC4UE

    @Seg_Faul
 @HAL9_HARUKU


    View Slide

  13. EVMC4Uとはとは
    13

    View Slide

  14. 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

    View Slide

  15. 15
    構成例1
    waidayo
    (iPhoneでフェイストラッキング)
    Sknuckle
    (Noitom Hi5でハンドトラッキング)
    バーチャルモーションキャプチャー
    (トラッカーでフルボディトラッキング)
    EVMC4U
    (Unityでオリジナルの配信環境を作る)
    デバイス VMCProtocol

    View Slide

  16. 16
    構成例2
    ThreeDPoseTracker(Win) / TDPT(iOS)
    (カメラの映像で全身トラッキング)
    バーチャルモーションキャプチャー
    (仮想トラッカーで受け取る)
    VSeeFace
    (ボーン情報で受け取る)
    デバイス VMCProtocol
    Oredayo4V(Win) / 4M(Win, Mac, Linux)
    (ボーン情報で受け取る)

    View Slide

  17. 構成例3
    ばもきゃ
    (フルトラ)
    デバイス VMCProtocol
    EVMC4U
    (遠隔地とコラボする)   #解釈不一致 / memex
    インターネット経由

    View Slide

  18. つまり・・・
    18
    ➢ VMCProtocolはアバターを動かしたいときのあらゆる情報を

    送受信できるプロトコル

    ➢ 多種多様な対応アプリを組み合わせてあらゆるスタイルに適応

    ➢ VMCProtocolに対応すれば既存の資産を活かせる


    せっかくトラッキングが出来てるならSteamVRで動かしたい→  

    View Slide

  19. VMT
    Virtual Motion Tracker
    19

    View Slide

  20. VMT (Virtual Motion Tracker)とは
    20
    ➢ シンプルなOpenVR 仮想トラッカードライバ

    ➢ UDP(OSC)で姿勢を受け取り、トラッカーとして
    SteamVR上で利用できます。

    ➢ 難易度の高いVRトラッキングデバイスの自作をと
    ても簡単に行えるようになります。


    ➢ https://github.com/gpsnmeajp/VirtualMotionTracker

    作者:gpsnmeajp(@Seg_Faul)


    View Slide

  21. どのくらい簡単か
    21
    OSCで、

    /VMT/Room/Unityに

    トラッカー番号と

    PosとRot送るだけです。


    View Slide

  22. 使われているアプリ
    22
    KawaiiSitter

    通常の3点トラッキングで可愛く座ることが
    できるアプリ。腰と足の位置を自動計算し
    てVMTで仮想的に動かす

    MocapForAll

    普通のWebカメラを複数使い簡易なモー
    ションキャプチャをするアプリ。

    Unity/UEで受信するサンプルもある


    View Slide

  23. つまり・・・
    23
    ➢ VMTは簡単に使えるSteamVRの仮想トラッカー

    ➢ 難しいトラッカードライバの事を考える必要がなくなる

    ➢ 誰でもSteamVR対応のトラッカーデバイスが作れちゃう



    トラッカーが動いたらトラッカーを使うアプリも作りたい→  

    View Slide

  24. DVRSDK
    DMM VR Connect SDK
    24

    View Slide

  25. DVRSDK(DMM VR Connect SDK)とはとは
    25

    View Slide

  26. DVRSDK (DMM VR Connect SDK)とは
    26
    ➢ DMM VR ConnectをUnityで使えるSDK

    ➢ 誰でもつかえて無料配布中

    ➢ サンプル開けばすぐに使える簡単設計

    ➢ VRのアプリ作りたいときに困るあれこれが

    詰まったSDKです。


    ➢ https://devs.connect.vrlab.dmm.com/


    View Slide

  27. 27
    DVRSDKのコンポーネントたち
    DVRAuth
    Connectの認証
    ユーザーデータの取得
    アバターデータの取得
    他者のアバターの取得も可能
    DVRStreaming
    Unityから直接RTMP配信
    YouTube/Twitch等に配信可能
    Oculus Quest/Quest2対応
    Windowsも対応
    DVRCamera
    第三者視点カメラ
    カメラワーク
    オートシーケンス
    複数カメラの制御
    DVRAvatar
    SteamVRのトラッカー処理
    VRMの様々な制御
    キャリブレーション
    表情や指の制御、自動まばたき

    View Slide

  28. トラッカーでアバター動かすには難しいこといっぱい
    28
    ➢ まずSteamVRでトラッカーちゃんと扱うのが難しい

    ➢ ボタンの取得とかSkeletal Inputも大変

    ➢ アバターは人によって全然大きさも身体の比率も違う

    ➢ キャリブレーションが大変

    ➢ Final IKを理解するのも難しい

    ➢ 表情の実装も必要だしリップシンクが欲しいし合成が必要

    ➢ そもそもアバターのファイルの管理も要るし・・・


    View Slide

  29. 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座標を取得します。

    View Slide

  30. 30
    もちろん大丈夫です
    3点(頭と両手)~11点(頭、両手、両ひじ、胸、腰、両ひざ、両足)を
    トラッカー3つまではVRChat方式でロール関係なく自動で、
    それ以上はロールを参考に自動で割り当てます

    View Slide

  31. 31
    キャリブレーションもむずかしいんですけど!
    Final IKで出来ると聞いてやってみると超いろんなことが起きる

    View Slide

  32. 32
    なんと
    DVRSDKには
    ソースコードごと
    全て入ってます
    すべてを詰め込んだキャリブレーション処理もDVRSDKを入れれば
    誰でもご利用可能です!
    (さらに指のSkeletal Inputとスティックでの表情変更も入ってます)

    View Slide

  33. 33
    身長だけで自動計算をするキャリブレーション
    詳細はDMM meetup #27で話した「意のままに身体を動かすキャリブレーション」の
    資料を参照してください https://dmm.connpass.com/event/208446/

    View Slide

  34. つまり・・・
    34
    ➢ DVRSDKは様々なアバターの処理を詰め込んだSDK

    ➢ 難しいアバターの動かし方を考える必要がなくなる

    ➢ 何かアプリを作るとき最初に入れておくととても楽!




    View Slide

  35. 35
    まとめ
    バーチャルモーションキャプチャー
    とりあえずアバター動かした
    くなったらこれ!沢山の連携
    ツールでやりたいことがきっ
    と見つかります。
    vmc.info
    VMCProtocol
    モーションを送受信したくなった
    らこれ!多彩なビューアーも
    揃っているので色々な拡張と組
    み合わせられます。
    protocol.vmc.info
    VMT
    SteamVRの仮想トラッカーが
    作りたくなったらこれ!超簡
    単に仮想トラッカーデバイス
    が使えてしまいます。
    github.com/gpsnmeajp/VirtualMotionTracker
    DVRSDK
    アプリにアバター入れたくなったら
    これ!難しい事無しで入れるだけ
    で動きます。VRアプリ開発するとき
    は最初に入れよう。
    devs.connect.vrlab.dmm.com

    View Slide