Upgrade to Pro — share decks privately, control downloads, hide ads and more …

アバター配信アプリ『Vフレット』 でVRM 1.0対応をしてみる

アバター配信アプリ『Vフレット』 でVRM 1.0対応をしてみる

2024年8月1日に開催された『VRM Meetup #4 VRM LT大会』での発表資料です
https://vrmc.connpass.com/event/322649/

Nakaji Kohki

August 01, 2024
Tweet

More Decks by Nakaji Kohki

Other Decks in Technology

Transcript

  1. アンケート 
 本日の参加者ってどんな属性ですか? 
 
 • 開発者の方 
 • VRoid

    / 3Dモデルを触ってる方 
 • とりあえず興味があって来てみた方 

  2. VRMとは
 • VR向けの3Dアバターファイルフォーマット 
 ◦ アバターを VRM形式で作っておくと、いろいろなプラットフォームで使えるのが特徴 
 ◦ 発表後にすごい勢いで流行った(会場の

    clusterでも採用している!) 
 • VRM 0.x:2018年にベータ版として発表 
 • VRM 1.0:2022年9月に正式版としてリリース 
 ◦ 変数名として 「VRM10」表記が使われることが多い 
 ◦ (個人的な印象) VRM 0.xほど浸透していない・・・? 

  3. 知ってるサービスの VRM 1.0 対応状況を調べてみた 
 
 
 2022年
 • 9月


    ◦ VRM 1.0リリース 
 ◦ バーチャルキャスト 
 • 11月
 ◦ VMagicMirror
 2023年
 • 3月
 ◦ VRoid Studio
 ◦ VDRAW
 • 8月
 ◦ LuppetX

  4. 知ってるサービスの VRM 1.0 対応状況を調べてみた 
 
 
 2022年
 • 9月


    ◦ VRM 1.0リリース 
 ◦ バーチャルキャスト 
 • 11月
 ◦ VMagicMirror
 2023年
 • 3月
 ◦ VRoid Studio
 ◦ VDRAW
 • 8月
 ◦ LuppetX
 ➡めちゃくちゃ対応進んでた
  5. Vフレットとは • アバターを使ってギターの弾き語りができるアプリ 
 • Windows / Mac 向けに Booth

    で配布中! 
 • VRMアバター読み込みに対応 
 ◦ プリセットアバター ◦ PC内のVRMファイル ◦ VRoid Hub連携 • トラッキング不要、アバターと PCがあれば使える 
 • 最近は YouTube ショートとかに使ってくれる人も 
 https://booth.pm/ja/items/3024741
  6. 環境
 • Unity 2021.3.35f1
 • VRoid SDK for Unity 0.5.2

    (2024/06/24)
 ◦ アップデートのバージョンは 0.1.0
 • UniVRM v0.122.0 (2024/05/10)
 ◦ アップデート前: v0.89.0 
 ◦ VRoid SDKに内包されている UniVRMを使用

  7. 対応が簡単だった差分 
 • モデル読み込み 
 ◦ メソッド名が変わっただけで使い勝手は変更なし 
 • VRM

    0.x系の変換処理 
 ◦ ほぼすべて自動で変換してくれるので、共存について考えることが少ない 
 • 表情
 ◦ 「VRMBlendShape」から「 Expression」に変わっただけ 
 ▪ 例:BlendShapePreset → ExpressionPreset

  8. 対応が大変そうな差分 
 • アクセス方法が変わっている箇所について 
 ◦ 一部 MonoBehaviourとして提供されなくなった 
 ◦

    GetComponent<T>()している箇所を、親のクラスなどのメンバ変数からを辿る必要がある 
 • ライセンス 
 ◦ 仕様として、意図的に 1:1 変換をしていない 
 ◦ 0.x系ライセンスは 0.x系ライセンスとして表示する必要がある 
 • ボーン
 ◦ 正規化された?ボーン構造が変わった?らしい 
 ◦ まだやっていないのでここが一番大変そう 

  9. VRoid SDK の対応
 • 基本的には専用の対応は不要だった 
 ◦ メタデータは VRoid SDK独自の型で返ってくるので差分なし

    
 ◦ VRMをUnity上で3Dデータとして生成した型 RuntimeGltfInstance を
 ▪ VRMファイル読み込みの場合は UniVRMから
 ▪ VRoid Hub上のキャラクターの場合は VRoid SDKから
 ◦ 読み込むという違いのみ 
 • → アプリのVRM 1.0対応ができれば自動的に対応完了っぽい 

  10. 余談:困っていること 
 • Vrm10Dataからサムネイルが取得できない取得の例 
 • https://vrm.dev/api/vrm1_load/ によると、下記のように取得可能 
 


    
 • 返ってくる値は nullではないが、 RawImage.textureに渡すと Missing になる
 • もし何かわかる方がいたらぜひ教えてください 🙏
 using var loader = new Vrm10Importer(vrm); var texture2D = await loader.LoadVrmThumbnailAsync();