Files
UnrealEngine/Engine/Documentation/Source/Shared/GraphNodes/AnimationStateMachine/StateNodes.KOR.udn
2025-05-18 13:04:45 +08:00

101 lines
5.5 KiB
Plaintext

INTSourceChangelist:3108692
Availability:NoPublish
Title: 스테이트 머신
Crumbs:
Description:스테이트 머신을 통해 스켈레탈 애니메이션을 다양한 상태로 나누어, 한 상태에서 다른 상태로의 블렌딩을 완벽히 제어할 수 있습니다.
[EXCERPT:DummyExcerpt]
[/EXCERPT:DummyExcerpt]
[EXCERPT:UAnimStateNode]
개념적으로 볼 때 스테이트(상태)란, 캐릭터나 스켈레탈 메시가 주기적으로 블렌딩해 들어가고 나올 것으로 알고있는 '애님 그래프'의 정리된 부분으로 생각해 볼 수 있습니다. 그런 다음 이러한 그래프 부분 안팎으로 트랜지션(이행)해 들어가고 나올 수 있습니다. 예를 들어 캐릭터 애니메이션에 Idle(빈둥) 스테이트가 있다면, 해당 상태에는 애니메이션이 하나만 있을 수 있습니다.
스테이트 머신에서 보이는 Idle 스테이트는 이렇습니다.
![](State.png)
더블클릭했을 때 그 Idle 스테이트에서 볼 수 있는 단순한 그래프입니다.
![](IdleStateInside.png)
그러다가 캐릭터가 움직이기 시작하면, Movement(이동) 스테이트로 트랜지션 가능합니다. Movement 스테이트란 걷기나 달리기처럼 표면을 따라 측면 이동하는 것으로 정의할 수 있습니다.
![](MoveState.png)
이 스테이트 안에는 캐릭터의 속력과 이동 방향으로 정의되고 있는 [블렌드 스페이스](Engine/Animation/Blendspaces) 를 포함시킬 수 있습니다.
![](MovementInside.png)
스테이트 자체에는 핀이 없는데, 좀 더 자유로운 형태의 레이아웃이 가능하도록 하기 위해서입니다. 스테이트를 다른 스테이트에 연결하려면, 단순히 바깥 테두리에서 선을 끌어 연결해 주면 됩니다. 마치 블루프린트에서 새 노드를 만들 때처럼, 같은 식으로 스테이트를 새로 만들 수도 있습니다.
![](DragWire.png)
[/EXCERPT:UAnimStateNode]
[EXCERPT:UAnimStateConduitNode]
Conduit (컨듀잇, 도관)이란 좀 더 고급의 공유가능 트랜지션 자원 역할을 합니다. Transition Rule (트랜지션 룰, 이행 규칙)은 한 스테이트에서 다른 스테이트로의 단순한 1:1 관계인 반면, 컨듀잇은 1:다, 다:1, 다:다 연결이 가능합니다.
![](ConduitNode.png)
예를 들어 캐릭터가 죽으면 재생가능한 애니메이션이 여럿 있는 상황을 가정해 봅시다. 캐릭터의 생명력이 0 이하로 떨어지면 사망 스테이트로 가는 단순한 트랜지션 룰을 시작할 수 있습니다. 그러나 여기서 스테이트 대신 컨듀잇을 사용했다면, 플레이어가 (총에 맞아, 뭔가에 찔려, 폭발에 휩쓸려, 차에 치어, 모루에 머리를 찧여 등) 어떻게 죽었는지를 확인하는 일련의 검사를 통해 거기서 여러가지 독립된 사망 스테이트로 분기시킬 수 있습니다.
그러한 그래프를 조금 단순화시켜 보면 다음과 같습니다:
![](ConduitGraph.png)
컨듀잇 그래프 내부는 마치 트랜지션 룰같아 보입니다:
![](ConduitInside.png)
컨듀잇을 빠져나가는 실제 트랜지션 룰은 사망 유형을 결정하여 적합한 스테이트로 블렌딩시킬 수 있습니다.
[/EXCERPT:UAnimStateConduitNode]
[EXCERPT:UAnimStateTransitionNode]
스테이트를 정의하고 나면, 한 스테이트에서 다른 스테이트로 스켈레탈 메시를 어떻게 트랜지션 시킬지 제어할 수 있어야 합니다. 그 작업을 Transition Rule(트랜지션 룰, 이행 규칙)이란 것이 담당합니다. 트랜지션 룰은 스테이트가 연결된 와이어 상에 자동으로 생성됩니다.
![](TransitionRule.png)
트랜지션 룰은 True/False 출력을 위해 변수 값에 대한 검사와 테스트를 몇 번이고 할 수 있습니다. 이 부울 결과값은 애니메이션의 트랜지션 가능 여부를 결정합니다.
![](TransitionRuleInside.png)
이 예제에서는 캐릭터의 속력 값을 테스트하고 있습니다. 값이 10 을 넘으면 트랜지션 가능합니다. 이 경우 캐릭터는 Idle 스테이트에서 Movement 스테이트로 넘어갈 수 있습니다. 그런 다음 완벽히 별도의 룰을 사용하여 Idle 스테이트로 되돌아올 수 있습니다. 예를 들어 Movement 스테이트에서 Idle 스테이트로 되돌아오는 트랜지션 룰은 이렇습니다.
![](TransitionRuleReturn.png)
내부에서는 단순히 Movement 스테이트로 트랜지션하는 데 사용된 동일한 값이 더이상 True 가 아닌지만 확인합니다.
![](TransitionRuleReturnInside.png)
트랜지션 룰과 그 프로퍼티 관련 상세 정보는, [트랜지션 룰](Engine/Animation\StateMachines\TransitionRules) 문서를 참고해 주시기 바랍니다.
[/EXCERPT:UAnimStateTransitionNode]
[EXCERPT:UAnimGraphNode_Root]
애님 그래프에서 애니메이션을 처리한 이후, 최종 애니메이션 포즈 결과에서 이 노드로 와이어를 이어 메시에 적용합니다.
[/EXCERPT:UAnimGraphNode_Root]
[EXCERPT:UAnimGraphNode_StateMachine]
스테이트 머신은 스테이트, 트랜지션, 컨듀잇의 집합입니다. 머신은 스테이트 트랜지션에 정의된 룰에 따라 스테이트를 변화시킵니다. 각 스테이트는 개념적으로는 자립적인 애님 그래프이며, 애니메이션 포즈를 출력할 수 있습니다. 이는 스테이트 머신이 포함된 애님 그래프에서 추가적인 조작이 가능합니다.
[/EXCERPT:UAnimGraphNode_StateMachine]