애니메이션 그래프 편집기

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

애니메이션 그래프 편집기는 기술 아티스트와 애니메이터가 Roblox Studio 내에서 복잡한 애니메이션 논리를 직접 구축할 수 있도록 하는 시각적 노드 기반 도구입니다. 블렌드 트리와 같은 동작을 생성하기 위한 간소화된 인터페이스를 제공함으로써 캐릭터 모션에 대한 전통적인 수동 스크립팅 의존성을 제거합니다.

이 시스템은 기존 애니메이션 워크플로와 함께 작동합니다:

  • 애니메이션 편집기: 개별 클립을 작성하고 키프레임 및 곡선을 미세 조정하기 위한 기본 도구로 애니메이션 편집기를 계속 사용하세요.
  • 애니메이션 그래프 편집기: 이 도구를 사용하여 이러한 클립을 가져와 논리 트리로 구성하여 정교한 게임 플레이 동작을 구동합니다.

협업을 강화하도록 설계된 시각적 그래프는 개발자가 애니메이터가 생성한 논리를 신속하게 검사하고 디버그하며 이해할 수 있도록 합니다. 아티스트가 상호작용하는 모션을 다듬는 동안, 개발자는 여전히 블렌드된 애니메이션과 상태에 대한 직접적인 제어를 위해 애니메이션 그래프 노드에 프로그래밍적으로 접근할 수 있습니다.

그래프 구축


애니메이션 가능한 캐릭터에 대한 논리를 구축하려면 Studio 리본의 아바타 탭을 통해 애니메이션 그래프 편집기에 접근하세요. 다음 단계에서는 기본 걷기 및 손 흔들기 애니메이션을 사용하여 리그를 초기화하고 기본 노드 네트워크를 구성하는 방법을 보여줍니다.

실용적인 응용 프로그램에 대한 더 깊은 탐구를 위해, 애니메이션 그래프 참조 파일을 탐색할 수 있으며, 이 파일에는 기본 및 복잡한 구현 예제가 포함되어 있습니다.

자신만의 애니메이션 그래프를 만들려면, 참조에서 제공된 기본 예제와 유사하게 다음 단계를 따르세요:

  1. Studio에서 아바타 탭으로 이동하여 캐릭터 ⟩ 내 아바타를 선택하여 애니메이션 가능한 리그를 추가합니다.

    Studio 툴바에서 강조된 캐릭터 버튼.
  2. 아바타 탭에서 그래프 편집기로 이동하여 애니메이션 그래프 편집기를 엽니다.

    Studio 툴바에서 표시된 애니메이션 그래프 편집기.
  3. 3D 뷰포트에서 애니메이션 가능한 리그를 선택합니다. 그래프 편집기 뷰에서 왼쪽 상단의 그래프를 선택하고 새로 만들기를 선택하여 새 그래프를 생성합니다.

  4. 그래프 편집기에서 마우스 오른쪽 버튼을 클릭하고 노드 삽입 ⟩ 클립을 선택합니다.

    우클릭 메뉴의 노드 목록
  5. 새 클립 노드에서 애니메이션 ID를 설정합니다.

    1. 애니메이션 ID 드롭다운을 선택합니다.

    2. 특정 애니메이션 자산 ID를 제출하려면 가져오기를 클릭합니다.

      애니메이션 ID를 추가하기 위한 애니메이션 가져오기 모듈의 필드 표시
    3. 애니메이션 ID 필드에 기본 걷기 애니메이션을 추가합니다: 507777826.

    4. 가져오기를 선택합니다.

  6. 기본 손 흔들기 애니메이션: 507770239를 사용하여 4-5단계를 반복하여 또 다른 클립 노드를 추가합니다.

    채워진 애니메이션 ID가 있는 두 개의 클립 노드
  7. 그래프 편집기에서 마우스 오른쪽 버튼을 클릭하고 추가를 선택합니다.

    노드 추가
  8. 클립 노드를 추가 노드에 연결하려면 오른쪽 상단 출력 커넥터를 적절한 포트로 드래그합니다:

    1. 걷기 애니메이션이 있는 클립 노드를 기본 포트에 연결합니다.
    2. 손 흔들기 애니메이션이 있는 클립 노드를 부가적 포트에 연결합니다.
    모든 클립 노드가 추가 노드에 연결됨
  9. 추가 노드에서 오른쪽 상단 출력 커넥터를 그래프 출력 포즈 포트에 연결합니다.

    모든 노드가 최종 출력 노드에 연결됨
  10. 선택 사항
    Speed 변수에 매개변수를 할당합니다.

    1. 녹색 속도 포트를 빈 영역으로 클릭하고 드래그합니다. 새 매개변수 노드가 표시됩니다.

      클립 노드의 속도 포트에서 커넥터를 클릭하고 드래그하는 모습.
    2. 그래프 편집기 왼쪽 상단에서 매개변수 창을 사용하여 노드의 매개변수를 신속하게 수정할 수 있습니다. 또한 프로그래밍적으로 접근할 수 있습니다.

      매개변수 창, 매개변수 노드 및 클립 노드가 공유 값을 보여줌.
  11. 재생 버튼을 눌러 애니메이션을 테스트합니다.

    애니메이션 미리보기를 위한 재생 버튼 아이콘
  12. 다양한 가중치, 속도, 재생 모드 및 기타 애니메이션을 테스트해 보세요. 개별 노드에 대한 자세한 내용은 노드 참조를 참조하세요.

API 통합

애니메이션 그래프를 생성하고 배포하는 것은 표준 Roblox 애니메이션 파이프라인을 따릅니다. 애니메이션 그래프 편집기에서 리그를 선택하면 새로운 AnimationGraphDefinition 자산이 생성됩니다. 이 자산은 노드, 연결 및 매개변수의 컨테이너 역할을 합니다. 논리가 완료되면 그래프를 게시하여 표준 자산 ID를 받습니다.

스크립트에서 이러한 그래프와 상호작용하려면 전통적인 애니메이션처럼 Animator에 로드합니다. 그래프의 내부 논리를 구동하려면 AnimationTrack:SetParameter()를 사용하여 이동 속도나 상태 불리언과 같은 실시간 값을 그래프의 변수에 직접 전달합니다.

local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://123456789" -- 게시된 그래프 ID
local animationTrack = animator:LoadAnimation(animation)
animationTrack:Play()
-- RunService를 통한 동적 매개변수 업데이트
game:GetService("RunService").Stepped:Connect(function(_, dt)
local currentSpeed = humanoidRootPart.AssemblyLinearVelocity.Magnitude
animationTrack:SetParameter("humanoidSpeed", currentSpeed)
end)

노드 참조

전역 이벤트 규칙

모든 노드 및 전환에 대해 기본적으로 다음 규칙이 적용됩니다:

  • 이벤트는 소스 노드에서 그래프를 통해 위로 전파됩니다. 각 이벤트는 최종 블렌드에서 소스의 영향을 나타내는 가중치를 포함합니다. 가중치가 어느 시점에서든 0에 도달하면 이벤트는 무시됩니다.
  • 사용자 정의 이벤트 논리가 없는 노드는 모든 이벤트를 변경 없이 통과시킵니다. 입력 간 블렌드 또는 선택을 수행하는 노드는 가중치를 조정하거나 비주요 입력에서 이벤트를 차단할 수 있습니다(각 노드 이벤트 섹션 참조).
  • 그래프의 맨 위에 도달한 마커 이벤트는 AnimationTrack:GetMarkerReachedSignal()을 통해 관찰할 수 있습니다.

전환

애니메이션 그래프의 여러 노드(예: 선택, 우선 선택, 시퀀스, 무작위 시퀀스)는 활성 입력 간 전환 시 애니메이션이 블렌드되는 방식을 관리합니다. 노드 참조에서 중복을 방지하기 위해 이러한 동작은 표준화된 전환 속성 그룹으로 정의됩니다.

기본 전환

기본 전환

노드가 새로운 활성 입력으로 전환될 때 적용되는 기본 블렌딩 동작입니다.

전환 재정의

전환 재정의

기본 전환을 초과하는 입력별 링크 속성입니다. 노드가 해당 입력으로 전환될 때 지속 시간 및 곡선 재정의가 적용되며, BeforeFinished 전환은 나가는 입력의 재정의를 사용합니다.

전환 타이밍

시퀀스 노드 유형의 경우, 다음 설정이 시퀀스가 다음 입력으로 진행되는 시점을 제어합니다:

  • WaitFor (Enum.AnimationNodeWaitFor): 진행 조건을 설정합니다. 현재 입력이 완료되거나 루프를 완료할 때까지 기다리려면 Enum.AnimationNodeWaitFor|Finished(기본값)를 사용하고, WaitForTrigger가 true일 때 진행하려면 Enum.AnimationNodeWaitFor|Trigger를 사용합니다. 노드 수준 기본값은 DefaultWaitFor로 설정하거나 입력에 대해 TransitionOverrideWaitFor로 재정의합니다.
    • When (Enum.AnimationNodeTransitionWhen): Wait For가 Enum.AnimationNodeWaitFor|Finished일 때 적용됩니다. 노드 수준 기본값은 DefaultTransitionWhen으로 설정하거나 나가는 입력에 대해 TransitionOverrideWhen으로 재정의합니다.
      • Enum.AnimationNodeTransitionWhen|Finished (기본값): 현재 입력이 완료된 후 블렌딩을 시작합니다.
      • Enum.AnimationNodeTransitionWhen|BeforeFinished: 현재 입력이 완료되기 1 전환 지속 시간 전에 블렌딩을 시작하여 블렌드가 애니메이션의 끝과 겹치도록 합니다. 예를 들어, 0.2초 전환은 애니메이션의 마지막 0.2초 동안 시작됩니다.

RandomSequenceNode는 블렌딩 시작 시점을 제어하기 위해 DefaultTransitionWhen 및 TransitionOverrideWhen도 지원합니다.

상태 기계 전환에 대한 내용은 전환 속성을 참조하세요.

복제

애니메이션 그래프 매개변수 및 내부 노드 상태는 자동으로 복제됩니다. 복제 모드는 애니메이션 스크립트가 생성될 때 Workspace.AuthorityMode에 의해 결정됩니다:

샘플 애니메이트 스크립트

리그에 대한 애니메이션 그래프를 구동하는 예제 스크립트를 생성하려면 애니메이션 그래프 편집기에서 그래프 -> 애니메이트 스크립트 생성을 사용하세요. 이렇게 하면 StarterCharacterScripts(플레이어 캐릭터의 경우) 또는 리그에 직접 배치된 스크립트 계층이 생성됩니다:

Animate (ModuleScript)
├── RunClient (LocalScript)
└── RunServer (Script, RunContext = Legacy)

애니메이트 ModuleScript는 그래프 로딩 논리를 포함합니다. RunClient 및 RunServer 스크립트는 적절한 컨텍스트에서 이를 호출합니다. 포함된 스크립트는 사용 사례에 따라 다릅니다:

사용 사례포함된 스크립트동작
NPC (모든 모드)RunServer서버가 그래프를 로드하고 재생합니다. 상태는 자동으로 모든 클라이언트에 복제됩니다.
플레이어 + Enum.AuthorityMode.ServerRunServer + RunClient서버가 권한을 가지고 그래프를 구동합니다. 소유 클라이언트는 롤백 기반 로컬 예측을 위해 Enum.PredictionMode를 활성화합니다.
플레이어 + Enum.AuthorityMode.AutomaticRunClient소유 클라이언트가 그래프를 로드하고 재생합니다. 매개변수는 서버 및 다른 클라이언트에 자동으로 복제됩니다.

다음 속성은 애니메이트 스크립트에 저장되며 동작을 구성합니다:

속성유형설명
GraphName문자열애니메이션 그래프 자산의 이름입니다.
CharacterName문자열그래프가 타겟하는 리그의 이름입니다.
SourceAssetId문자열그래프의 게시된 자산 ID입니다. 게시된 게임에서 런타임에 사용됩니다.
IsServerAuthority부울스크립트가 Workspace.AuthorityMode가 Server로 설정되어 생성되었는지 여부입니다. 복제 전략을 결정합니다.
PreviewInStudio부울참(true)일 때(기본값), Studio 플레이 테스트는 게시되지 않은 그래프를 로컬로 로드하여 게시 없이 반복할 수 있습니다. 게시된 자산을 Studio에서 테스트하려면 false로 설정합니다. 현재 Enum.AuthorityMode.Server에서는 지원되지 않습니다.

자동 모드에서의 매개변수 복제

Workspace.AuthorityMode가 자동일 때:

  • 소유 클라이언트가 플레이어 캐릭터 그래프를 구동하고, 서버가 NPC 그래프를 구동합니다.
  • AnimationTrack:SetParameter()를 통해 설정된 매개변수는 자동으로 다른 피어에 복제됩니다. 단일 프레임 내에서 여러 SetParameter 호출은 통합됩니다(마지막 작성자가 이긴다).
  • 매개변수 전송을 위한 추가 스크립팅이 필요하지 않습니다 — 엔진이 내부적으로 복제를 처리합니다.
  • 다른 클라이언트는 매개변수 업데이트를 약간의 지연(하나의 전송 간격 및 네트워크 대기 시간)으로 봅니다.

서버 권한

Workspace.AuthorityMode가 서버일 때:

  • 서버가 모든 그래프에 대해 권한을 가집니다 — 시뮬레이션을 실행하고 전체 그래프 상태를 복제합니다.
  • 복제되는 것: 매개변수와 내부 노드 상태, 경과 시간, 현재 선택, 전환 진행, 루프 수 및 RNG 시드가 포함됩니다. 이를 통해 모든 클라이언트가 동일한 애니메이션 동작을 볼 수 있습니다.
  • 플레이어 캐릭터: 서버가 그래프를 구동합니다. 소유 클라이언트의 RunClient 스크립트는 자동으로 Animator에서 Enum.PredictionMode를 활성화하여 로컬 플레이어가 부드럽고 예측된 애니메이션을 보고 서버와의 불일치 시 조정합니다.
  • NPC: 서버가 그래프를 독점적으로 구동하며, 클라이언트는 복제된 상태를 관찰하고 로컬 시뮬레이션은 없습니다.

매개변수 구동

그래프를 실행하는 모든 스크립트에서 AnimationTrack:SetParameter()를 사용하세요:

  • NPC (모든 모드): RunServer(또는 AnimationTrack에 접근할 수 있는 모든 서버 Script)에서 SetParameter를 호출합니다.
  • Enum.AuthorityMode.Server의 플레이어 캐릭터: RunServer와 RunClient 모두에서 SetParameter를 호출합니다. 서버는 권한 있는 시뮬레이션을 구동하기 위해 매개변수가 필요하고, 소유 클라이언트는 로컬 예측을 구동하기 위해 동일한 매개변수가 필요합니다.
  • Enum.AuthorityMode.Automatic의 플레이어 캐릭터: RunClient(또는 AnimationTrack에 접근할 수 있는 모든 클라이언트 LocalScript)에서 SetParameter를 호출합니다.

생성된 애니메이트 스크립트에는 시작점으로서 주석 처리된 SetParameter 블록이 포함되어 있습니다. 주석을 제거하고 수정하여 게임 플레이 상태(이동 속도, 휴머노이드 상태, 입력 방향 등)에서 매개변수를 구동하세요.

©2026 Roblox Corporation. Roblox 및 Roblox 로고, 'Powering Imagination'은 미국 및 기타 국가 내 당사의 등록 및 미등록 상표입니다.