CubismUpdateController
업데이트: 2026/09/29
개요
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을 통해 업데이트되지 않습니다.