UserData
最終更新: 2020年1月30日
このページはCubism 4.2以前の古いバージョン向けです。 最新のページはこちら
概要
UserDataは、モデルのアートメッシュに設定されたユーザデータをUnity上で可視化する機能です。
ユーザデータはアートメッシュに対して任意のタグを付与できる機能で、SDK上で特殊な処理を行うアートメッシュを指定する場合などに活用できます。
ユーザデータの詳細については こちら をご覧ください。
Unity上でユーザデータを使用するには以下の手順を行います。
- .userdata3.jsonをパース
 - アートメッシュにUserDataを設定
 
1. .userdata3.jsonをパース
.userdata3.jsonを、CubismUserData3Jsonを用いてパースします。
CubismUserData3Jsonについては こちら をご覧ください。
var userData3Json = CubismUserData3Json.LoadFrom(jsonString);
.userdata3.jsonのパスは、.model3.jsonからもCubismModel3Jsonを用いて取得することができます。
取得できるパスは.model3.jsonからの相対パスです。
var userDataPath = modelJson.FileReferences.UserData; var jsonString = ((TextAsset)Resources.Load<TextAsset>(userDataPath)).text;
CubismModel3Jsonの詳細については こちら をご覧ください。
パースした.userdata3.jsonから、アートメッシュのデータを取得します。
var drawableBodies = userData3Json.ToBodyArray(CubismUserDataTargetType.ArtMesh);
2. アートメッシュにUserDataを設定
.userdata3.jsonから取得したユーザデータを、Prefabのアートメッシュに適用します。
アートメッシュにユーザデータの情報を付与するには、CubismUserDataTagを使用します。
// Prefabのアートメッシュの参照を取得
var drawables = cubismModel.Drawables;
for (var i = 0; i < drawables.Length; ++i)
{
    var index = -1;
  
    for (var j = 0; j < drawableBodies.Length; ++j)
    {
        if (drawableBodies[j].Id != drawables[i].Id)
        {
            continue;
        }
        index = j;
        break;
    }
    if (index < 0)
    {
        continue;
    }
    
    // 既にCubismUserDataTagがアタッチされていれば使い回す
    var tag = drawables[i].gameObject.GetComponent<CubismUserDataTag>();
    if (tag == null)
    {
        tag = drawables[i].gameObject.AddComponent<CubismUserDataTag>();
    }
    // ユーザデータをCubismUserDataTagに設定
    tag.Initialize(drawableBodies[index]);
}
この記事はお役に立ちましたか?
はいいいえ