Live2D Cubism Editor 5.1 alpha2

外部アプリケーション連携

開発者向けマニュアル


2024/04/11  r2


目次

目次

改訂履歴

Live2D Cubism Editor 外部連携 API

外部アプリケーション連携

外部アプリケーションのサンプル

通信方式

省略表記

データ形式

APIタイプ

エラーハンドリング

トークン認証

処理の流れ

外部連携API一覧

命令

イベント

エラータイプ

制限事項

アニメーション

共通


改訂履歴

バージョン

改訂日

改訂内容

r2

2024/04/11

alpha2向けに更新しました。

・「データ形式」の表を一部修正しました。

・「外部連携API一覧」内の「命令」の項目にて、アニメーションファイルのモデルの連携について追記しました。

制限事項のアニメーションに関して連携可能になったため、該当箇所を削除しました。

r1

2024/03/28

初版作成

Live2D Cubism Editor 外部連携 API

外部アプリケーション連携

概要

エディタと外部アプリケーションでAPIを通して連携することができます。

外部アプリケーションのサンプル

Live2D Garageにサンプルを提供しています。

・GitHub Live2D GARAGE - CubismExternalAppPluginSamples

https://github.com/Live2D-Garage/CubismExternalAppPluginSamples

通信方式

通信規格

WebSocket

フォーマット

JSON(UTF-8 テキスト)

ポート

22033 ※デフォルトのポート番号。 任意に変更可能。

エディタがサーバー、外部アプリケーションがクライアントになります。

省略表記

Token ?: String,

「?」が付いている要素は、指定を省略することが可能です。

データ形式

{

    "Version": "1.0.0",

    "Timestamp": 1696233943287,

    "RequestId": "13",

    "Type": "Request",

    "Method": "GetCurrentModelUID",

    "Data": {}

}

送信、受信共に以下のJSON形式でやりとりします。

Version〜Typeまでは全命令で共通になります。

要素

タイプ

要求

説明

Version

String

任意

API、命令のバージョンを指定します。

やりとりするバージョンを固定でき、互換性を維持することができます。未対応バージョンを設定した場合はエラーとなります。省略可能※1。

Timestamp

Number

任意

エポックミリ秒。省略可能。

RequestId

String

任意

サーバーからのレスポンス時に送信で送ったIDを返します。省略した場合、サーバーレスポンスでも省略されます。

Type

String

必須

APIタイプ

Method

String

必須

命令

Data

Any

必須

操作に応じた追加データ。
Data{}(引数に相当)の中身は
命令により異なります。

※1 バージョン0.9.0では必須の要素です。

APIタイプ

タイプ

説明

Request

要求:

主にクライアント(外部アプリケーション)からサーバー(Editor)に命令を送る際に設定されます。

Response

応答: 

主にサーバーがクライアントからの命令に答える際に設定されます。

Event

イベント: 

主にサーバーが任意のタイミング(クライアントからRequestが無い状態)で、自発的にクライアントへ応答する際に設定されます。

Error

エラー:

Requestに不正があった場合、この値が設定されたAPIをクライアントへ返します。

エラーハンドリング

{

    (省略)

    "Type": "Error",

    "Method": "SetParameterValues",

    "Data": {

        "ErrorType" : "InvalidParameter"

    }

}

TypeがErrorのJSONを返します。

エラー内容はErrorTypeに種類が記入されます。

詳細は「 エラータイプ」をご覧ください。

トークン認証

意図しない外部アプリからエディタを守るため、ユーザーが許可しない限り外部アプリからの通信を遮断する、認証システムが組み込まれています。

初回接続

接続後、まず最初にRegisterPluginで新規トークンを取得します。

トークンを取得しても、自由に通信が行えるわけではありません。

ユーザーが設定ダイアログから「許可」のチェックボックスを有効にすることで、初めてAPIが使用可能となります。

よって、外部アプリはそれまで待機する必要があります。

2回目からの接続

2回目からはユーザーによる許可をスキップすることができます。

先の接続で使用したトークンをRegisterPluginで指定してください。

ユーザーが許可していれば、RegisterPluginは指定したトークンをそのまま返し、即APIが使える状態にします。

トークンが許可されていない場合は、新しいトークンを返し、ユーザーがもう一度許可するまで通信は遮断されます。

処理の流れ

パラメータの反映タイミング

APIは即時実行が基本ですが、パラメータは物理演算やランダムポーズの関係で反映タイミングに遅延があります。実際は以下のように一時バッファを経由して反映されます。

UIDとパラメータID

{

    "Data": {

        "ModelUID" : "8456858123561231456" // UID

    }

}

{

    "Data": {

        "Parameters" : [{"Id":"ParamAngleY","Value":"0.0"}] // ParameterID

    }

}

パラメータIDは(モデルに変更を加えない限り)不変な値ですが、UIDは接続ごとに値が変化する可能性がある一時的なIDです。

外部連携API一覧

命令

RegisterPlugin

外部アプリケーションをエディタに登録します。

登録が終わるとトークンを返します。このトークンはアプリと紐付いており、次回の接続時に指定することでユーザーの許可状態を引き継ぐことができます。

詳しくは「トークン認証」をご覧ください。

Version

Request

Response

ErrorType

0.9.0

Name:String,

Token?:String,

Icon?:String,

Path?:String

Token:String

InvalidData

Name:String

アプリケーション名。(任意)

ユニークな名前を付けてください。

他のアプリと名前が被っても動作に影響はありません。

Token?:String

トークン。
省略、または未登録のトークンの場合は、RegisterPluginは新しいトークンを返します。

指定されたトークンが登録済みの場合は、そのトークンをそのまま返します。

Icon?:String

アイコンPNG画像のBASE64文字列。

現在は指定してもエディタに表示されません。

Path?:String

アプリケーションのパス情報。

注意事項

RegisterPluginを最初に行い、ユーザーから許可を貰わない限り、以下のほぼすべての命令はPluginNotRegisteredのエラーを返し、APIによる操作を受け付けません。

GetIsApprove

ユーザーがこのアプリに対して通信を許可しているかどうかを取得します。

設定ダイアログの「許可」カラムのチェックボックスと連動しています。

Version

Request

Response

ErrorType

0.9.0

Result:Boolean

InvalidData

GetParameterValues

version 0.9

パラメータIDを指定してモデルの現在のパラメータIDと値を取得します。

パラメータIDの指定がない場合はモデルの全パラメータIDと値を取得します。

アニメーションの情報は含まれません。

Version

Request

Response

ErrorType

0.9.0

ModelUID:string,

Ids?:Array<string>

Parameters:Array<{

  Id:String,

  Value:Number

}>

InvalidData

InvalidModel

version 0.9.1

パラメータIDを指定してモデルの現在のパラメータIDと値を取得します。

パラメータIDの指定がない場合はモデルの全パラメータIDと値を取得します。

物理演算、モデル編集、アニメーションの情報が取得できます。

Version

Request

Response

ErrorType

0.9.1

ModelUID:string,

Ids?:Array<string>

Parameters:Array<{

  Id:String,

  Value:Number

}>

InvalidData

InvalidModel

SetParameterValues

version 0.9.0

指定のパラメータIDと値を設定します。

アニメーションファイルのモデルにパラメータは送信できません。

Version

Request

Response

ErrorType

0.9.0

ModelUID:String,

Parameters:Array<{

  Id:String,

  Value:Number

}>

InvalidData

InvalidModel

InvalidParameter

version 0.9.1

指定のパラメータIDと値を設定します。

アニメーションファイルのモデルにパラメータを送信する場合、モデルトラックを選択している必要があります。

物理演算エディタ、アニメーションのモデルの場合、パラメータを即時反映はせずテンポラリに保持されます。

Version

Request

Response

ErrorType

0.9.1

ModelUID:String,

Parameters:Array<{

  Id:String,

  Value:Number

}>

InvalidData

InvalidModel

InvalidParameter

GetParameters

Id:String

パラメータID。

Name:String

パラメータ名。

GroupUID:String

所属するパラメータグループのUID。

Default:Number

デフォルト値。

Max,Max:Number

最大値、最小値。

Repeat:boolean

リピート。

Type:Number

パラメータタイプ。
0 : 通常

1 : ブレンドシェイプ

version 0.9.0

モデルがもつパラメータ一覧を取得します。

ModelUIDとDocumentUIDは省略可能ですが、どちらかは必須となります。

Typeは ’0‘ が通常、 ‘1’ がブレンドシェイプになります。

アニメーションファイル(.can3)のモデルがもつパラメータ一覧は取得できません。

Version

Request

Response

ErrorType

0.9.0

ModelUID?:String, DocumentUID?:String

Parameters:Array<{

  Id:String,

  Name:String,

  GroupUID:String,

  Default:Number,

  Max:Number,

  Min:Number,

  Repeat:boolean

  Type:Number

}>

InvalidData

InvalidModel

version 0.9.1

モデルがもつパラメータ一覧を取得します。

ModelUIDとDocumentUIDは省略可能ですが、どちらかは必須となります。

Typeは ’0‘ が通常、 ‘1’ がブレンドシェイプになります。

アニメーションファイルに含まれるモデルのパラメータ一覧を取得する場合、モデルトラックを選択している必要があります。

モデルが組み込み用モデルトラックの場合、GroupUIDには空文字が返ります。

Version

Request

Response

ErrorType

0.9.1

ModelUID?:String, DocumentUID?:String

Parameters:Array<{

  Id:String,

  Name:String,

  GroupUID:String,

  Default:Number,

  Max:Number,

  Min:Number,

  Repeat:boolean

  Type:Number

}>

InvalidData

InvalidModel

GetParameterGroups

version 0.9.0

モデルがもつパラメータグループの一覧を取得します。

ModelUIDとDocumentUIDは省略可能ですが、どちらかは必須となります。

アニメーションファイル(.can3)に含まれるモデルがもつパラメータ一覧は取得できません。

Version

Request

Response

ErrorType

0.9.0

ModelUID?:String, DocumentUID?:String

Groups:Array<{

  GroupUID:String,

  GroupName:String,

}>

InvalidData

InvalidModel

version 0.9.1

モデルがもつパラメータグループの一覧を取得します。

ModelUIDとDocumentUIDは省略可能ですが、どちらかは必須となります。

アニメーションファイルに含まれるモデルのグループ一覧を取得する場合、モデルトラックを選択している必要があります。

モデルが組み込み用モデルトラックの場合、GroupUIDには空文字が返ります。

Version

Request

Response

ErrorType

0.9.1

ModelUID?:String, DocumentUID?:String

Groups:Array<{

  GroupUID:String,

  GroupName:String,

}>

InvalidData

InvalidModel

GetDocuments

version 0.9.0

ドキュメントの情報を返します。

物理演算、モデル編集と種類ごとに別れ、存在しない場合は0個のドキュメント配列を返します。1モデルの分割表示を行った場合は、Viewsが増えます。

Version

Request

Response

ErrorType

0.9.0

PhysicsDocuments:Array<{

  DocumentUID:String,

  DocumentFilePath:String,

  ModelUID:String

}>,

ModelingDocuments:Array<{

  DocumentUID:String,

  DocumentFilePath:String,

  Views:Array<{

    ModelUID:String

   }>

}>

InvalidData

InvalidDocument

version 0.9.1

ドキュメントの情報を返します。

物理演算、モデル編集と種類ごとに別れ、存在しない場合は0個のドキュメント配列を返します。1モデルの分割表示を行った場合は、Viewsが増えます。

Version

Request

Response

ErrorType

0.9.1

PhysicsDocuments : Array<{

  DocumentUID : String,

  DocumentFilePath : String

  ModelUID : String,

}>

ModelingDocuments : Array<{

  DocumentUID : String,

  DocumentFilePath : String

  Views : Array<{

    ModelUID : String

  }>

}>

AnimationDocuments : Array<{

  DocumentUID : String,

  DocumentFilePath : String

  Views : Array<{

    ModelUID : String,

    ModelFilePath : String

  }>

}>

InvalidData

InvalidDocument

GetCurrentModelUID

version 0.9.0

現在エディタ上でカレントになっているモデルのUIDを返します。

アニメーションファイルに含まれるモデルのUIDは取得できません。

Version

Request

Response

ErrorType

0.9.0

ModelUID:String

InvalidData

InvalidModel

version 0.9.1

現在エディタ上でカレントになっているモデルのUIDを返します。

アニメーションファイルに含まれるモデルのUIDを取得する場合、モデルトラックを選択している必要があります。

Version

Request

Response

ErrorType

0.9.1

ModelUID:String

InvalidData

InvalidModel

GetCurrentEditMode

version 0.9.0

現在エディタ上でカレントになっている編集モードを返します。

Version

Request

Response

ErrorType

0.9.0

EditMode:String

InvalidData

EditMode:String

編集モード。
“Physics” : 物理演算設定エディタ
“Modeling” : モデル編集

“Animation” : アニメーション編集

“ModelingMeshEdit” : メッシュ編集

SetGlobalVersion

version 0.9.1

使用するAPIバージョンを設定できます。

これにより外部アプリケーションで使用するAPIバージョンを固定することができます。未設定の場合は、指定なしに戻すことができます。

Version

Request

Response

ErrorType

0.9.1

Version ?: String

InvalidData

ClearParameterValues

version 0.9.1

対象のモデルに送信したパラメータをクリアします。

SetParameterValueで送信したパラメータはエディタでテンポラリに保持します。物理演算エディタやアニメーションの場合、モデル更新の関係でテンポラリにパラメータを保持し続ける必要があるため、テンポラリに保持したパラメータを明示的にクリアしたい場合このAPIを使用します。

Version

Request

Response

ErrorType

0.9.1

ModelUID : String

InvalidData

イベント

イベントを扱う場合は、まずクライアントがサーバーに対して許可フラグを有効にする必要があります。

{

    (省略)

    "Type": "Request",

    "Method": "NotifyMocFileExported",

    "Data": {

        "Enable" : true

    }

}

すると、サーバーは特定の処理(イベント)を行った際に、クライアントからのリクエストに関係なく、JSONを送信します。

{

    (省略)

    "Type": "Response",

    "Method": "NotifyMocFileExported",

    "Data": {

        "Path" : "c:\\temp\\export.moc3",

        "ModelFilePath" : "c:\\models\\hoge03.cmo3"

    }

}

NotifyPhysicsFileExported

物理演算設定ファイルの書き出し時の通知設定を行います。

Version

Request

Response

Event

ErrorType

0.9.0

Enabled:Boolean

Accepted:Boolean

Path:String,

ModelFilePath:String

InvalidData

NotifyMocFileExported

MOC3ファイルの書き出し時の通知設定を行います。

Version

Request

Response

Event

ErrorType

0.9.0

Enabled:Boolean

Accepted:Boolean

Path:String,

ModelFilePath:String

InvalidData

NotifyMotionFileExported

モーションファイルの書き出し時の通知設定を行います。

Version

Request

Response

Event

ErrorType

0.9.0

Enabled:Boolean

Accepted:Boolean

Path:String,

ModelFilePath:String

InvalidData

NotifyMotionSyncFileExported

モーションシンク設定ファイルの書き出し時の通知設定を行います。

Version

Request

Response

Event

ErrorType

0.9.0

Enabled:Boolean

Accepted:Boolean

Path:String,

ModelFilePath:String

InvalidData

NotifyChangeEditMode

編集モードが切り替わったときの通知設定を行います。

EditModeについては「GetCurrentEditMode」をご覧ください。

Version

Request

Response

Event

ErrorType

0.9.0

Enabled:Boolean

Accepted:Boolean

EditMode:String

InvalidData

エラータイプ

名前

説明

Since

InvalidJson

JSON構造が正しくありません。

0.9.0

UnsupportedVersion

互換性のないバージョンです。

0.9.0

MethodNotFound

指定された命令が見つかりません。

0.9.0

InvalidType

Typeの設定が不正です。

0.9.0

InvalidData

命令の引数が正しくありません。
引数が足りなかったり、引数に異なる型を指定した場合にこのエラーを返します。

0.9.0

PluginNotRegistered

プラグインの登録が完了していません。
プラグインの登録(RegisterPlugin)、ユーザーによる許可が完了していない状態で、命令をリクエストするとこのエラーを返します。

0.9.0

InvalidParameter

指定されたLive2Dパラメータが存在しません。

0.9.0

InvalidModel

指定されたLive2Dモデルが存在しません。

0.9.0

InvalidDocument

指定されたドキュメントがエディタに存在しません。

0.9.0

InvalidView

指定されたビューが存在しません。

0.9.0

制限事項

本alpha版では、一部未実装の機能や既知の不具合、その他懸念される項目について、特に明記すべき事柄を記載しています。通常は、alpha版のバージョンアップにより制限が解除される予定ですが、保証するものではありません。

アニメーション

アニメーションファイルのモデル情報が取得できない

アニメーションファイルに含まれるモデル情報は取得できません。

※5.1 alpha2で修正済み

共通

外部アプリケーションからアイコン情報を指定してもUIに反映されない

外部アプリケーションと連携するときに、API「RegisterPlugin」のIconに情報を設定しても外部アプリケーション連携設定ダイアログのUIには反映されません。