상세 컨텐츠

본문 제목

Learning Unreal 4 언리얼 공부일지 - 블렌드 스페이스가 뭐지

Computer Science/Unreal Engine

by 2022. 1. 26. 20:06

본문

반응형

컨텐츠 브라우저에서 우클릭 → 애니메이션 → 블렌드 스페이스로 블렌드 스페이스를 생성할 수 있다.

이 창이 블렌드스페이스창이다.

왼쪽의 가로축, 세로축의 Axis값을 통해 범위를 설정할 수 있다. 밑에 보이는 좌표평면에 애니메이션을 끌어다놓으면 Horizontal, Vertical value에 따라 애니메이션이 자연스럽게 융합된다.

 

이렇게 상하좌우에 각각 걷는 모션 전후좌우를 넣었다. shift를 이용해서 값에 따른 애니메이션 블랜딩 상황을 볼 수 있다.

 

위 사진은 기존에 연결되었던 Jog_Fwd라는 애니메이션을 떼고 블렌드 스페이스를 연결한 모습이다.

여기서 약간의 tip으로 Alt클릭을 이용해서 노드를 뗄 수 있다.

 

public:
	UPROPERTY()
	float UpDownValue = 0;

	UPROPERTY()
	float LeftRightValue = 0;

Character 헤더에 블렌더 스페이스에 들어갈 가로, 세로축 값을 선언한다.

 

void AMyCharacter::UpDown(float Value)
{
	//UE_LOG(LogTemp, Warning, TEXT("UpDown %f"), Value);
	UpDownValue = Value;
	AddMovementInput(GetActorForwardVector(), Value);
}

void AMyCharacter::LeftRight(float Value)
{
	//UE_LOG(LogTemp, Warning, TEXT("LeftRight %f"), Value);
	LeftRightValue = Value;
	AddMovementInput(GetActorRightVector(), Value);
}

Character cpp에서 위 아래, 좌우로 이동하는 함수로 전달된 값을 블렌더 스페이스 변수에 전달한다.

 

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Pawn, Meta = (AllowPrivateAccess = true))
	float Horizontal;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Pawn, Meta = (AllowPrivateAccess = true))
	float Vertical;

AnimInstance 헤더파일에 변수를 생성한다.

 

void UMyAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{
	Super::NativeUpdateAnimation(DeltaSeconds);

	auto Pawn = TryGetPawnOwner(); 
	if (IsValid(Pawn)) 
	{
		Speed = Pawn->GetVelocity().Size();

		auto Character = Cast<AMyCharacter>(Pawn);
		if (Character) 
		{
			IsFalling = Character->GetMovementComponent()->IsFalling();

			Vertical = Character->UpDownValue;
			Horizontal = Character->LeftRightValue;
		}
	}
}

AnimInstance cpp파일의 함수에서는 MyCharacter로 접근하여 MyCharacter의 가로, 세로 값을 헤더에서 선언한 프로퍼티에 넣는다.

 

캐릭터의 값에서 AnimInstance로 전달되고, AnimInstance를 상속받는 애니메이션 블루프린트에서 Horizontal, Vertical 값을 가져와 블렌드 스페이스로 전달하는 것이다.

직접 움직여보면, 다른 방향으로 너무 순식간에 애니메이션이 어색한 경우가 있는데, 블렌드 스페이스에서 Interpolation Time을 조절하면 된다.

반응형

관련글 더보기