⚠ 주의! '들어가며' 내용이 너무 삼천포로 빠짐! 하지만 적고 싶음!
한 줄로 정리하면 '액션 연출을 연구해 보려는데 모델링이 필요했고, 합법인 원신을 선택했다.'로 요약할 수 있다. 바로 본론으로 들어가고 싶다면 '들어가며'는 스킵하도록 하자.
들어가며
최근 종강 이후에 진행할 프로젝트로 아카이브를 준비하고 있다. 그리고, 그 과정에서 아카이브의 첫 번째 주제로 이전에 하다 만 관능성(官能性), 그중에서도 속도감에 대한 연구를 진행하려고 한다.
속도감이라는 주제를 첫 번째로 선택한 이유는 <The First Descendant>(이하 퍼디)의 애니메이션 팀에서 작성한 개발자 노트가 인상 깊었기 때문인데 이 때문에 가능하면 퍼디 내 캐릭터, 그중에서도 버니를 모델로 연구를 진행해보고 싶었다.
퍼스트 디센던트
tfd.nexon.com
그래서 버니의 공개된 모델링, 혹은 이와 비슷한 에셋은 없는지 찾아봤다. 결과적으로 하나.. 찾긴 했는데, 불법의 냄새가 너무 심하게 나서 그냥 다른 방향을 알아봤다.
그러다 'miHoYo'(이하 미호요) 측에서 이전에 원신 모델링을 공식적으로 배포했다는 글을 보게 됐는데, 한번 언리얼로 가져와보고 싶어서 작업을 진행하고 이렇게 후기로 남기게 됐다.
..사실 아카이브랑 큰 연관은 없는데 그냥 한번 써보고 싶었다. 이렇게 적고 보니까 나도 왜 갑자기 원신 모델링을 적용하려 했는지 잘 모르겠다. 그냥 보여서 한 것 같은데.. 일단 했으니 같이 살펴보도록 하자.
목차
- 원신 모델링 다운로드
- 블렌더 내 수정 작업
- 언리얼 엔진 내 수정 작업
- 리타겟팅 작업
- 결과
언리얼 엔진으로의 원신 모델링 적용
원신 모델링 다운로드
먼저 원신의 모델링은 여기에서 다운로드 할 수 있다. Aplaybox라는 중국 사이트인데, 이곳에서 MMD 2차 창작을 위해 공식 모델링을 배포한다고 한다.
다만, 사이트가 중국어로 되어있고 회원가입을 해야 확인이 가능해서, 그냥 귀찮으면 한국 블로거들이 올려놓은 자료로 다운받아도 될 것 같다.
专业模型创作分享社区_模之屋_PlayBox
www.aplaybox.com
모델을 다운로드 받은 뒤에 압축을 해제하면 pmx 파일과 texture 파일이 나올 텐데, 여기서 pmx 파일을 블렌더에서 열면 된다. Import 할 때는 internal dictionary 옵션을 선택하도록 하자. 이 옵션을 선택하지 않으면 대부분의 본이 중국어로 표시돼서 알아보기 힘들다.
모델링을 불러오면 아마 좌측 아래처럼 texture가 적용이 안 됐을텐데, CATS 플러그인을 사용하고 있다면 fix model을, 사용하고 있지 않다면 우측 아래처럼 color를 texture로 바꿔주자. 그럼 texture까지 정상적으로 불러와진 것을 확인할 수 있을 것이다.
블렌더 내 수정 작업
블렌더 내에서는 나중에 알아보기 쉽게 중국어를 영문으로 변경하는 작업을 진행한다. 이전 과정에서 진행한 internal dictionary 옵션으로 대부분 변경이 됐으나 누락된 부분이 있을 수 있다.
영문으로 변환이 완료됐다면 amature와 mesh를 선택한 뒤 fbx 형식으로 export 한다. 이때 필요에 따라 scale 값도 조정해야 될 수 있다.
언리얼 내 수정 작업
이제 언리얼 엔진에서 fbx 파일을 import하면 다음과 같은 결과를 얻을 수 있다.
위의 이미지는 CATS 플러그인으로 export한 결과인데, 앞선 예시처럼 내장 툴로 export 했다면 아마 material들이 생성되지 않았을 것이다. 이때는 당황하지 말고 다운로드한 texture를 영문으로 변환하고, 언리얼 엔진으로 import 한 뒤, material로 만들어주면 된다.
위처럼 CATS 플러그인을 사용해서 material들이 있다고 하더라도 texture는 적용이 안 됐기에 마찬가지로 필요한 material들만 선택해서 texture를 연결해줘야 한다. (body, hair, face 등)
그 뒤에는 생성한 material을 모델링에 적용하면 된다. 이때 texture를 보면 알 수 있듯이 hair라고 해서 hair만 있는 것이 아닌 eye 등 다른 곳의 이미지도 있으니 잘 확인하고 연결하도록 하자.
그럼 다음과 같은 결과를 얻을 수 있다.
자세히 보면 묘하게 현실적이라 조금 이상하다. 이에 참고 영상을 보니 emissive color랑 연결해줘 자연스럽게 보이도록 했길래, 나도 따로 emissive intensity라는 parameter를 만들어서 material 발광 정도를 조절할 수 있게 했다.
리타겟팅 작업
이제 해당 모델링을 사용해서 실제로 활용할 수 있도록 리타겟팅 작업을 해야 된다. 리타겟팅은 쉽게 말해 서로 다른 모델링의 애니메이션 등이 정상적으로 동작할 수 있게 하기 위해 skeleton 구조를 맞춰주는 작업이라고 보면 된다.
이를 위해 먼저 skeletal mesh에 맞는 IK rig를 생성했다. 나는 기본 모델링인 mannequin에 리타겟팅하려고 하기에 이에 맞게 retargeting chain을 구성해 줬다.
그리고, 잘 적용이 됐나 확인해 보니 아래와 같이 다리가 움직이지 않았다.
이에 다시 한번 확인해보니 모델링에 움직임을 위한 본이 따로 있었어서 그걸 연결해 줬고, 그래도 나름 정상적으로 재생되는 걸 확인할 수 있었다.
그리고, 자세히 보면 달리면서 다리가 꼬이거나 살짝씩 어긋나는 걸 확인할 수 있는데, 이는 포즈가 맞지 않아서 생기는 문제라고 생각했다. 그래서, 포즈를 맞추고 애니메이션을 적용해 봤다.
.. 다리가 꼬였다. 그리고, 원래대로 돌아오지 않는다. 내 생각에는 본 구조 어딘가에서 꼬이지 않았나 싶다. 원신 모델링이 pelvis랑 upper body가 분리돼 있어서 정상적으로 동작하지 않는 것 같다.
결국, 고민을 하다가 지금 수준에서 모델링, 리깅을 익히고 다룰만한 역량이 안 된다고 생각해서 여기서 적용을 마무리 짓기로 했다.
결과
간단한 애니메이션 몇 개 적용해서 확인해 봤다. 뒤뚱뒤뚱 춉춉!
추가로, 이동하면서 방향을 바꾸면 순간 이동을 하는데.. 이거 완전..
ㅋㅋㅋ 장난이고, 그냥 축이 잘못 설정돼서 발생하는 문제 같다. 아무튼 언리얼 엔진으로의 원신 모델링 적용은 여기서 끝이다!
마치며
사실 글은 간단해 보이는데 위에 적은 것 외에도 시행착오가 되게 많았다.
- 블렌더에서 export 할 때 material 개수가 많다고 안 돼서 확인함.
플러그인으로 combine 한 뒤 export 했더니 무서운 누나가 나옴. - 'Mixamo'에서 자동 리깅으로 성공했다는 사람이 있어서 따라해봄.
첫 번째 모델링은 의상이 다리를 가려서 자동 리깅이 이상하게 됨. 의상이 다른 모델링으로 다시 해봤는데 술 취한 사람 하나 나옴. - Material이 깜빡거리는 문제를 해결함.
한번 확인해 보니 texture가 같은 부분에 적용돼서 생기는 문제로 추정됨. 겹치는 부분 material을 지우니 해결됐음. (영상에는 반영 안 됨.) - 언리얼 5.4 버전에 있는 auto retargeting 기능을 사용해 봄.
마찬가지로 본 구조가 달라서 그런지 잔망스러운 손짓 하나를 남기고 실패함.
결국 실패했지만.. 이쯤 하면 블렌더와 언리얼 사이의 모델링 전달 방식이라던가, 외부 에셋 적용 방식 등 적당히 배운 것 같아 여기서 끝냈다 😅😅
여기서 끝낸 가장 큰 이유는 다음과 같다.
근데 나 이거 왜 하고 있더라..?
아니, MMD 에셋을 언리얼로 가져올 일이 얼마나 많다고, 이 고생을 하고 계시는 거예요..
차라리 이럴 시간에 모델링 에셋 하나 괜찮은 걸로 구해서 툰 쉐이더든 뭐든 공부해서 적용해 보는 게 더 이로울 것 같았다😤😤.
그래서, 여기서 끝낸다. 그래도 재미있는 기록 하나 남겼으니 만족한다😁.
실패 기록인데 그래도 끝까지 읽어줘서 고맙다. 다음에 기회가 된다면 원신은 아니더라도 다른 외부 에셋 적용에 대한 내용을 써보도록 하겠다.
그럼 아디오스~!
'개발 > 언리얼' 카테고리의 다른 글
언리얼 엔진으로 Cel Shading을 구현해보자. (8) | 2024.08.23 |
---|---|
[Blueprint] VR 환경에서 HUD를 구성하는 방법 (1) | 2024.01.16 |
[Blueprint] 나이아가라 시스템에서 외부 데이터를 변수로 입력 받는 방법 (0) | 2024.01.10 |
[Blueprint] Linetrace (0) | 2024.01.09 |
[Blueprint] Timeline (0) | 2024.01.03 |