4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OculusGoのAvatarで口を動かす

4
Posted at

OculusGoのAvatarで口を動かす

もしかしたらハマる人少ないかもしれないけど、盛大にハマったのでやり方をまとめます。

1. ドキュメント情報を確認

https://developer.oculus.com/documentation/avatarsdk/latest/concepts/avatars-gsg-unity-mobile/#avatars-sdk-unity-mouth_movement
Oculusの公式で、口を動かすやり方は上記に書いてあります。

なお、LipSyncというサンプルがOculusIntegrationの中にあり、そっちでは音素に合わせて口の形を変えてますが、現状のOculusのAvatarではその機能に対応していない様子。
口の大きさを音圧で変える方法のみ対応しています。

・・・が、ここに書いてあるように、 OvrAvatar.VoiceAmplitudeを 0-1の範囲で設定しても、それだけでは口は動きません。

公式にはここくらいしか書いてないのに・・・!

2. サンプルソースをあさる

OvrAvatar.VoiceAmplitudeを参照してるサンプルコードを探してみたところ、 Assets/Oculus/Avatar/Samples/SocialStarter/Assets/Scripts/SocialPlatformManager.csにて参照されていることを確認。(階層が深い・・・見つけづらい・・・)

このクラスの、Update()関数内ではドキュメント以上のことをやっているようには見えないためここで詰まる。

ぐぐぐ・・・

3. OvrAvatarのソースを見る

そもそもOvrAvatar.VoiceAmplitudeは内部でどのように動作してるのか確認してみました。

OvrAvatar.UpdateVoiceBehavior()にて、VoiceAmplitudeを係数として口の大きさを決めてるっぽいソースコードを発見。
この関数の一番上がこうなってました。

    private void UpdateVoiceBehavior()
    {
        if (!EnableMouthVertexAnimation)
        {
            return;
        }

・・・これだ!

4. 解決

結論から言えば、 OvrAvatar.EnableMouthVertexAnimationtrue になってないとAvatarの口は動きません。
改めて SocialPlatformManager.csを確認し直したところ、確かにremoteAvatarとlocalAvatar両方でEnableMouthVertexAnimation = trueの処理を入れてました。

公式情報がちょっと足りなかったのですね。Oculusはだいぶ情報も出てきていますが、まだまだ情報が足りないところも多いです。
口は動かせてもAvatarのLipSyncはまだ対応してないとか、初めはわからなかったですし・・・(ドキュメント読み込み不足)
・・・っていうかLipSync対応してないですよね? もうちょっと資料探したらやり方見つかるとかないですよね?

まあとにかく、同じところでハマる人が居たら、一助になれば幸いです〜

4
3
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
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?