VRM - humanoid 3d avatar format for VR

BlendShapeを操作する

スクリプトからBlendShapeを適用する

var proxy=GetComponent<VRMBlendShapeProxy>();

// enumで呼び出し
proxy.SetValue(BlendShapePreset.A, 1.0f); // 0から1で指定

// stringで呼び出し
proxy.SetValue("A", 1.0f);

複数のBlendShapeをまとめて適用する

たとえば

Blink_Lが

  • MeshAのeye_L=100
  • MeshAのeye_R=1

Blink_Rが

  • MeshAのeye_L=1
  • MeshAのeye_R=100

で定義されている場合に両方を有効にする意図で下記のようにすると、後からセットしたものだけが適用されてしまいます。

proxy.SetValue(BlendShapePreset.Blink_L, 1.0f);
proxy.SetValue(BlendShapePreset.Blink_R, 1.0f);

この場合は、以下のようにできます。

proxy.SetValue(BlendShapePreset.Blink_L, 1.0f, false); // すぐに適用せずにたくわえる
proxy.SetValue(BlendShapePreset.Blink_R, 1.0f, false);
proxy.Apply(); // 蓄積した値をまとめて適用する
VRM - humanoid 3d avatar format for VR