CubismUpdateController

最終更新: 2026年9月29日

Cubism 5.4 alphaを公開中です。 alpha版公開のお知らせについてはこちら

概要

CubismUpdateControllerComponentをアクタに追加することで、Cubism SDK for Unreal Engineの各コンポーネントの実行順を制御することができます。

OW方式では各コンポーネントの実行順序が重要となるため、CubismUpdateControllerを使用して仕様に沿うことが必須となります。
実行順の制御が不要などでCubismUpdateControllerを使用しない場合、コンポーネントの実行順はUnreal Engine側で決められるため、実行順によってはExpressionなどの機能が正しく処理されないことがあります。

ユーザが独自に作成したコンポーネントの実行順を制御するには、そのコンポーネントにICubismUpdatableInterfaceを実装します。

CubismUpdatableInterfaceの実装

実行順の制御対象となるコンポーネントにてICubismUpdatableInterfaceインターフェイスを継承します。

コード

  • GetExecutionOrder()

    そのコンポーネントの実行順を返します。
    この値が小さいコンポーネントほど先に呼び出されます。
    Cubism SDK for Unreal Engineの各コンポーネントの実行順序は CubismUpdateExecutionOrder に定義されています。
     ユーザが実行順序を制御するコンポーネントを追加した場合、CubismUpdateExecutionOrderの定義を参考にして、ここで返す値でどのタイミングで呼び出されるかを注意してください。
    例(独自のコンポーネントをCubismLookControllerとCubismPhysicsControllerの間のタイミングで呼び出したい場合):
    CubismLookControllerは700、CubismPhysicsControllerは800が設定されるため、独自のコンポーネントは750を返すよう設定します。

    constexpr int32 CUBISM_EXECUTION_ORDER_MOTION = 100;
    constexpr int32 CUBISM_EXECUTION_ORDER_RAYCAST = 110;
    
    constexpr int32 CUBISM_EXECUTION_ORDER_POSE = 200;
    
    constexpr int32 CUBISM_EXECUTION_ORDER_EXPRESSION = 300;
    constexpr int32 CUBISM_EXECUTION_ORDER_EYEBLINK = 400;
    constexpr int32 CUBISM_EXECUTION_ORDER_LIPSYNC = 500;
    
    constexpr int32 CUBISM_EXECUTION_ORDER_PHYSICS = 600;
    
    constexpr int32 CUBISM_EXECUTION_ORDER_MODEL = 900;
    
    constexpr int32 CUBISM_EXECUTION_ORDER_RENDERER = 1000;
  • OnCubismUpdate()

    CubismUpdateControllerによって実行順序が制御されたときに更新処理として呼び出される関数です。
    そのコンポーネントが行う更新処理を記述します。

    void UCubismRendererComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
    {
    	Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
    	if (IsControlledByUpdateController())
    	{
    		// CubismUpdateControllerが有効でない場合、自身のTickComponentから処理を行う。 
    		return;
    	}
    	OnCubismUpdate(DeltaTime);
    }
    void UCubismRendererComponent::OnCubismUpdate(float DeltaTime)
    {
    	// Tickの処理を実装
    }
    int32 UCubismRendererComponent::GetExecutionOrder() const
    {
    	return CUBISM_EXECUTION_ORDER_RENDERER;
    }
    
    実行中にコンポーネントを追加、削除する場合の注意
    CubismUpdateControllerが実行順を制御するコンポーネントは、OnEnable()のタイミングで行います。 すべてのコンポーネントがあらかじめアクタにアタッチされている場合は問題ありませんが、シーン実行中、動的にコンポーネントを追加または削除した場合、明示的にCubismUpdateControllerComponent.RefreshUpdatables() を呼び出して読み込み直す必要があります。
  • IsControlledByUpdateController()

    CubismUpdateControllerによって更新するかを制御する関数です。
    trueの場合Tickを介した更新はされません。

この記事はお役に立ちましたか?
はいいいえ
この記事に関するご意見・
ご要望をお聞かせください。