[Unreal] 모델링 모드로 Mesh 수정하기

개요

파라곤 에셋에 미니언의 근접공격을 구현하기 위해 칼만 따로 콜리전을 활성하고 싶었지만 칼과 몸이 하나의 스켈레탈 매쉬로 있어서 불가능했다.

따라서 칼만 따로 분리할 수 있는 방법이 없나 찾다가 언리얼 엔진상에서 간단하게 할 수 있는 방법이 있어 정리해보았다.

통짜 스켈레탈 매쉬...

1. 스태틱 매쉬화

일단 후술할 방법을 사용하기 위해서는 스케레탈매쉬에서 스태틱 매쉬를 추출해야한다.

따라서 스켈레탈 매쉬창에 있는 Make Static Mesh를 클릭해준다.

저장할 위치를 선택해주면

스태틱 매쉬가 생성된것을 볼 수 있다.

2.모델링 모드

이제 해당 스태틱 매쉬를 뷰포트상에 배치하고 모델링 모드를 선택해준다.

그럼 모델링을 하기 위한 툴들이 왼쪽에 생긴다.

3. 자르기

우리는 현재 매쉬에서 칼만 남기고 모두 없애야 하기 때문에 Model > Plane Cut을 선택해준다.

그럼 다음과 같이 plane을 기준으로 매쉬가 잘려져 보인다.

보이기에만 잘려보이지 아직 잘리진 않은 상태이다.

현재 보이는 데로 자르고 싶다면 모델링 툴 패널에 Action > Cut을 클릭하면 된다,

여러번 자를 수 있으므로 plane을 이리저리 돌리면 계속 잘라가면 된다. 

모두 잘랐다면 Accept 버튼을 눌러 수정한 매쉬를 저장해주자.

4. LOD 설정 수정

Accept를 하면 Selection 모드로 돌아가도 매쉬가 잘린채로 유지되는 것을 볼 수 있다.

하지만 해당 매쉬에서 좀 멀어지면 처음 상태로 되돌아가는 것을 볼 수 있다.

가까이서 봤을 때
멀리서 봤을 때

이유를 찾아보니 언리얼에서 매쉬 렌더링을 최적화 하기 위해 LOD를 적용해서 그랬다.

LOD는 거리가 멀수록 퀄리티가 낮은 매쉬로 바꿔줘서 잘 안보이는 매쉬에 대한 처리량을 줄일 수 있게 해준다.

따라서 우리가 자른 매쉬는 하나인데 거리에 따라 다른 매쉬가 렌더링 되서 나타나는 현상이였다.

해결하기 위해서는 스태틱 매쉬창에 Number of LOD를 1로 바꿔주면 된다.

바꿔주고 꼭 Apply Change를 눌러주자

이제 멀리서도 칼만 보이게 된 것을 볼 수 있다.

피봇 옮기기

현재 매쉬 자르기만 했는데 칼을 소켓에 자연스럽게 붙이기 위해서는 피봇의 위치도 칼 손잡이로 바꿔줘야한다.

피봇 위치도 모델링 모드를 통해서 바꿀 수 있다.

XForm > Edit Pivot을 누르고

나타난 기즈모를 칼 손잡이로 옮긴 후 Accept!

 

무기 장착

스켈레탈 매쉬를 자르는 방법은 찾지 못해서 따로 만든 칼 매쉬를 투명하게 만들고 콜리전만 사용할 것이다.

칼을 붙이기위한 코드는 간단하게 Character에 구현하였다.

헤더에 UPROPERTY로 UStaticMeshComponent* Weapon을 선언 후

생성자에 해당 코드를 추가하면 끝.

	Weapon = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Weapon"));
	Weapon->AttachToComponent(GetMesh(), FAttachmentTransformRules::KeepRelativeTransform, TEXT("FX_Trail_02_R"));
	Weapon->SetCollisionProfileName(TEXT("NoCollision"));

 

블루프린트 클래스로 만든 후 우리가 만든 매쉬를 연결해준 뒤 뷰포트 상에서 칼이 붙어있는 것을 확인할 수 있다.

겹쳐서 잘 안보이는데 아무튼 붙어있다.

 

'Unreal' 카테고리의 다른 글

[Unreal C++] 객체 Class 타입 비교하기  (1) 2025.01.07
[Unreal C++]Unreal 코딩 표준  (0) 2025.01.06
[Unreal] Animation 몽타주  (0) 2025.01.01
[Unreal C++] AnimInstance  (2) 2024.12.31
[Unreal C++] behavior Tree C++로 가져오기  (0) 2024.12.30