애니메이션 노드 함수(Animation Node Functions) 는 그래프 업데이트 주기의 설정 지점에서 연관성이 있는 로직을 수행하기 위해 특정 애니메이션 블루프린트 노드에 바인딩할 수 있는 함수 그래프입니다. 애니메이션 노드 함수를 사용하여 레퍼런스 변수를 설정하고 다이내믹 값을 결정하고 애니메이션 스테이트를 설정하고 복잡한 그래프를 정리할 수 있습니다. 또한, 애니메이션 노드 함수를 사용하면 그래프 평가의 설정 지점에서만 로직이 실행되므로 애니메이션 시스템의 퍼포먼스를 크게 높일 수 있습니다.
이 문서에서는 언리얼 엔진의 애니메이션 노드 함수 사용법에 대해 자세히 알아볼 수 있습니다.
새 애님 노드 함수 생성
새 애니메이션 노드 함수를 생성하려면, AnimGraph에서 노드를 선택하고 해당 노드의 디테일(Details) 패널에서 함수(Functions) 섹션으로 이동합니다.

프로젝트의 필요에 따라, 사용할 수 있는 바인딩 중에서 새 함수를 생성할 수 있습니다. 아래에서 사용할 수 있는 함수의 목록과 각 함수에 대한 설명을 참조할 수 있습니다.
함수 | 설명 |
---|---|
초기 업데이트 시(On Initial Update) | 엔진이 처음 애니메이션 블루프린트 노드를 업데이트하기 전에 이 함수 그래프에 바인딩된 로직을 호출합니다. 이 함수를 사용하여 컴포넌트 레퍼런스 또는 스태틱 값 같은 변하지 않을 노드를 위한 상수를 설정할 수 있습니다. |
연관성이 생길 시(On Become Relevant) | 엔진이 그래프에서 노드의 연관성이 생길 때마다 이 함수 그래프에 바인딩된 로직을 호출합니다. 이 함수를 사용하여 노드에 필요하지만 노드가 평가되는 동안 업데이트되지 않을 다이내믹 값을 설정할 수 있습니다. |
업데이트 시(On Update) | 엔진이 노드를 업데이트할 때, 틱마다 이 함수 그래프에 바인딩된 로직을 호출합니다. 이 함수를 사용하여 노드가 업데이트되는 동안 노드에 필요한 다이내믹 값을 설정할 수 있습니다. 업데이트 시 함수 바인딩을 사용하는 예시 워크플로는 디스턴스 매칭 문서를 참조하세요. |
AnimGraph 에서 연관성 이라는 콘셉트는 엔진이 노드를 평가하는지 여부를 말합니다. Blend 노드나 스테이트 머신을 사용할 때처럼 노드가 평가되지 않는 경우, 일부 노드가 완전히 비활성화될 수 있습니다. 이렇게 되면, 해당 노드는 연관성이 없는 것입니다. 현재 Output Pose 에 기여하는 노드만 연관성이 있는 것으로 간주합니다.
이 예시에서 Aim Offset 노드는 연관성이 없는데, 왜냐하면 Blend 노드가 입력 A에 완전히 블렌딩되기 때문입니다.

새 함수를 노드의 평가 주기에 언제 바인딩할지 선택한 다음, 해당 바인딩의 드롭다운 메뉴에서 (+) 새 바인딩 생성(Create New Binding) 옵션을 사용하여 새 함수 그래프를 생성합니다. 그러면 이 함수 그래프가 내 블루프린트(My Blueprints) 패널에 나타나고, 여기서 함수의 이름을 지정한 후 함수를 열 수 있습니다.

새 애니메이션 노드 함수는 바인딩된 애니메이션 블루프린트 노드에서 함수의 그래프로 데이터를 전달하는 데 사용되는 입력 핀을 함수 노드에 자동으로 생성합니다. 이러한 핀을 사용할 필요가 없는 함수 연산도 있지만, 함수를 사용하여 노드의 현재 스테이트를 읽는 경우처럼 핀을 통해 제공되는 데이터가 필요한 로직도 있습니다.

입력 핀 | 설명 |
---|---|
컨텍스트(Context) | 노드가 델타 시간(Delta Time)이나 관성화 요청 같은 노드에 연관성이 있는 데이터를 전달하도록 허용합니다. |
노드(Node) | 노드가 이 핀을 통해 노드 자체를 전달하도록 허용합니다. 일반적으로 변환(Convert) 함수를 사용하여 이러한 핀을 특정 노드 타입으로 변환해야 합니다. |
또한, 다음과 같은 요구 사항이 충족되는 한, 기존 함수를 애니메이션 블루프린트 노드에 바인딩할 수 있습니다.
-
함수의 스레드 세이프(Thread Safe) 프로퍼티가 활성화되어 있어야 합니다.
-
함수에 두 개의 입력 이 포함되어 있어야 합니다. 첫 번째 입력은 애님 업데이트 컨텍스트 레퍼런스(Anim Update Context Reference) 타입이고, 두 번째 입력은 애님 노드 레퍼런스(Anim Node Reference) 타입입니다. 이러한 각 입력에는 참조전달(Pass-by-Reference) 프로퍼티도 활성화되어 있어야 합니다.

새 함수를 생성하거나 애니메이션 블루프린트 노드에 바인딩하면 AnimGraph의 노드에 해당 함수가 표시됩니다.
이 예시에서는 캐릭터의 회전을 가져오고 피치 및 요 값을 설정하기 위한 에임 오프셋 로직이 함수 내에 모두 포함되어 있습니다. 엔진은 이 로직을 이벤트 그래프의 모든 틱마다 실행하는 것이 아니라 AnimGraph에서 Aim Offset 노드가 업데이트되는 동안에만 실행하므로 퍼포먼스 비용이 크게 감소합니다.

그래프에서 함수 옆에 있는 돋보기 아이콘을 사용하여 연결된 애니메이션 블루프린트 노드에서 바로 애니메이션 노드 함수를 열 수 있습니다.
애니메이션 노드 함수의 노드 작업
애니메이션 노드 함수의 노드 작업 로직은 언리얼 엔진의 다른 함수 그래프와 비슷합니다.
프로젝트의 퍼포먼스를 더 높이고 싶다면 프로퍼티 액세스와 같은 애니메이션 최적화 기법을 구현하여 엔진이 애니메이션 노드 함수를 애니메이션 업데이트가 실행되는 작업자 스레드에 넘기게 할 수 있습니다.
Sequence Player 노드
Sequence Player 또는 Sequence Evaluator 노드에 애니메이션 노드 함수를 바인딩할 때, 함수 내에 Sequence Player 노드를 사용하여 애니메이션 노드 함수를 통해 직접 애니메이션 시퀀스를 인터페이스하고 재생할 수 있으므로, 게임플레이 팀이 애니메이션 재생을 더 잘 제어할 수 있습니다.
아래에서 Sequence Player 노드 목록과 그 기능에 대한 설명을 참조할 수 있습니다.
이름 | 이미지 | 설명 |
---|---|---|
![]() |
Set Sequence (이밸류에이터 라이브러리) | 연결된 Sequence Evaluator 노드에 의해 재생될 현재 애니메이션 시퀀스를 설정합니다. |
![]() |
Set Sequence (플레이어 라이브러리) | 연결된 Sequence Player 노드에 의해 재생될 현재 애니메이션 시퀀스를 설정합니다. |
![]() |
Set Sequence with Inertial Blending (이밸류에이터 라이브러리) | 지정된 기간의 관성 블렌드(Inertial Blend) 를 사용하여 연결된 Sequence Evaluator 에 의해 재생될 현재 애니메이션 시퀀스를 설정합니다. |
![]() |
Set Sequence with Inertial Blending (플레이어 라이브러리) | 지정된 기간의 관성 블렌드(Inertial Blend) 를 사용하여 연결된 Sequence Player 에 의해 재생될 현재 애니메이션 시퀀스를 설정합니다. |
![]() |
Set Explicit Time (이밸류에이터 라이브러리) | 연결된 Sequence Evaluator 노드의 현재 누적 시간을 설정합니다. |
애니메이션 함수에 Sequence Player 노드를 생성하고 그래프에 추가한 다음에는 Convert 노드를 사용하여 Player 노드에 적절한 데이터를 제공해야 합니다.
Convert to Sequence Player 및 Convert to Sequence Evaluator 노드
애니메이션 블루프린트 함수를 사용하여 애니메이션을 재생하려면, Convert 노드를 사용하여 컨텍스트 Sequence Player 및 Sequence Evaluator 노드의 데이터를 해당 애니메이션 노드 함수로 전달하면 됩니다.
애니메이션 노드 함수 그래프에 Sequence Player 노드를 추가한 다음, Function 노드의 노드 핀에서 Convert 노드를 추가하고, 그 출력을 Player 노드의 Sequence Player 또는 Sequence Evaluator 입력에 연결합니다.

Sequence Evaluator 또는 Sequence Player 노드에 직접 애니메이션 노드 함수를 빌드하는 경우, 순수 함수 Convert 노드(녹색)를 사용할 수 있습니다.

스테이트 머신처럼 다른 노드 타입에 애니메이션 노드 함수를 생성하는 경우에는, 함수 변환 노드(파란색)를 사용하여 해당 노드를 Sequence Player 또는 Sequence Evaluator로 적절하게 변환해야 합니다.

스테이트 머신
State Machine 노드에 Animation Blueprint Function 노드를 생성하고 해당 노드를 사용하여 스테이트 머신의 애니메이션 스테이트를 설정할 수 있습니다. 예를 들어, Set State 노드와 함께 On Update(업데이트 시) 함수를 사용하여 트랜지션 로직을 설정하지 않고도 애니메이션 스테이트 머신 스테이트를 설정할 수 있습니다.
Set State 노드
Set State 노드를 사용하여 트랜지션 로직을 설정하지 않고도 애니메이션 노드 함수를 통해 바로 애니메이션 스테이트를 설정할 수 있습니다. 아래에서 Set State 노드의 프로퍼티 목록과 그 기능에 대한 설명을 참조할 수 있습니다.

프로퍼티 | 설명 |
---|---|
업데이트 컨텍스트(Update Context) | Function 노드의 컨텍스트 핀을 연결하여 델타 시간과 AnimGraph의 현재 위치 등, 연산에 필요한 컨텍스트를 Set State 노드에 제공합니다. |
노드(Node) | 바인딩, 재생 속도 및 현재 재생 시간으로 사용할 Set State 노드에 대한 노드 레퍼런스를 설정합니다. 함수 그래프에서 스테이트 머신을 적절하게 설정하려면 이 노드가 Convert to Animation State Machine 노드에 연결되어야 합니다. 함수가 State Machine 노드에 바로 바운딩되어 있으면, 순수 Convert to Animation State Machine 노드(녹색)를 사용할 수 있습니다. ![]() 노드가 State Machine 노드에 바로 연결되어 있지 않으면, Convert to Animation State Machine 함수 노드(파란색)를 사용해야 합니다. ![]() |
타깃 스테이트(Target State) | 이 노드가 활성화될 때의 엔진 재생 스테이트를 설정합니다. 다이내믹 값을 사용하여 이 핀을 바인딩하거나 노드의 필드를 사용하여 스테이트의 이름을 입력할 수 있습니다. |
기간(Duration) | 현재 스테이트에서 타깃 스테이트로 트랜지션되는 블렌드 기간을 설정합니다. 값이 0.0 이면 즉시 트랜지션되며, 값이 커질수록 트랜지션 속도가 느려집니다. |
블렌드 타입(Blend Type) | 노드가 스테이트 간 애니메이션 트랜지션에 사용할 블렌드의 타입을 설정합니다. 다음 옵션 중에서 선택할 수 있습니다.
|
블렌드 프로파일(Blend Profile) | 블렌드에 적용할 블렌드 프로파일을 설정합니다. |
알파 블렌드 옵션(Alpha Blend Option) | 애니메이션 블렌딩을 커스터마이징할 알파 블렌드 옵션을 설정합니다. |
커스텀 블렌드 커브(Custom Blend Curve) | 블렌드 커브로 사용될 커브 에셋을 설정합니다. |
Get State 노드
Get State 노드를 사용하여 현재 활성화되어 있는 애니메이션 스테이트를 확인할 수 있습니다. 아래에서 Get State 노드의 입력 및 출력 핀 목록과 그 기능에 대한 설명을 참조할 수 있습니다.

핀 | 설명 |
---|---|
업데이트 컨텍스트 | Function 노드의 컨텍스트 핀을 사용하여 그래프에서 Get State 노드의 컨텍스트를 설정합니다. 이 핀은 델타 시간과 AnimGraph의 현재 위치 같은 정보를 전달합니다. |
노드 | 바인딩, 재생 속도 및 현재 재생 시간으로 사용할 Set State 노드에 대한 노드 레퍼런스를 설정합니다. |
반환 값(Return Value) | 현재 애니메이션 스테이트의 이름을 스트링 값으로 반환합니다. |
Is State Blend In 및 Is State Blend Out 노드
블렌딩 동작을 구동하는 로직을 빌드하기 위해 Is State Blending In 또는 Is State Blend Out 노드를 사용하여 현재 애니메이션 스테이트가 블렌딩 인인지 블렌딩 아웃인지 확인할 수 있습니다. 아래에서 Is State Blend In 또는 Is State Blend Out 노드의 핀 목록과 그 기능에 대한 설명을 참조할 수 있습니다.

핀 | 설명 |
---|---|
업데이트 컨텍스트 | Function 노드의 컨텍스트 핀을 사용하여 그래프에서 Get State 노드의 컨텍스트를 설정합니다. 이 핀은 델타 시간과 AnimGraph의 현재 위치 같은 정보를 전달합니다. |
노드 | 바인딩, 재생 속도 및 현재 재생 시간으로 사용할 Set State 노드에 대한 노드 레퍼런스를 설정합니다. |
반환 값 | 스테이트가 블렌딩 인 인지 블렌딩 아웃 인지에 대한 boolean을 반환합니다. |
Is State Blend In 또는 Is State Blend Out 노드를 사용하는 경우, Convert to Animation State 노드를 사용하여 적절한 노드 컨텍스트 데이터를 제공해야 합니다. Animation State 출력 노드에서 바로 함수를 업데이트하는 경우, 순수 Convert to Animation State 노드(녹색)를 사용할 수 있으며, 해당하는 다른 모든 인스턴스에 대해서는 Convert to Animation State 함수 노드(파란색)를 사용할 수 있습니다.

함수를 스테이트에 바인딩
애니메이션 노드 함수를 바로 애니메이션 스테이트에 바인딩할 수도 있습니다. 하지만, 함수 그래프는 스테이트 AnimGraph 내의 출력 노드에만 바인딩할 수 있습니다.

추가 리소스
애니메이션 노드 함수 사용에 대한 자세한 내용은 라이라 샘플 프로젝트를 참조하시기 바랍니다.
애니메이션 노드 함수 설정에 대한 예시 워크플로는 디스턴스 매칭 문서를 참조하세요.