UniVRMの使い方メモ

Sat, 28 Mar 2020 12:07:00 vr UniVRM Unity

UniVRMを普通にスクリプトから扱おうと思った時に、思った以上に欲しい情報がすぐ出てこないので、調べたこととか参考サイト、試行錯誤のメモをまとめておく。

表情をつける

VRMBlendShapeProxy Class を使う。

  • AccumulateValue() で必要な値を流し込み
  • Applay() で反映

AccumulateValue()

Value について

第二引数の Value は Float で 0.0f - 1.0f の値を指定する。

Key 指定について

BlendShapePreset Enum を第一引数に取ることができるが、実際は拡張メソッドで、BlendShapeKey() で変換されて渡る。 が、ここの変換でnewがされてるので、高頻度で呼ぶ場合にアロケーションで死ぬ。

BlendShapeKey 型に自分で変換してキャッシュしておくのがよさそう。

呼び出しの雰囲気

m_vrmBlendShapeProxy.AccumulateValue(defaultBlendShapePreset, defaultBlendShapeValue);
m_vrmBlendShapeProxy.AccumulateValue(mixBlendShapePreset, mixBlendShapeValue);
m_vrmBlendShapeProxy.AccumulateValue(mouseBlendShapePreset, mouseBlendShapeCurrent);
m_vrmBlendShapeProxy.Apply();

mouseBlendShapeCurrent をそれなりの 0.6-0.9 とかで連続的に変化させること "はぁはぁ" みたいな口の動きをスクリプトで出来るけど、なんかもうちょっといい方法ある気がする。

アニメーション設定周り

このあたりの実装を参考に VrmAnimationController.cs

m_vrmAnimationController.Play(defaultAnimation);

とか簡単適用できて楽なので、一先ずは上記実装をつかおうかな。

ランタイムVRMロード、ファイルブラウザ周り

参考リンク

Previous Post Next Post

UniVRMの使い方メモ