내일배움캠프 34.5일차 - TA강의-1: AI이미지로 모델링 생성해보기, 블렌더→언리얼로 FBX 내보내기

개요

AI는 게임업계에서도 새롭게 떠오르는 뜨거운 감자다. 아직 AI에 대한 인식이 사람마다 천차만별이며, 특히 지구온난화 가속이나 디자이너 인력감축 등으로 부정적인 경향이 매우 강하지만, 내가 좋든 싫든 규모가 작은 직장일수록 적은 인력을 대체하기 위해 AI사용에 능한 사람들을 선호하는 것이 현실이고 미래인 것 으로 보인다.

따라서 미래의 대비를 위해 AI에 대한 경험을 조금이라도 겪어보는 것이 커리어 측면에서 유리하다고 판단, 내일배움캠프 TA특강에서 올린 'AI를 사용한 모델링'을 해보도록 한다.

동시에, 본인이 블렌더를 사용하면서 경험한 문제들을 정리하면서 블렌더에서 작업한 모델링을 언리얼로 내보내는 법을 회고한다.


AI 이미지 생성해보기

Gemini의 이미지 생성에 대한 질문에 대한 답변

구글에서는 Gemini라는 AI툴이 있다. Gemini는 Nano Banana 라는 AI 이미지 생성 엔진이 있으며, 내가 요청한 사항과 참고자료를 바탕으로 이미지를 생성한다.

갓이터 레저렉션의 커스터마이징된 내 플레이어 캐릭터

우선 AI로 생성할 바탕모델을 골라보자. 내가 옛날에 했던 게임의 캐릭터를 네 가지 방향에서 돌려본 것이다. 이것을 바탕으로 AI가 생각하는 자유 주제의 이미지를 생성해보았다.

Gemini가 자료를 바탕으로 NanoBanana엔진으로 생성한 AI이미지

생성된 결과, 내가 묘사한 자료와 거의 일치하는 이미지를 만들어냈다. 파란머리나비 머리핀, 그리고 뒷면에 엠블럼이 새겨진 민트색 코트, 리본달린 오버니삭스신발까지 묘사에 부합한 이미지가 생성되었다. 팔찌의 경우 실제 캐릭터의 팔찌는 홀로그램을 투사하는 기능은 없지만 일반적인 이미지에서 벗어나는 거대한 팔찌이기에, Gemini가 홀로그램 등의 특수한 기능이 있을 것이라 판단한 것으로 보인다.

그렇다면 이걸 토대로 한번 모델링에 용이한 T자 포즈를 한 캐릭터의 그림을 생성해보자.

내가 요청한 사항을 바탕으로 T자 포즈를 한 캐릭터 이미지가 생성되었다. 이걸로 한번 3D모델을 생성해보도록 하자.

AI 모델링을 해주는 사이트는 대표적으로 세 가지가 있다.

1.훈위안: https://3d.hunyuanglobal.com/



2.Meshy AI: https://www.meshy.ai/



3.Tripo: https://www.tripo3d.ai/ko



생성된 모델링중에서 퀄리티가 높고 툰 분위기에 가장 부합한 것MeshyAI이다. 그러나 해당 모델링은 구독자 플랜을 적용한 유저만이 다운로드가 가능하기 때문에 유료구독을 하지 않고서는 쓸 수 없다. 또한, 다각도 이미지를 통해 정밀하게 구현하기 위해서는 역시 유료구독을 신청해야 한다. 지금은 아직 AI를 적극적으로 쓸 상황은 아니므로 구독은 시기상조로 판단된다.

Tripo 또한 유료구독을 통해서만 고품질의 모델링 다운로드가 가능하므로 아쉬운대로 훈위안의 것을 블렌더로 옮겨보도록 하자.

해당 모델링을 블렌더로 가져온 모습이다. 당연한 이야기지만, 리깅이 안되어있기 때문에 손수 리깅을 해야하며, 팔찌는 중앙에 구멍이 나 있으며, 머리핀은 이상한 모양으로 돋아 나있고, 머리카락과 옷이 융화된 듯 눌러 붙어있다. 그리고 텍스처는 새로 만들어야 할 정도로 구획이 엉망이다.

이정도면 제대로 사용하기 위해서는 조형 만을 가지고 처음부터 만들어야 할 수준이다.


결론

무료플랜 기준으로는 어디까지나 간단한 소품 위주로 구현하는 것이 낫고, 게임에서 사용가능한 캐릭터를 구현하려면 모델러 못지않은 추가작업량을 요구할 것이다. 그럼에도 조형이 있는 것 자체만으로 작업량이 상당수 단축될 것이고, 좀 더 정밀하게 다듬어진 유료플랜 모델을 쓴다면 부담이 덜할 것이다.


부록: 블렌더 → 언리얼 FBX 모델링 내보내기 팁

이것은 내가 개인적으로 3D기술을 연습하기 위해 작업한, DeviantArt에서 다른 유저가 만든 MMD용 모델링을 다운로드 받아 블렌더에서 내 입맛에 맞게 메쉬와 리깅에 변형을 가한 모델이다.

손수 만든 모델이던, AI로 만든 모델이던, 블렌더 기준에서는 언리얼과는 다른 좌표계를 쓰고 스케일 단위도 다르므로 블렌더에서 언리얼로 Export하기 위해서는 모종의 과정을 거쳐야 한다.

아래의 문제 발생 및 해결책은 내가 블렌더를 독학하면서 얻은 경험을 바탕으로 지은 것이다.

--요약--
1. Root본 추가: 익스포트된 Root본의 값은 기본값을 유지해야함.
2. 단위스케일 맞추기: Armature의 스케일값은 0.01 유지
3. 좌표축 맞추기: 익스포트 시 기본 본축(Z), 보조 본축(X) 로 옵션 맞추기. (1번의 회전값과 연관됨)


1) Root본 추가

 언리얼은 기본적으로 루트모션의 존재로 캐릭터의 원점 역할을 해주는 Root본이 사실상 필수다. 따라서 Root가 존재하지 않는다면 원치 않은 캐릭터 무빙 등 여러가지 문제가 발생할 수 있다. 마찬가지로 Mixamo에서 불러온 모델링, 애니메이션은 Root본이 없으므로 직접 추가해주는 것이 안정적이다.

캐릭터의 좌표를 명확히 해주는 Root본

2) 단위스케일 맞추기

 언리얼블렌더1:100의 스케일 대비를 가진다. 만약 블렌더에서 Export했는데 언리얼에서 크기가 터무니 없이 작다면 100배만큼의 스케일이 부족한 탓이다. 만약 스태틱 메쉬라면 언리얼에서 Import옵션으로 스케일 100배 늘려주면 해결되겠지만, 스켈레탈 메쉬라면 약간 복잡하다.

스켈레탈 메쉬를 Export할때는 별도의 조치 없이 그대로 내보내면 메시 대비 본의 스케일차이가 심해진다.

스케일 보정없는 Export했을 때의 Skeletal Mesh 본의 모습 (UE 5.3)
이렇게 되면 정상적인 작업이 어려워진다.

스케일 보정 없이 Export된 Root본의 스케일

어째서인지 몰라도, 스케일보정을 하지 않은 아마튜어는 위 사진 처럼 Root본의 스케일이 100으로 조정되면서 본의 사이즈까지 메시가 안보일 정도로 100배 커진다. 이렇게 되면 피직스 에셋 생성이 어렵고 예상치 못한 곳에서 문제가 발생할 수 있다.

비정상적인 본 크기UE5.3에서 발생하는 문제로, UE 5.5부터는 발생하지 않는다.
  그러나 Root본 스케일이 100으로 고정되는 문제는 어느 버전이든 똑같다.

따라서 블렌더에서 Export하기 전에 아래의 작업을 거쳐야한다.

1. 블렌더 아마튜어의 스케일을 언리얼 단위에 맞게 100배로 늘린다. 그리고 [Object] → [Apply] → [Scale]하여 스케일을 다시 1배로 적용한다.

 : 이 과정에서 모델링 전체의 사이즈가 크게 불어날 것이다. 당황하지 말고 다음 단계를 이행한다.

2. 블렌더 아마튜어의 스케일을 1/100배로 줄인다.

결과적으로 모델링 스케일이 원래대로 돌아오면서 위 사진처럼 아마튜어의 스케일이 1/100배 줄어들어있다. 이렇게 되면 언리얼로 Export 중 UE단위(1:100)가 적용되면서 Root의 스케일이 1이 될 것이다.

※ 크게 중요하지는 않지만, Scale을 Apply하면서 변화한 메시들의 스케일 100을 다시 Apply해주면 원래의 1로 돌아온다.

본 사이즈와 Root본의 스케일 문제가 해결된 모습 (UE 5.3)

3) 좌표축 맞추기

앞서 말했듯, 블렌더는 오른손 좌표계를, 언리얼은 왼손좌표계로 서로 다른 좌표계를 쓴다. 좌표계가 다른 상태에서 아무런 조치 없이 그대로 언리얼로 Export를 한다면 아래와 같은 문제가 발생한다.

겉으로는 아무 문제가 없어 보이지만, Root본의 회전값이 (0,0,0)으로 맞춰져 있지 않아 Animation을 재생할 때 모델이 Root모션따라 원치않게 회전하는 등의 잠재적 위험을 내포하고 있다.

Export된 Root본은 반드시 위치,회전,스케일 값이 모두 기본값이어야 한다.

블렌더 Root본의 정보.
Root본은 원점에서 수직을 가리켜야 한다.

블렌더→언리얼로의 FBX Export 권장옵션. 아마튜어의 이름은 반드시 Armature여야 한다.
 (그렇지 않으면 Root 계층구조가 제대로 반영되지 않음)

이를 위해 블렌더에서 Export할때 옵션을 위 사진과 같이 진행한다.

특히 아마튜어탭의 기본 본 축, 보조 본 축의 방향이 Root본의 회전값을 결정한다.
(본인은 각 Z축,X축으로 하였다.)

Export 결과, Root본의 트랜스폼 값이 기본값에 근사하였다.

블렌더의 모델링이 언리얼에 문제없이 옮겨졌다. 

위 Export문제는 비단 모델링 뿐만 아니라 애니메이션에도 해당되는 사항이므로 블렌더에서 언리얼로 옮길 때는 언제나 Root본의 트랜스폼값을 예의주시하자.

댓글

이 블로그의 인기 게시물

내일배움캠프 사전캠프 - 사전캠프설 연휴 커피 파밍 이벤트 작품 [ EXTREMITY ]

내일배움캠프 29일차 - 커리어데이 2일차 : 클라이언트 프로그래머로서 포트폴리오, 입사준비팁