表示補助ファイルについて
最終更新: 2022年12月8日
概要
Cubism Editor 3.3.02(2019/04/23公開) から、Cubismエディタからモデルを書き出す際に.cdi3.jsonを書き出せるようになりました。
.cdi3.jsonは、パラメータやパラメータグループ、パーツのIDと名前を紐付ける情報が記述された表示補助ファイルです。
Editor上で設定したパラメータ名やパラメータグループ名、パーツ名はSDK上でモデルを扱う際に不要な項目なためmoc3に書き出されません。
ですが、ユーザがモデルのパラメータを直接操作できるようなアプリケーションのようにパラメータの名前を表示させたい場合、.cdi3.jsonを利用することで名前を取得することが可能です。
.cdi3.jsonに記述されている内容
・Parameters
・パラメータID、パラメータ名(エディタで表示される名前)、所属しているパラメータグループのID
・ParameterGroups
・グループID、グループ名(エディタで表示される名前)、所属しているパラメータグループのID
・Parts
・パーツID、パーツ名(エディタで表示される名前)
※所属しているパラメータグループのID:
パラメータグループはエディタ上では木構造として表現されますが、cdi内の構造はList構造でデータが格納されています。
SDK上でパラメータグループの木構造を扱う場合、この情報を用いて配置を復元する必要があります。
所属しているパラメータグループが無い(エディタ上では木構造のルート)場合、この項目は空欄になります。
.cdi3.jsonの仕様の詳細については、GitHubの CubismSpecs を参照してください。
.cdi3.jsonをパースするには、NativeではCubismCdiJson.hppから、JavaではCubismCdiJson.javaから、CubismCdiJsonクラスを使用します。
Cubism SDK for Webは自前でJSONパーサを持っているため、.cdi3.jsonを扱う実装をおこなう場合はそちらを使用してユーザ側で対応することができます。
CubismCdiJson
インスタンスの生成
CubismCdiJson* cdiJson = new CubismCdiJson(cdi3Json, size);
CubismCdiJson cdiJson = CubismCdiJson.create();
パラメータ(Parameters)
パラメータ関連の情報を取得するAPIは以下になります。
- Native
- パラメータ数:CubismCdiJson::GetParametersCount()
- パラメータID:CubismCdiJson::GetParametersId()
- 所属しているパラメータグループのID:CubismCdiJson::GetParametersGroupId()
- パラメータ名:csmChar* CubismCdiJson::GetParametersName()
// 総パラメータ数 csmInt32 parametersCount = cdiJson->GetParametersCount(); for(int i = 0; i < parametersCount; i++) { // パラメータID csmChar* parameterId = cdiJson->GetParametersId(i); // 所属パラメータグループID csmChar* parentParameterGroupId = cdiJson->GetParametersGroupId(i); // パラメータ名 csmChar* parameterName = cdiJson->GetParametersName(i); }
- Java
- パラメータ数:CubismCdiJson.getParametersCount()
- パラメータID:CubismCdiJson.getParametersId()
- 所属しているパラメータグループのID:CubismCdiJson.getParametersGroupId()
- パラメータ名:String CubismCdiJson.getParametersName()
// 総パラメータ数 int parametersCount = cdiJson.getParametersCount(); for (int i = 0; i < parametersCount; i++) { // パラメータID String parameterId = cdiJson.getParametersId(i); // 所属パラメータグループID String parentParameterGroupId = cdiJson.getParametersGroupId(i); // パラメータ名 String parameterName = cdiJson.getParametersName(i); }
パラメータグループ(ParameterGroups)
パラメータグループ関連の情報を取得するAPIは以下になります。
- Native
- パラメータグループ数:CubismCdiJson::GetParameterGroupsCount()
- パラメータグループID:CubismCdiJson::GetParameterGroupsId()
- そのパラメータグループの親のパラメータグループID:CubismCdiJson::GetParameterGroupsGroupId()
- パラメータグループ名:CubismCdiJson::GetParameterGroupsName()
// 総パラメータグループ数 csmInt32 parameterGroupsCount = cdiJson->GetParameterGroupsCount(); for(int i = 0; i < parameterGroupsCount; i++) { // パラメータグループID csmChar* parameterGroupId = cdiJson->GetParameterGroupsId(i); // 所属パラメータグループID csmChar* parentParameterGroupId = cdiJson->GetParameterGroupsGroupId(i); // パラメータグループ名 csmChar* parameterGroupName = cdiJson->GetParameterGroupsName(i); }
- Java
- パラメータグループ数:CubismCdiJson.getParameterGroupsCount()
- パラメータグループID:CubismCdiJson.getParameterGroupsId()
- そのパラメータグループの親のパラメータグループID:CubismCdiJson.getParameterGroupsGroupId()
- パラメータグループ名:CubismCdiJson.getParameterGroupsName()
int parameterGroupsCount = cdiJson.getParameterGroupsCount(); for (int i = 0; i < parameterGroupsCount; i++) { // パラメータグループID String parameterGroupId = cdiJson.getParameterGroupsId(i); // 所属パラメータグループID String parentParameterGroupId = cdiJson.getParameterGroupsGroupId(i); // パラメータグループ名 String parameterGroupName = cdiJson.getParameterGroupsName(i); }
パーツ(Parts)
パーツ関連の情報を取得するAPIは以下になります。
- Native
- パーツ数:CubismCdiJson::GetPartsCount()
- パーツID:CubismCdiJson::GetPartsId()
- パーツ名:CubismCdiJson::GetPartsName()
// 総パーツ数 csmInt32 partsCount = cdiJson->GetPartsCount(); for(int i = 0; i < partsCount; i++) { // パーツID csmChar* partId = cdiJson->GetPartsId(i); // パーツ名 csmChar* partName = cdiJson->GetPartsName(i); }
- Java
- パーツ数:CubismCdiJson.getPartsCount()
- パーツID:CubismCdiJson.getPartsId()
- パーツ名:CubismCdiJson.getPartsName()
// 総パーツ数 int partsCount = cdiJson.getPartsCount(); for (int i = 0; i < partsCount; i++) { // パーツID String partId = cdiJson.getPartsId(i); // パーツ名 String partName = cdiJson.getPartsName(i); }