본문 바로가기
반응형

Unreal179

Unreal IK릭과 IK리타기터를 이용한 애니메이션 리타겟팅 [Unreal] IK릭과 IK리타기터를 이용한 애니메이션 리타겟팅 언리얼 엔진 5.0 환경에서 IK 릭과 IK 리타기터를 이용해 애니메이션을 리타겟팅 하는 방법을 소개합니다. Unreal엔진에서 제공하는 Mannequins 에셋 Manny와 Paragon 에셋의 Greystone 스켈레톤, 메쉬를 사용합니다. 언리얼 엔진에서 리타겟팅 하는 방법은 여러가지가 있습니다. 1. 스켈레톤에서 애니메이션 리타깃을 설정하는 방법2. 애니메이션 클립을 우클릭 한 후 자동 리타깃 하는 방법3. 스켈레톤의 IK릭을 생성하여 리타깃 대상 본들을 설정하는 방법 등등 방법은 다양하지만 하나만 제대로 알아둬도 충분히 사용할 수 있습니다. 이 글에서 진행하는 것은 다음과 같습니다.1. GreyStone의 IK 릭 생성 (리타깃 .. 2024. 1. 27.
Unreal 언리얼 기본 3인칭 콘텐츠 포함시 에러 [Unreal/C++] 언리얼 기본 3인칭 콘텐츠 포함시 에러 언리얼에서 기본 3인칭 콘텐츠를 포함하여 연습용 작업을 하던 도중 발생했습니다.Manny와 Quinn 메쉬를 사용하던 중 컴파일 할 때 마다 이와 같은 오류가 계속 발생해 찾아봤습니다.  Assertion failed: (Index >= 0) & (Index Array index out of bounds: 188 from an array of size 0Crash in runnable thread UnknownThreadPool #8 대부분의 주된 이유는 다양하지만 배열을 사용하고 있으며 배열 크기를 벗어나는 요소에 액세스하려고 합니다.같은 이유가 아닌 원인이 알고싶었습니다. 이것저것 제거하여 테스트 하였고, Control Rig에 의한 오류.. 2024. 1. 25.
Unreal IK(Inverse Kinematics) Rig사용 역 운동학 구현 [Unreal/C++] IK(Inverse Kinematics) Rig사용 역 운동학 구현 언리얼에서 IK를 C++과 2Bone IK를 사용해서 구현했었습니다. [Unreal/C++] IK(Inverse Kinematics) 역 운동학 구현[Unreal/C++] IK(Inverse Kinematics) 역 운동학 구현 언리얼 엔진에서 캐릭터가 언덕이나 계단을 오를 때 발이 바닥을 뚫고 들어가는 모습을 많이 볼 수 있습니다. 이는 캐릭터가 발의 위치가 아닌 충돌체developer-bing-gu.tistory.com 하지만 언리얼 엔진 5에서는 IK를 위한 Rig이 제공됩니다.언리얼 엔진에서 지원하는 IK Rig을 사용하면 기존의 방법보다 더 자연스러운 표현이 가능합니다. 위치를 보간하는 코드는 기존 게시물.. 2024. 1. 15.
Unreal IK(Inverse Kinematics) 역 운동학 구현 [Unreal/C++] IK(Inverse Kinematics) 역 운동학 구현 언리얼 엔진에서 캐릭터가 언덕이나 계단을 오를 때 발이 바닥을 뚫고 들어가는 모습을 많이 볼 수 있습니다.이는 캐릭터가 발의 위치가 아닌 충돌체에 의존하여 서 있기 때문인데 자연스러운 발의 모습을 위해 IK(역 운동학)를 적용시킬 수 있습니다. 언리얼 엔진이나 다른 스켈레톤을 처리하는 툴에서는 정 운동학 (Forward Kinematics)을 사용합니다.Forward Kinematics (FK:정운동학) : 루트에서부터 애니메이션을 계산하는 방식아래 이미지처럼 Root 에서부터 Pelvis -> thigh -> calf -> foot 으로 운동을 계산합니다.반대로 foot 부터 root 방향으로 계산하는 것을 역 운동학 ( .. 2024. 1. 15.
Unreal 잔상 효과 (Afterimage), GhostTrail 만들기 [Unreal/C++] 잔상 효과 (Afterimage), GhostTrail 만들기 언리얼 엔진에서 Animation에 따른 잔상 효과를 구현합니다.잔상효과는 게임의 비쥬얼을 보기 좋게 만들고 퀄리티를 증진시키는데 한 몫 합니다.피하기, 텔레포트, 대쉬 등 여러 애니메이션에 사용될 수 있고 언리얼 엔진에서 지원되는 것이 많아 쉽게 구현할 수 있습니다.   구현하기에 앞서 준비물과 구현 결과물을 소개합니다.준비물1. Skeletal Mesh가 붙어있는 캐릭터 등2. 캐릭터 등을 움직일 애니메이션 몽타주 등 (애니메이션이 없어도 구현이 가능합니다.)결과물1. GhostTrail Actor Script : 캐릭터에서 Spawn을 통해 생성합니다.2. 투명한 Material : 캐릭터 Mesh가 투명하게 보이.. 2024. 1. 15.
Unreal 캐릭터 대쉬, 구르기에 사용할 수 있는 LaunchCharacter [Unreal/C++] 캐릭터 대쉬, 구르기에 사용할 수 있는 LaunchCharacter 언리얼에서 대쉬나 구르기 구현에 Launch Character 함수를 사용할 수 있습니다. 자연스러운 대쉬나 구르기를 사용하고 싶은 경우 Physics Simulation 옵션을 켜고 AddForce, AddImpulse 등을 사용할 수 있습니다. LaunchCharacter(GetActorForwardVector() * 1000, false, false);   #include "GameFramework/Character.h" virtual void LaunchCharacter( FVector LaunchVelocity, bool bXYOverride, bool bZOverride)캐릭터에 보류 중.. 2024. 1. 14.
Unreal 플레이어를 바라보는 방향으로 적 회전 [Unreal/C++] 플레이어를 바라보는 방향으로 적 회전 언리얼 Find Look At Rotation적 캐릭터가 플레이어 캐릭터를 바라보도록 구현ACharacter* target = Status->GetTarget(); // 어떤 방법으로든 플레이어를 가져온다.if (target){ SetActorRotation(UKismetMathLibrary::FindLookAtRotation(GetActorLocation(), target->GetActorLocation()));} 2024. 1. 14.
Unreal FireBall 만들기 [Unreal/C++] FireBall 만들기 언리얼 엔진에서 Particle System을 이용해 FireBall을 구현한다.  FireBall로 쓰일 파티클을 준비해줍니다.액터를 상속받는 클래스를 만들어줍니다. C++에서 필요한 것은 다음과 같습니다.- 충돌을 체크할 SphereComponent와 - 파이어 이펙트를 재생할 Particle System Component- 파이어볼을 움직일 Projectile Movement Component사실상 에디터에서 준비하는 것이 빠르지만 C++로 작업합니다. USphereComponent* SphereCollider; UParticleSystemComponent* ParticleSystem; UProjectileMovementComponent* Project.. 2024. 1. 12.
Unreal 적이나 목적지의 방향 구하기 [Unreal/C++] 적이나 목적지의 방향 구하기 언리얼 엔진에서 A에서 B로 향하는 방향을 알고 싶을 때 사용한다.원거리 무기같은 투사체에 적용하기 좋다.A위치에서 B로 향하는 방향을 알고싶을 때에는B 위치에서 A위치를 빼고 정규화를 해주면 된다. 언리얼에서 Actor의 위치를 가져오는 함수는 GetActorLocation() 이다.나의 경우는 Mesh에 Socket을 붙여놔서 소켓의 위치를 구해야하기 때문에 GetSocketLocation()도 사용했다.GetMesh()->GetSocketLocation("SocketName"); 아래와 같이 B위치에서 A위치를 뺀 Normal Vector를 구하면 -1~1까지의 방향으로 정규화된다.FVector ALocation = GetMesh()->GetSoc.. 2024. 1. 12.
Unreal Binding 실패 Ensure condition failed [Unreal/C++] Binding 실패 Ensure condition failed 언리얼 엔진 OnComponentBeginOverlap 다이내믹 델리게티으 Bind 실패SphereCollider->OnComponentBeginOverlap.AddDynamic(this, &AFireBall::OnComponentBeginOverlap); Ensure condition failed [2024.01.12-06.09.00:471][280]LogOutputDevice: Error: Ensure condition failed: this->IsBound() [File:F:\UnrealEngine-5.0\Engine\Source\Runtime\Core\Public\Delegates\DelegateSignature.. 2024. 1. 12.
Unreal Mesh Socket 위치에서 SpawnActorDeferred 하기 [Unreal/C++] Mesh Socket 위치에서 SpawnActorDeferred 하기 언리얼 엔진에서 액터를 생성하는 방법입니다. Spawn Actor와 다르게 SpawnActorDeferred는 모든 설정이 완료된 후 FinishSpawning을 호출해주어야 정상적으로 배치됩니다. FVector location = GetMesh()->GetSocketLocation("ThrowSocket"); // 소켓 이름으로 소켓의 위치를 가져온다.FTransform transform(location); // SpawnActorDeferred를 하기 위한 Transform을 설정한다.AFireBall* fireBall = GetWorld()->SpawnActorDeferred(FireBall, transfo.. 2024. 1. 12.
Unreal SpawnActorDeferred시 Particle이 재생되지 않음 [Unreal/C++] SpawnActorDeferred시 Particle이 재생되지 않음 언리얼 엔진에서 SpawnActorDeferred 시 파티클이 자동으로 재생되지 않을 때생성이 아직 완료되지 않거나 Activate가 호출되지 않아서 그렇다. 블루프린트 에디터에서 Auto Activate가 켜져 있는지 확인한다. FinishSpawning이 호출되었는지 확인한다.AFireBall* fireBall = GetWorld()->SpawnActorDeferred(FireBall, transform, this, this, ESpawnActorCollisionHandlingMethod::AlwaysSpawn);fireBall->FinishSpawning(fireBall->GetTransform()); 2024. 1. 12.
반응형