LoginSignup
0
1

VRChat向けアバターから愚直にパーフェクトシンク対応VRMを作ってみた

Last updated at Posted at 2023-08-11

みなさんはVRMアバター、持っていますか?
VRM形式のアバターファイルを持っておくと、さまざまなプラットフォームやアプリで利用ができ、とても便利です!

参考:「VRMファイルが使えるアプリケーションは?」VRMドキュメント
https://vrm.dev/vrm/vrm_applications.html

私も最近、「Virtual Face」というVRM対応アプリで遊んでいたのですが、
パーフェクトシンク対応VRMを使うことで、もっと自然な顔の動きを反映できるらしいとのこと。
通常のVRMは既に作っていましたが、パーフェクトシンク対応のものは作ったことが無かったので、今回調べて分かったことなどをまとめていきます。

そもそもパーフェクトシンクってなに?

一応解説しておくと、
もともとはiOS向けのAR機能である「Apple ARKit」が存在し、これをVRMに流用して使えるようにした仕組みを「パーフェクトシンク」というようです。
こちらにより詳しい解説があります。

VRChat向けアバターからVRMに変換

私はよくVRChat向けアバターにお世話になっているので、度々VRMに変換する作業をしています。
VRChat向けアバターからVRMに変換する方法はいろいろとありますが、有志の方の記事やツールなどでほぼほぼ確立されつつあるので、今回は割愛させていただきます。

パーフェクトシンク用BlendShapeを追加

VRMをパーフェクトシンク対応にするためには、Apple ARKitに対応する52個のBlendShapeを追加する必要があります。
アプリ側がパーフェクトシンク用BlendShapeを自動で読み込んでくれるので、VRM側では指定された名称の52個のBlendShapeを追加するだけでいい、ということですね。
各BlendShapeについての名称および詳細はこちらの記事が参考になります。

作業開始

それでは、さっそくUnity上での作業に移ります。
状況としては、VRMへの変換作業を終え、生成されたVRMをScene上に配置したタイミングです。

BlendShape作成

VRMのBlendShape設定から、「Create BlendShapeClip」から新しいBlendShapeを作ります。
52個のBlendShapeの名称は以下の通りです。

  • BrowInnerUp
  • BrowDownLeft
  • BrowDownRight
  • BrowOuterUpLeft
  • BrowOuterUpRight
  • EyeLookUpLeft
  • EyeLookUpRight
  • EyeLookDownLeft
  • EyeLookDownRight
  • EyeLookInLeft
  • EyeLookInRight
  • EyeLookOutLeft
  • EyeLookOutRight
  • EyeBlinkLeft
  • EyeBlinkRight
  • EyeSquintLeft
  • EyeSquintRight
  • EyeWideLeft
  • EyeWideRight
  • CheekPuff
  • CheekSquintLeft
  • CheekSquintRight
  • NoseSneerLeft
  • NoseSneerRight
  • JawOpen
  • JawForward
  • JawLeft
  • JawRight
  • MouthFunnel
  • MouthPucker
  • MouthLeft
  • MouthRight
  • MouthRollUpper
  • MouthRollLower
  • MouthShrugUpper
  • MouthShrugLower
  • MouthClose
  • MouthSmileLeft
  • MouthSmileRight
  • MouthFrownLeft
  • MouthFrownRight
  • MouthDimpleLeft
  • MouthDimpleRight
  • MouthUpperUpLeft
  • MouthUpperUpRight
  • MouthLowerDownLeft
  • MouthLowerDownRight
  • MouthPressLeft
  • MouthPressRight
  • MouthStretchLeft
  • MouthStretchRight
  • TongueOut
    image.png

使用アバターは「トラスとウェッジ」のトラスちゃんです。
とてもかわいいですね!

アバター側Shapeキーのウェイト設定

先ほど設定したBlendShapeに対応する表情を設定します。
基本的にはアバター側Shapeキーのウェイトを100にすることで設定できるかと思います。
各BlendShapeに対応する表情の詳細は、はいぬっかさん作成のメモが参考になります。

image.png

このとき注意してほしいのですが、
パーフェクトシンク非対応のアバターですべてのBlendShapeを設定することは非常に難しいことが予測されます。
というのも、パーフェクトシンク用のBlendShapeには細かい仕様の指定があり、非対応のアバターでそれらに対応することはBlenderなどのモデリングツールを利用して自分で新しく作らない限り難しいからです。
(例として、BrowInnerUpは「眉の内側を上げる」「眉尻は動かさない」という指定があります。)
既存のShapeキーを無理やり当てはめることも可能ですが、アプリなどでの利用時に表情が崩れてしまう可能性もあり、お勧めできません。
そのため、最低限これだけ設定しておけばよい、というBlendShapeをいくつか列挙します。

  • EyeSquintRight, EyeSquintLeft, EyeBlinkLeft, EyeBlinkRight, EyeWideLeft, EyeWideRight
    目の動きに関係するBlendShapeです。特に、EyeBlinkLeft, EyeBlinkRightは瞬きを再現するために必要です。

  • JawOpen, MouthFunnel, MouthPucker
    JawOpenは「あ」の口, MouthFunnelは「う」の口で、口の開閉を再現するために重要なBlendShapeです。口の横幅を狭めるMouthPuckerもあると口の動きが豊かになります。

これ以外でも設定が可能なBlendShapeがあれば設定しておきましょう。

動作確認

「Virtual Face」で作ったVRMを動かしてみました。

瞬きや口の開閉だけでも、かなり自然な動きを再現できていますね!

まとめ

今回は、VRChat向けアバターからパーフェクトシンク対応VRMを作る方法として、
「愚直にパーフェクトシンク用BlendShapeを追加する」 というやり方を実践しました!
もう少し賢い方法もあるとは思いますが、とりあえず手っ取り早くVRChat向けアバターからパーフェクトシンク対応VRMを作りたい場合はこの方法で十分でしょう。
今回の趣旨からは逸れますが、VRoidのパーフェクトシンク対応には「HANA_APP」という有料のツールも使えるようなので、興味がある方は詳しく調べてみることをおすすめします。

最後に、
VRMは3Dアバターのファイル形式としてとても便利なので、
みなさんも自分のVRMを作って遊んじゃいましょう!

という一言を添えておきます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1