Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

codingfarm

펀치 - 애니메이션 몽타주 본문

Unreal 4/기타

펀치 - 애니메이션 몽타주

scarecrow1992 2020. 7. 18. 19:43

https://docs.unrealengine.com/ko/Engine/Animation/AnimMontage/Overview/index.html

 

애니메이션 몽타주 개요

애니메이션 몽타주 애셋 작업 방식과 어디에 사용할 수 있는지에 대한 설명입니다.

docs.unrealengine.com

 

여러 애니메이션 시퀀스를 하나의 애니메이션 에셋에 합칠수 있으며

이를 여러 섹션으로 나누어 원하는 구간에 대해서만 그리고 조합하여 재생이 가능하게끔 한다.

가령 하반신은 걷거나 뛰고 있는데 상반신은 총기 조준을 하거나, 재장전, 방패막기 등

상반신과 하반신에 별개의 애니메이션을 주는것이 가능해진다.

 

 

상반신과 하반신 애니메이션 따로 재생하기

하반신은 이동에 맞추어 걷지만

상반신은 공격하는 애니메이션을 짜보자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Animation, meta = (AllowPrivateAccess = "true"))
        class UAnimMontage* MeleeFistAttackMontage;
 
 
static ConstructorHelpers::FObjectFinder<UAnimMontage> MeleeFistAttackMontageObject(TEXT("AnimMontage'/Game/TUTORIAL_RESOURCES/Animations/MeleeFistAttackMontage.MeleeFistAttackMontage'"));
    if (MeleeFistAttackMontageObject.Succeeded())
        MeleeFistAttackMontage = MeleeFistAttackMontageObject.Object;
    
 
void APunchKick01Character::AttackStart() {
    Log(ELogLevel::INFO, __FUNCTION__);
 
    int MontageSectionIndex = rand() % 2 + 1;
    FString MontageSection = "start_" + FString::FromInt(MontageSectionIndex);
 
    PlayAnimMontage(MeleeFistAttackMontage, 1.f, FName(*MontageSection));
}
 
cs

애니메이션 몽타주 에셋의 레퍼런스를 바탕으로 인스턴스를 만들고

오브젝트를 포인터에 할당해서 접근을 용이하게 만든다

섹션명과 함께 애니메이션을 재생시킨다.

그리고 애니메이션 블루프린트를 아래와 같이 수정한다.

애니메이션 블렌딩 기능을 통해 2개의 애니메이션이 섞이게끔 해준다.

이때 상반신은 공격 애니메이션에 맞추어 움직이게 만들어야 하므로

"spine_01"을 기준점으로 삼도록 아래처럼 셋팅한다.

 

 

 

특정 애니메이션 반복하기

샷건을 재장전하는 애니메이션이 필요하다

탄창을 집어서, 탄을 충전하고, 대기 상태로 돌아가는 3개의 애니메이션을 연달아 재생하면 자연스러운 연출이 가능하다.

https://www.youtube.com/watch?v=7qtyXSreAzs&feature=emb_title

하지만 위 영상에서 "탄을 집어넣는" 동작을 필요한 만큼 이어 붙이는 방식으로 애니메이션이 형성되어 있다.

이때 "탄을 집어넣는" 여러번의 동작은 단순히 반복을 통해 해결 할 수 있으며

특특히 몇개의 탄을 넣을지 가변적으로 선택가능하게 하기 위해서 아래처럼 애니메이션 몽타주를 적용할 수 있다.

https://www.youtube.com/watch?time_continue=8&v=uV16SOj_9-A&feature=emb_title

 

이외에도 점프후 공중에서 허우적 대는 시간이나, rpg 게임에서 스킬 시전시에 주문을 외우는 동작의 유지시간등을 결정하는데에 쓰인다.

애니메이션 몽타주의 추가적인 사용 예는 아래와 같다.

$\bullet$ 애니메이션 블루프린트 의 이벤트 그래프 에서 애니메이션 재생 가능
$\bullet$ 복잡한 애니메이션 시퀀스를 체인으로 묶어 하나의 애니메이션으로 간주
$\bullet$ 특정 애니메이션(들) 일부분만 코드나 블루프린트 스크립트로 반복
$\bullet$ 코드나 블루프린트 스크립트에 따라 여러 애니메이션을 이벤트 기반 전환 처리
$\bullet$ 복잡한 애니메이션 시퀀스를 네임드 슬롯에 할당하여 코드나 블루프린트로 전환
$\bullet$ 코드나 블루프린트 스크립트에 따라 여러가지 애님 시퀀스를 전환

 

 

'Unreal 4 > 기타' 카테고리의 다른 글

펀치 - 충돌 이벤트(Hit Event)  (0) 2020.07.20
펀치 - 스켈레톤 소켓  (0) 2020.07.19
애님 에셋 리타게팅  (0) 2020.07.18
World Space to Local Space  (0) 2020.07.18
언리얼 디버그 로그 출력  (0) 2020.07.18
Comments