.motion3.json 무결성 검증

업데이트: 2025/05/15

Cubism SDK는 .motion3.json을 불러오기 전에 변조로 인해 모델에 잘못된 데이터가 포함되어 있지 않은지 검증할 수 있습니다.

불특정한 .motion3.json 파일을 불러올 것으로 예상되는 경우 CubismMotion에서 인스턴스를 생성하기 전에 불러올 .motion3.json 파일의 무결성을 확인하는 것이 좋습니다.
단, 무결성 검증은 성능에 영향을 줄 가능성이 있으므로 주의하십시오.

모델의 무결성을 검증하려면 SDK for Unity에서는 Framework의 CubismMotion3Json.HasConsistency()를, 그 외에는 Framework의 CubismMotionJson::HasConsistency()를 사용합니다.

Cubism SDK for Native의 CubismMotion::Parse()는 CSM_DEBUG 매크로가 활성화된 경우에만 모델을 불러올 때 .motion3.json 파일의 무결성을 검증합니다.

// Cubism SDK for Native
void CubismMotion::Parse(const csmByte* motionJson, const csmSizeInt size)
{
    _motionData = CSM_NEW CubismMotionData;

    CubismMotionJson* json = CSM_NEW CubismMotionJson(motionJson, size);

    if (!json->IsValid())
    {
        CSM_DELETE(json);
        return;
    }

#if CSM_DEBUG
    json->HasConsistency();
#endif
…
    CSM_DELETE(json);
}

Cubism SDK for Web의 CubismMotion.parse()는 CubismMotion._debugMode가 true인 경우에만 모델을 불러올 때 .motion3.json 파일의 무결성을 검증합니다.

// Cubism SDK for Web
public parse(motionJson: ArrayBuffer, size: number): void {
    ...

    if (shouldCheckMotionConsistency) {
      const consistency = json.hasConsistency();
      if (!consistency) {
        json.release();
        CubismLogError('Inconsistent motion3.json.');
        return;
      }
    }

    ...

CubismMotion._debugMode는 CubismMotion.setDebugMode()를 이용해 변경할 수 있습니다.

Cubism SDK for Java의 CubismMotion.parse()는 CubismFrameworkConfig.CSM_DEBUG가 true인 경우에만 모델을 불러올 때 .motion3.json 파일의 무결성을 검증합니다.

// Cubism SDK for Java
private void parse(byte[] motionJson, boolean shouldCheckMotionConsistency) {
    ...

    if (shouldCheckMotionConsistency) {
        boolean consistency = json.hasConsistency();

        if (!consistency) {
            CubismDebug.cubismLogError("Inconsistent motion3.json.");
            return;
        }
    }

    ...

Cubism SDK for Unity의 CubismMotion3Json.ToAnimationClip()은 shouldCheckMotionConsistency 가 true인 경우에만  .motion3.json을 가져올 때 파일의 무결성을 검증합니다.

// Cubism SDK for Unity
public AnimationClip ToAnimationClip(AnimationClip animationClip, bool shouldImportAsOriginalWorkflow = false, bool shouldClearAnimationCurves = false
                                                                , bool isCallFormModelJson = false, CubismPose3Json poseJson = null)
{
    ...
    if (shouldCheckMotionConsistency)
    {
        var consistency = cubismMotion3Json.HasConsistency();
        if (!consistency)
        {
            return null;
        }
    }

    ...
이 기사가 도움이 되었나요?
아니요
이 기사에 관한 의견 및 요청사항을 보내 주시기 바랍니다.