描画割り込み機能
最終更新: 2026年1月8日
このページにはベータ版に関する記述が含まれます。
概要
Cubism 5 SDK for Unity R5 beta 3 から追加された、モデルの描画オブジェクト(Drawable、Offscreen)の描画処理の前後で任意の処理を呼び出すことが出来る機能です。
任意のRendererのついたオブジェクトとCubismモデルを処理の対象とすることができます。
仕組み
インターフェース ICubismRenderingInterceptor を持ったコンポーネントが CubismRenderingInterceptorsManager に登録されることでカスタムレンダーパス上で描画オブジェクトの描画処理の前後に処理が呼び出されます。
Cubism SDK for Unityでは、描画割り込み機能をすぐに使えるように ICubismRenderingInterceptor を継承した CubismRenderingInterceptController コンポーネントを用意しています。CubismRenderingInterceptController コンポーネントを利用する場合は OnEnable() 時に自動で CubismRenderingInterceptorsManager に登録されるように設定されています。
使い方
用意されているコンポーネントをそのまま利用する
コンポーネントを任意のオブジェクトにアタッチすることで使用できます。CubismRenderingInterceptController
変数と関数について
InvokeTiming InvokeTimingSetting
描画処理の前後どちらで処理を行うかを決定する列挙型の変数。
InterceptingMode Mode
下記の3つの方式を切り替えるための列挙型の変数。
・SortingOrder
後述するSortingOrderの値で描画順を制御する方式
・ZDepth
カメラからの距離を使って描画順を制御する方式
・Drawable
特定のDrawableを指定して、描画順に関わらず指定したDrawableの描画処理の前後で処理を行う方式
int GroupSortingOrder
どのGrouped Sorting Indexの時に描画するかを決める変数。
指定したGrouped Sorting Indexで描画されるモデルが存在しない場合は InterceptingMode.Drawable が設定されている時を除いて処理をスキップする。
int SortingOrder
描画順を設定する変数。InterceptingMode.SortingOrder 以外では無視される。
CubismDrawable _targetArtMeshInterceptingMode.Drawable の際に参照されるDrawable
CubismRenderController _renderController
Cubism モデルのオブジェクトにアタッチされたときに参照する CubismRenderController コンポーネントOnEnabled() で自動的に参照を取得する。
Renderer_renderer
Cubism モデル以外のオブジェクトにアタッチされた時に参照する Renderer コンポーネント
Material _material_renderer のマテリアル
継承したコンポーネントを利用する
CubismRenderingInterceptController コンポーネントを継承するか、あるいはインターフェース ICubismRenderingInterceptor を継承するかの2つの方法があります。
CubismRenderingInterceptController コンポーネントを継承
CubismRenderingInterceptController コンポーネントは ICubismRenderingInterceptor と ICubismUpdatable、そして MonoBehaviour を継承したコンポーネントです。
いくつかの関数やプロパティは virtual に設定されています。
int ExecutionOrder
Cubismモデルにアタッチした場合に OnLateUpdate() の実行順を制御する値
bool NeedsUpdateOnEditing
Cubismモデルにアタッチした場合に非再生時(Editモード)でも OnLateUpdate() の更新処理を行うかのフラグ
void OnLateUpdate()
毎フレームの更新処理を行うときに利用する関数
void OnPreRendering()InvokeTiming.PreRendering 時に実行される関数
void OnPostRendering()InvokeTiming.PostRendering 時に実行される関数
ICubismRenderingInterceptor を継承
インターフェース ICubismRenderingInterceptor を継承する場合、実装が必要な関数は OnPreRenderingForPass() と OnPostRenderingForPass() です。CubismRenderingInterceptorsManager への登録は個別に実装する必要があります。
void OnPreRenderingForPass()
カスタムレンダーパスで描画処理の直前に呼び出される関数
void OnPostRenderingForPass()
カスタムレンダーパスで描画処理の直後に呼び出される関数