.motion3.jsonの整合性を検証する

最終更新: 2026年5月22日

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)
{
    CubismMotionJson* json = CSM_NEW CubismMotionJson(motionJson, size);

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

    if (shouldCheckMotionConsistency)
    {
        csmBool consistency = json->HasConsistency();
        if(!consistency)
        {
            CSM_DELETE(json);

            CubismLogError("Inconsistent motion3.json.");
            return;
        }
    }
…
    CSM_DELETE(json);
}

Cubism SDK for Webの CubismMotion.parse() では CubismMotion._debugMode がtrueの時のみ、モデルの読み込み時に .motion3.jsonファイルの整合性を検証します。

// Cubism SDK for Web
public parse(
    motionJson: ArrayBuffer,
    size: number,
    shouldCheckMotionConsistency: boolean = false
): 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.LoadFrom() では、shouldCheckMotionConsistencyがtrueの時のみ、.motion3.jsonのインポート時にファイルの整合性を検証します。

// Cubism SDK for Unity
public static CubismMotion3Json LoadFrom(string motion3Json, bool shouldCheckMotionConsistency = true)
{
    ...

    if (shouldCheckMotionConsistency)
    {
        var consistency = cubismMotion3Json.HasConsistency();
        if (!consistency)
        {
            return null;
        }
    }

    ...
この記事はお役に立ちましたか?
はいいいえ
この記事に関するご意見・
ご要望をお聞かせください。