关于显示辅助文件

最終更新: 2022年10月6日

概述

从Cubism Editor3.3.02(2019年4月23日发布)开始,您可以在从Cubism Editor输出模型时输出.cdi3.json。
.cdi3.json是一个显示辅助文件,描述了链接参数、参数组、部件ID和名称的信息。

Editor上设置的参数名称、参数组名称和部件名称在SDK上处理模型时是不必要的项目,因此不输出到moc3。
但是,如果您想像允许用户直接操作模型参数的应用程序那样显示参数的名称,则可以使用.cdi3.json获取名称。

.cdi3.json中描述的内容

·Parameters
 ·参数ID,参数名称(Editor中显示的名称)、所属参数组的ID
·ParameterGroups
 ·组ID、组名(Editor中显示的名称)、所属参数组的ID
·Parts
 ·部件ID、部件名称(Editor中显示的名称)

* 所属参数组的ID:
 参数组在Editor中表示为树形结构,但cdi中的结构是List结构,存储数据。
 在SDK上处理参数组树形结构时,需要使用此信息来恢复置入。
 如果没有所属的参数组(Editor中的树结构根),此项将为空。

有关.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);
    }

请问这篇文章对您有帮助吗?
关于本报道,敬请提出您的意见及要求。