UserData

最終更新: 2020年1月30日

概要

UserDataは、モデルのアートメッシュに設定されたユーザデータをUnity上で可視化する機能です。
ユーザデータはアートメッシュに対して任意のタグを付与できる機能で、SDK上で特殊な処理を行うアートメッシュを指定する場合などに活用できます。

ユーザデータの詳細については こちら をご覧ください。

Unity上でユーザデータを使用するには以下の手順を行います。

  1. .userdata3.jsonをパース
  2. アートメッシュに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]);
}
この記事はお役に立ちましたか?
はいいいえ
この記事に関するご意見・
ご要望をお聞かせください。