부위별로 조립하는 모듈형 캐릭터
각 부위의 에셋을 따로 만들어 조립하는 모듈형 캐릭터를 만들었습니다. 파트를 교체하고 조합해서 캐릭터의 외형을 커스터마이즈할 수 있도록 하는 작업입니다.
처음에는 아스트라(Astra)와 오푸스 5.5(Opus 5.5) 모두 이 작업을 해낼 수 있을지 확신이 없었습니다. 어느 쪽이 더 잘할지도 몰라, 두 모델에게 같은 프롬프트로 같은 작업을 맡겨 봤습니다.
두 모델에게 똑같이 전달한 첫 프롬프트는 다음과 같습니다.
지금은 캐릭터 메쉬가 하나의 메쉬로 되어 있는데, 이걸 캐릭터 커스터마이제이션을 위해서, 여러개의 파츠로 분리할 수 있을까? 예로 머리카락(헤어 스타일과 색 선택), 눈(눈색 선택하게), 상의 갑옷, 장갑, 하의 바지/치마, 신발/부츠 이런 정도의 파츠를 조립해서 캐릭터를 만들게. 장착한 아이템에 따라서 파츠의 모양도 바뀌게. 원화 생성은 네가 직접하고, 메쉬 생성은 meshy.ai를 사용하고, 애니메이션은 믹사모? (아니면 이번 기회에 meshy.ai에서 애니메이션도 받아서?) 어떻게 생각해?
두 모델 모두 이 작업을 할 수 있다고 답하고 제작을 시작했습니다. 어느 캐릭터부터 만들지는 각 모델이 스스로 선택했으며, 아스트라는 남성 캐릭터를, 오푸스 5.5는 여성 캐릭터를 먼저 제작하기로 했습니다.
결과적으로 이번 작업에서는 아스트라는 제작에 성공했고, 오푸스 5.5로 진행한 시도는 완성하지 못한 채 중단했습니다.
아스트라: 베이스 모델에 맞춰 파트 조정하기
아스트라는 먼저 기준이 되는 베이스 모델을 만들고, 그 위에 붙일 각 부위의 파트도 별도의 에셋으로 만들었습니다. 그런 다음 각 파트를 베이스 모델에 맞춰 조정했습니다.
아래는 아스트라가 처음으로 캐릭터를 조립해 보여 준 미리보기입니다. 셔츠와 바지, 부츠를 갖춘 캐릭터가 전투 대기 동작을 취하고 있습니다.
이때는 셔츠 소매와 바지의 발목 부분을 비롯해 일부 부위의 리깅이 잘 맞지 않아 위치가 어긋나 있었습니다. 아직 손볼 곳이 남아 있었지만, 처음부터 부위별 에셋을 한 캐릭터로 조립해 미리보기로 보여 주는 단계까지는 도달했습니다.

아래는 같은 캐릭터가 셔츠 위에 가죽 갑옷을 입은 모습입니다.

셔츠와 가죽 갑옷을 모두 벗으면 베이스 모델의 상체가 드러납니다. 아래는 바지와 부츠를 착용한 채 상의를 모두 벗은 모습입니다.

첫 조립 결과를 바탕으로 아스트라가 여러 차례 수정을 이어 갔습니다. 아래는 셔츠의 소매와 허리 부분이 정리된 상태입니다. 초기 미리보기에서 어긋나 있던 소매와 거칠게 보이던 허리 쪽 밑단이 한결 자연스러워졌습니다.
제가 직접 믹사모(Mixamo)에 파일을 올리고 내려받은 것은 최초 베이스 모델의 리깅 때 한 번이었습니다. 베이스 모델을 업로드해 리깅한 뒤, 결과를 다운로드해서 아스트라에게 전달했습니다.
그 이후에는 원화를 그리고, 개별 파트의 리깅을 맞추고, 옷의 메시를 다듬는 작업까지 아스트라가 알아서 수행했습니다. 저는 말로 원하는 수정 사항을 지시하는 것으로 작업을 이어 갔습니다.

판금 갑옷 세트를 만들 때는 각 부품의 콘셉트 원화를 따로 그리는 것부터 시작했습니다. 아래는 아스트라가 상체 갑옷과 얼굴이 드러나는 투구의 원화를 각각 만든 장면입니다.

원화를 그린 뒤에는 제가 연결해 둔 Meshy API를 이용해 아스트라가 3D 모델을 생성했습니다. 이어서 각 파트의 리깅과 캐릭터 조립, 미리보기까지 알아서 진행했습니다.
아래는 그렇게 처음 보여 준 판금 갑옷 세트의 미리보기입니다. 셔츠의 첫 결과와 비슷하게 손목과 발목이 조금 틀어진 부분은 남아 있었습니다. 그래도 API를 연결해 둔 이후, 이 판금 세트를 만드는 과정에서는 제가 직접 개입하지 않아도 이 정도의 결과를 보여 주었습니다.

아스트라는 따로 만든 파트의 크기를 베이스 모델에 맞게 조절하고, 리깅도 맞춰 주었습니다. 리깅은 모델이 뼈대의 움직임을 따라 움직이도록 연결하는 작업입니다. 부위별 에셋을 조립하려면 형태뿐 아니라 이 움직임의 연결도 맞아야 합니다.
헤어도 남성용 두 종류를 각각 헤어 파트만 두상에 맞춰 붙였습니다. 아스트라가 메시를 구성하는 버텍스의 위치와 리깅을 조정해, 헤어가 두상에 잘 맞도록 다듬었습니다.
아스트라는 파트를 만드는 데서 시작해 크기 조절과 리깅 수정, 베이스 모델에 조립하는 과정까지 이어서 처리할 수 있었습니다. 이번 작업에서 특히 인상적이었던 부분은 이렇게 따로 만든 에셋을 실제로 함께 쓸 수 있도록 맞춰 가는 능력이었습니다.
오푸스 5.5: 정밀하게 만들어 잘라 붙이려던 시도
오푸스 5.5는 가죽 갑옷 세트를 입은 캐릭터와 맨몸 캐릭터를 각각 별도의 모델로 만들었습니다. 두 모델을 겹쳐 본 뒤, 각 부위를 잘라 붙여 조립하려는 접근이었습니다. 이를 위해 두 모델의 같은 부위가 최대한 정확히 일치하도록 만들려고 했습니다.
아래 이미지의 왼쪽은 가죽 갑옷 세트를 입은 모델의 앞·옆·뒷모습이고, 오른쪽은 갑옷 모델과 맨몸 모델을 서로 다른 색으로 겹쳐 비교한 모습입니다.

작업의 편의성에서도 차이가 컸습니다. 오푸스 5.5는 개별 파트의 리깅을 스스로 처리하지 못해, 제가 모델을 믹사모에 올려 리깅하고 결과를 내려받아 전달하는 일을 여러 번 반복해야 했습니다.
예를 들어 베이스 모델을 믹사모에 올려 리깅한 뒤 결과를 내려받아 전달하고, 가죽 갑옷 세트도 따로 올려 같은 과정을 거쳤습니다. 아스트라 쪽에서는 최초 한 번으로 끝났던 업로드와 다운로드 작업이 이쪽에서는 계속 필요했습니다.
특히 신발 부분의 리깅에서 많은 시행착오가 있었습니다. 여러 차례 수정을 거쳐 신발을 베이스 모델의 본(뼈대)에 붙였지만, 발목이 어색하게 꺾이는 문제가 남았습니다.
헤어를 붙이는 과정에서도 어려움이 있었습니다. 헤어만 따로 두상에 붙이는 작업이 잘 풀리지 않자, 오푸스 5.5가 스스로 목 부분에서 잘라 머리와 몸통을 이어 붙이는 방식으로 바꾸기로 결정했습니다. 하지만 목의 연결이 매끄럽지 않아 이음매가 매우 두드러졌습니다. 아스트라가 했던 것처럼 버텍스와 리깅을 조정해 헤어 파트 자체를 두상에 맞추는 작업은 이번 시도에서 해결하지 못했습니다.
아래는 여러 차례 수정을 거친 뒤의 최종 결과입니다. 발목이 꺾이는 현상과 목의 눈에 띄는 이음매가 남아 있었습니다.

파트를 붙이는 단계까지는 진행했지만, 리깅과 연결 부위의 문제를 해결해 원하는 상태로 마무리하지는 못했습니다. 헤어를 두상에 제대로 붙이는 작업이 해결되지 않는 시점에 오푸스 5.5 쪽 작업을 중단했습니다.
이후 남은 작업은 아스트라 쪽으로 계속 진행했습니다.
게임에 적용한 모습
완성한 모듈형 캐릭터를 게임에 적용했습니다. 아래는 셔츠와 바지, 가죽 부츠를 착용한 캐릭터가 실제 게임 안에 들어간 모습입니다.

아래는 게임 안에서 캐릭터의 옷을 갈아입는 영상입니다.