VRoid Studioで作ったモデルは、BlendShape.SurprisedとBlendShape.Extraという表情を持っています。VRMはFun、Angry、Sorrow、Joyの4つの表情を基本で持つことになっていますが、それ以外の表情も持つことが出来るからです。
VRoid Studio製モデルが持つこの二つの表情は使い勝手が良いので、できれば使いたい。
そこで、VRMアプリを作るときに、特定の名前の表情(BlendShapeProxy)を持っていたらtrue、持っていなかったらfalseを返す関数を作ってみました。
特定のBlendshapeProxyを持っているかのチェック
using VRM;
// 中略
public bool DoesItHave(string bsname, GameObject vrm)
{
var prx = vrm.GetComponent<VRMBlendShapeProxy>();
var clips = prx.BlendShapeAvatar.Clips;
foreach(var c in clips)
{
if(c.name == bsname)
{
return true;
}
}
return false;
}
DoesItHave("BlendShape.Surprised", VRM)
のように書くと、VRM
に入っているGameObjectがその"BlendShape.Surprised"
という名前のを持っていればtureを返します。
(※もっと良いやり方があればぜひ教えてください)