Cubism 5.3機能のSDK互換性および制限について
最終更新: 2025年8月26日
このページにはベータ版に関する記述が含まれます。
概要
ここでは、Cubism 5のSDK互換性について以下の内容の説明をします。
- 5.3 SDK ではどのような変更がなされたか。
- 既存の5 SDKとの互換性についてどのような注意点や変更点があるか。
名称について
- 5 SDKは、Cubism 5 SDK R4 以前のSDKを指します。
- 5.3 SDKは、Cubism 5 SDK R5 beta1 以降のSDKを指します。
5.2 Editorと5.3 SDKの新機能対応表
5 Editor新機能 | SDK対応 [対応時期] |
---|---|
パラメータコントローラ | × 非対応(順次対応予定) |
反転した形状の貼り付け | Cubism Editorの機能のため、SDKは対応なし |
ループ編集補助 | Cubism Editorの機能のため、SDKは対応なし |
デフォーマ形状の復元 | Cubism Editorの機能のため、SDKは対応なし |
ブレンドモード | △ 対応(Nativeの一部プラットフォーム及びWeb、Unityのみbeta1から) |
オフスクリーン描画 | △ 対応(Nativeの一部プラットフォーム及びWeb、Unityのみbeta1から) |
ブラシツールの強化 | Cubism Editorの機能のため、SDKは対応なし |
ワープデフォーマのリサイズ補助 | Cubism Editorの機能のため、SDKは対応なし |
動画出力設定にWebM形式追加 | Cubism Editorの機能のため、SDKは対応なし |
互換性に影響のある修正
- Renderer関連処理のクラス構造の変更(Unity以外)
- Cubism 5.3の新機能を利用したモデルの描画方式について(Unity)
- Cubism Core APIの変更
互換性について
後方互換性について
ブレンドモード・オフスクリーン描画
新規機能となるため、互換性に関する説明はありません。
Renderer関連処理のクラス構造の変更(Unity以外)
for Native、for Webにて、Renderer関連処理の保守性向上のため、Renderer関連クラスの構造及び一部関数を変更しました。
フレームワークのみの置き換えを行うとビルドエラーが発生します。
具体的な修正内容は「Renderer関連処理のクラス構造の変更」で説明しています。
Cubism 5.3の新機能を利用したモデルの描画方式について(Unity)
Cubism 5.3で追加されたブレンドモードまたはオフスクリーン描画を利用したモデルはCubism 5.2以前の機能のみを利用したモデルとは異なる新しい描画方式で描画されます。
具体的な修正内容は「Cubism 5.3の新機能を利用したモデルの描画方式について(Unity)」で説明しています。
既存の5 SDKからのアップデートについて
5.3 SDKへとアップデートを行う際には通常と変わらず、ファイルを全て置き換えていただくことで問題なく動作します。
Native および Web についてはSDK Framework内の一部クラスの命名変更のため、呼び出し側を修正する必要があります。
既存の5 SDKの前方互換性について
5.3向けに書き出されたMOCファイルは読み込むことが出来ませんので予めご了承ください。
5.3向けに書き出されたMOCファイルを読み込もうとした場合、csmReviveMocInPlace関数およびcsmMocConsistency関数を呼び出した際に以下のエラーを出力します。
[CSM] [E]csmReviveMocInPlace is failed. The Core unsupport later than moc3 ver:[5]. This moc3 ver is [6]. [CSM][E]Inconsistent MOC3.
Renderer関連処理のクラス構造の変更
for Native、for Webにて、Renderer関連処理の保守性向上のため、Renderer関連クラスの構造及び一部関数を変更しました。
具体的な変更内容は以下になります。
- CubismOffscreenSurface_xxクラスをCubismRenderTarget_xxクラスに名称変更(Native)
- CubismRenderTarget_xxクラスの基底クラスを新規作成し、共通処理を移動(Native)
- CubismRendererクラスの描画処理の構造の変更(Native・Web)
- ブレンド方式の取得方法の変更
万が一お客様がSDKのカスタマイズを行っており通常通りのアップデートが難しい場合には、下記の変更内容をご参照ください。
CubismOffscreenSurface_xxクラスをCubismRenderTarget_xxクラスに名称変更(Native)
CubismOffscreenSurface_xxクラスをCubismRenderTarget_xxクラスに名称変更致しました。
新規機能にオフスクリーン描画が追加されたことによるプログラム内の命名の競合を避けるための対応になります。
この変更により、SDK Framework外でCubismOffscreenSurface_xxクラスを呼び出していた箇所を修正する必要があります。
RenderTargetクラスの基底クラスを新規作成し、共通処理を移動(Native)
CubismRenderTarget_xxクラスファイルから基底クラスCubismRenderTargetクラスを新規作成し、共通化可能な処理を移動しました。
この変更によりCubismRenderTarget_xxクラスファイルの可読性と保守性が向上しました。
CubismRendererクラスの描画処理の構造の変更(Native・Web)
5 SDKまではDrawableのみだった描画オブジェクトに5.3 SDKからOffscreenが追加されたため、CubismRenderer_xxクラス内の描画処理の構造を大幅に変更致しました。
またCubismRenderer_xxクラスのコンストラクタにウィンドウサイズのWidthとHeightを引き渡す仕様となりました。
それに伴い、CubismUserModel クラスのCreateRenderer関数にWidthとHeightを引き渡す必要があります。
ブレンド方式の取得方法の変更
5.3 SDK以降ブレンド方式はブレンドモードに組み込まれ取得方法が変更になり、csmGetDrawableConstantFlags から csmGetDrawableBlendModes になりました。
この変更により5.3 SDKからのブレンドモードについても扱えるようになります。
Cubism 5.3の新機能を利用したモデルの描画方式について(Unity)
ブレンドモードまたはオフスクリーン描画を利用したモデルの描画方式
ブレンドモードまたはオフスクリーン描画を利用したモデルは一度すべての描画オブジェクトがRenderTextureに描画され、最終的に一枚のPlaneの上に描画されるようになります。
ブレンドモードまたはオフスクリーン機能のいずれも利用していないモデルは従来の描画方式で描画されます。
従来の描画方式とCubism 5.3の新機能を利用したモデルの描画方式の差異
従来の描画方式
- 各DrawableがUnityのMesh Filterコンポーネントを利用して、それぞれがUnityオブジェクトとして描画される。
- 各DrawableオブジェクトはBackToFrontZなどのTransform.localPosition.zを利用したソートが出来る。
- マスク描画は前処理マスク方式で行われる。
新機能を利用したモデルの描画方式
- マスク描画は高精細マスク方式で行われる。
- 各描画オブジェクト(Drawable・Offscreen)はCubismRenderer.DrawObject()内で描画処理を行う。
- 各描画オブジェクトは一枚のRenderTextureに描画された後、PlaneにRenderTextureの描画を適用する形で描画される。
- 各描画オブジェクトはBackToFrontOrder、あるいはFrontToBackOrderのいずれかでソートされる。
新機能を利用したモデルの描画方式で生じる影響
新機能を利用したモデルの描画方式では「モデルのDrawable間に別のスプライトを挟む」に記載があるような、MeshRenderer.sortingOrderやTransform.localPosition.zなどを利用してUnityオブジェクトを描画に割り込ませる処理を行うことが出来なくなります。
これらの影響を抑えるための拡張機能を今後実装予定です。
Cubism Core APIの変更
csmGetDrawableRenderOrders関数を廃止し、csmGetRenderOrders関数を新規追加しました。
詳細についてはLive2D Cubism Core API リファレンスをご参照ください。
負荷について
ブレンドモード
ブレンドモードの負荷について、ブレンドモードを1枚でも使用するとモデル全体でごくわずかな負荷が発生します。また、使用枚数ごとに負荷が増加します。
その負荷については、使用している描画APIの種類・バージョンによって異なります。例として、OpenGLの場合 glTextureBarrier が使用できる環境であれば、使用できない環境よりも負荷が軽減します。
オフスクリーン描画
オフスクリーン描画の負荷について、1つ使用するごとに画面サイズのオフスクリーンを生成するため負荷が発生します。
またオフスクリーン描画を1つでも使用している場合、モデル構造の解析処理をモデル読み込み時に行うため、モデル読み込み速度が大幅に低下します。
制限事項
Cubism SDK全般
乗算色・スクリーン色のCubism SDKでの上書き機能において、オフスクリーンに設定されたオブジェクトは、パーツの親子階層の親から伝搬される乗算色・スクリーン色は反映されません。 また、Cubism 5.3で追加された新しい描画方式を利用しているモデルは、自動的に高精細マスクの設定が適用されます。
Native
beta1ではOpenGLのWindows / macOS / iOS / Android のみがCubism5.3機能に対応しております。 Cubism 5 SDK R5 beta1 のパッケージ内に存在する上記以外のプラットフォームは同梱のCubism Coreに対応していないため正常な動作をしない可能性があります。 対応は beta2 以降を予定しております。
Web
特になし。
Unity
上述の通り、モデルがCubism 5.3で追加された新しい描画方式を利用している場合、高精細マスクの設定が適用されます。 そのため、Cubism SDK for Unityにおいて新しい描画方式を利用するモデルでは、全モデルで共有するGlobalMaskTextureは使用せず、デフォルトではインポート時に各モデルで生成されるCubismMaskTextureのアセットを利用し、マスクの個数の制限を受けません。
また、その他に以下の制限があります。
- ヒットエリアが正しく動作しない
- モデルキャンバスの範囲外にあるものは描画されず、切り取られる
なお、Cubism 5.3以降のバージョンで書き出したモデルでも、新しい描画方式を使用していない場合は従来の方式が使用されます。 新しい描画方式を使用していない場合、上記の制限の影響はありません。
その他
上記以外のCubism SDKについては、Cubism5.3機能に対応しておりません。 対応は順次行う予定です。