.motion3.jsonの整合性を検証する
最終更新: 2025年5月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; } } ...