UserData
最終更新: 2020年1月30日
概要
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]); }
この記事はお役に立ちましたか?
はいいいえ