live2d-web ドキュメント
モデル検査
URL とローカルのモデル ZIP を読み込み前に検査します。
描画前に検査
live2d-web/inspect は React、Core、Framework、MediaPipe、JSZip を読み込まずに model3 の参照先を検査します。見つかった問題は一度にまとめて返されます。
import {
inspectModelCapabilities,
inspectModelSource,
} from 'live2d-web/inspect'
const report = await inspectModelSource({
src: 'https://example.com/model.model3.json',
})
if (report.status === 'compatible') {
console.log(report.motions, report.expressions)
}URL を指定した検査では、モデルに記載された HTTP(S) の参照先を実際に取得します。ブラウザでは CORS が適用されますが、Node サーバーにはブラウザと同じ制限や、プライベートネットワークへのアクセスを防ぐ仕組みがありません。信頼できないモデル URL をサーバーで受け付ける場合は、検査前に許可するホストとネットワーク範囲を制限してください。ライブラリがサーバーから到達できるプライベート IP の範囲を自動判定することはありません。ローカル用のリゾルバーは、圧縮ファイル内に記載された外部 URL を取得しません。
ブラウザで ZIP を検査
/inspect は現在のタブ内だけで ZIP を開き、ファイルサイズ、ファイル数、パス、モデルの参照先を検査します。アップロード、保存、利用状況の送信は行いません。互換性のない圧縮ファイルは描画しません。
レポートの見方
compatible は参照先を読み取れて、現在の Backend で扱える構成であることを示します。warning は外部 URL や推奨値を超えるファイルなど、配信前に確認したい項目がある状態です。incompatible は model3 の解析失敗や必須ファイルの欠落など、そのままでは描画できない問題を含みます。
const report = await inspectModelSource({ src: modelUrl })
for (const finding of report.findings) {
console.log(finding.severity, finding.code, finding.path)
}
if (report.status !== 'incompatible') {
const capabilities = inspectModelCapabilities(modelInfo)
console.log(capabilities.recommendedMapping)
}検出結果はモデルの安全性を保証するものではありません。公開前にはライセンス、配信元、CORS、実機での描画も別に確認してください。
上限と中断を設定する
外部からモデルを受け付ける画面では、ファイルと参照数の上限をアプリの用途に合わせて指定します。画面を閉じるときは AbortController で進行中の検査を止めます。
const controller = new AbortController()
const pending = inspectModelSource({
src: modelUrl,
signal: controller.signal,
limits: {
maxAssetBytes: 32 * 1024 * 1024,
maxTotalBytes: 128 * 1024 * 1024,
maxReferences: 512,
},
})
addEventListener('pagehide', () => controller.abort(), { once: true })
await pending