표시 보조 파일 정보

업데이트: 2022/10/06

개요

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);
    }

이 기사에 관한 의견 및 요청사항을 보내 주시기 바랍니다.