같은 Armature에 의상 메쉬 붙이고 웨이트 전송하기




캐릭터 원안을 그리고, Midjourney로 여러 분위기로 참고용 이미지를 생성해봤다.
이후에 GPT로 전체 시안을 프롬프트로 정리해서 컨셉 시트를 생성했다.
확실히 ai가 나보다 그림을 잘그리니 여러가지 생각이 드는 순간이었고, 약간의 자괴감이 들었으나 이게 가장 즐거운 과정이었다.



Blender를 사용해서 컨셉 시트에 맞게 캐릭터를 스컬핑하고, 메쉬를 다듬고, 정점을 최적화했다.
스컬핑 작업을 할 때, 몸을 통째로 스컬핑 할 자신이 없어서 파츠 별로 분리해서 모델링했었다. 조형을 하다가 문제가 생길 수도 있으니까 분리하는게 좋겠다고 판단했었는데, 지금 생각하니 왜 이런 생각을 했는지 모르겠다.
정말 많은 삽질을 했으며, 작업하는 내내 제대로 하고 있는 건지 확신이 없었다. 3D 캐릭터를 혼자 만든다는 건 생각보다 훨씬 막막한 일이었다.
간신히 바디 모델링을 끝내고 나니, 이제는 이 캐릭터를 걷게 만들어야 했다.
그 순간부터는 또 다른 산이었다. 뼈대를 심고, 리깅하고, 웨이트를 조정하고, 애니메이션까지 붙여야 한다니. 혼자서 하기에는 엄두가 나지 않는 작업의 연속이었다.
정말로 나에게는 언덕보다 큰 산이었다. 이 작업을 하다가 파츠로 분리한 메쉬들이 난리가 나서 결국엔 머리카락을 제외한 모든 인체 파츠 메쉬들을 하나로 합쳤다.
다행히 자동 리깅을 해주는 AccuRIG이라는 프로그램을 발견했다.
처음에는 이제 좀 쉽게 해결되겠다싶었다. 실제로 자동 리깅 자체는 꽤 잘 됐다. 캐릭터도 움직였고, 걷기 애니메이션도 붙일 수 있었다.
문제는 그다음이었다.
AccuRIG으로 리깅된 결과물은 내가 원래 작업하던 Blender 원본 메쉬에 그대로 적용되는 방식이 아니었다. 결과물은 리깅된 FBX 파일로 따로 생성됐고, 애니메이션도 각각 별도 FBX로 나뉘어 있었다. 즉, 내가 기대했던 “원본 메쉬에 자동 리깅 결과를 덮어씌우기”는 되지 않았다.
게다가 자동 리깅된 캐릭터는 바디와 헤어만 있는 상태였기 때문에, 게임에서 사용할 의상을 새로 입혀야 했다.
이번 작업의 목표는 결국 다음과 같았다.
AccuRIG으로 자동 리깅된 캐릭터에 외부 의상 메쉬를 입히고,
그 의상이 애니메이션에서 몸과 함께 움직이도록 만드는 것.
처음에는 원본 메쉬에 자동 리깅 결과를 다시 적용하려고 했지만, 실제로는 그 방식이 맞지 않았다. 최종적으로는 AccuRIG 결과물을 새 기준 캐릭터로 삼고, 그 위에 의상을 맞춘 뒤, 바디의 웨이트를 의상으로 전송하는 방식으로 작업했다.


1. 문제 상황
AccuRIG으로 자동 리깅을 했더니 결과물은 잘 움직였지만, 기존 원본 메쉬에 직접 리그를 적용할 수는 없었다.
결과물 구조는 대략 다음과 같았다.


Armature
├─ body mesh
├─ hair front mesh
├─ hair back mesh
└─ animation actions
바디, 앞머리, 뒷머리는 각각 별도 메쉬였고, 모두 같은 Armature를 공유하고 있었다.
문제는 캐릭터가 거의 누드 바디 상태였기 때문에, 별도의 상의/소매/부츠 같은 의상을 추가해야 했다는 점이었다.
2. 핵심 개념: Vertex Group / Weight
Blender에서 리깅된 메쉬는 단순히 뼈대만 있는 것이 아니라, 각 버텍스가 어떤 뼈를 얼마나 따라갈지에 대한 정보가 필요하다.
이 정보가 Vertex Group, 즉 웨이트 그룹이다.
예를 들어 이런 이름들이 있었다.
CC_Base_Spine01
CC_Base_Spine02
CC_Base_Hip
CC_Base_L_Upperarm
CC_Base_L_Forearm
CC_Base_R_Upperarm
CC_Base_R_Forearm
왼쪽 소매가 팔을 따라 움직이려면, 소매 메쉬에도 왼팔 관련 웨이트 그룹이 있어야 한다.
CC_Base_L_Upperarm
CC_Base_L_Forearm
CC_Base_L_Hand
오른쪽 소매라면 오른팔 그룹이 필요하다.
CC_Base_R_Upperarm
CC_Base_R_Forearm
CC_Base_R_Hand
즉, 의상 리깅의 핵심은 새 뼈를 만드는 것이 아니라:
기존 바디의 웨이트를 의상 메쉬에 복사한다.
의상 메쉬가 같은 Armature를 바라보게 한다.
였다.
3. 기준 포즈 확인
처음에는 A포즈나 T포즈가 없는 줄 알았다.
하지만 Armature Data 설정에서 휴식 위치(Rest Position) 를 눌러보니 원본 메쉬 자세가 기준 포즈로 돌아왔다.
또 따로 0_T-Pose 액션도 확보했다.

정리하면
Rest Position = 실제 리깅/바인딩 기준 포즈
0_T-Pose = 의상 피팅과 확인을 위한 보조 포즈
catwalk loop = 애니메이션 테스트용
의상은 가능하면 Rest Position 기준으로 맞추고, T포즈와 walk loop에서 다시 확인하는 방식이 가장 안전했다.
4. T-Pose 액션 보존
0_T-Pose 액션은 나중에 사라지지 않도록 방패 아이콘, 즉 Fake User를 켜두었다.
Blender에서는 사용되지 않는 Action 데이터가 저장 후 사라질 수 있으므로, 중요한 액션은 Fake User를 켜두는 것이 좋다.
보존해둔 액션
0_T-Pose
catwalk start
catwalk loop
catwalk end
5. 의상 피팅
외부 상의 메쉬를 가져온 뒤, 캐릭터 몸에 맞춰 조정했다.
캐릭터 바디를 켰다 껐다 하면서 대강 치수 정도만 맞춰놓고 작업을 했기 때문에, 상의 몸통은 처음에 바디와 맞지 않아 앞판이 너무 평평하거나 몸 안으로 들어갔다.
그래서 앞판을 자연스럽게 늘리는 작업이 필요했다.
(실제 천처럼 작용하는 피지크 기능이 있다는 걸 모르고 상의를 만들었었다. 현재는 울면서 다시 작업중.)

사용한 기능
Proportional Editing = O 키
Alt + S = 노멀 방향으로 부풀리기
G = 이동
S = 스케일
주의할 점은 O는 숫자 0이 아니라 알파벳 O라는 것. 그냥 문서로 읽었을 때 헷갈렸었다.
앞판을 늘릴 때는 한 점만 당기면 갑옷처럼 튀어나오기 때문에, Proportional Editing을 켜고 영향 범위를 넓게 잡아 가슴부터 배까지 부드럽게 이동시켰다.
목표는
가슴만 뾰족하게 튀어나오게 하지 않기
가슴 → 배 → 밑단이 천처럼 자연스럽게 이어지게 하기
몸보다 아주 살짝 바깥에 위치하게 하기
6. 소매와 몸통 연결
퍼프 소매는 몸통과 실제로 완전히 이어 붙이지 않았다.
처음에는 소매와 몸통 사이의 틈을 메워야 한다고 생각했지만, 애니메이션을 고려하면 오히려 분리 구조가 안전했다.
추천 구조
outfit_body
sleeve_L
sleeve_R
퍼프 소매는 팔을 따라 크게 움직이고, 몸통은 가슴/척추 쪽 뼈를 따라 움직이기 때문에, 둘을 억지로 한 메쉬로 Bridge하면 웨이트가 꼬일 수 있다.
그래서 실제 봉합보다는
소매 윗부분을 몸통 암홀 안쪽으로 살짝 넣기
틈은 어깨 캡/프릴/봉제선으로 가리기
방식이 더 안전했다.
7. 웨이트 전송
Blender 5.1.2 기준으로 예전 튜토리얼과 Data Transfer UI가 달라서 조금 헤맸다.
결국 Modifier의 Data Transfer보다 Weight Paint 모드의 Transfer Weights를 사용했다.
작업 순서
1. Object Mode
2. 옷 오브젝트 선택
3. Shift + 바디 메쉬 선택
4. Weight Paint Mode 진입
5. 상단 메뉴 Weights > Transfer Weights 실행
6. 왼쪽 아래 옵션 패널 조정
선택 순서가 중요했다.
먼저 선택: 웨이트를 받을 옷
마지막 선택: 웨이트를 줄 바디
마지막에 선택한 바디가 Active Object가 된다.
8. Transfer Weights 옵션

옵션 패널은 다음과 같이 설정했다.
데이터 유형: 버텍스 그룹들
데이터층 생성: 체크
버텍스 매핑: 가까운 버텍스
오브젝트 변환: 체크
목적지 레이어 일치: 모든 레이어
조합 모드: 바꾸기
조합 팩터: 1.000
소스 레이어 쪽에는 모든 레이어 선택지가 없었지만, 현재 설정으로도 옷에 모든 vertex groups가 복사되었다.
중요한 옵션은 다음이었다.
데이터 유형 = 버텍스 그룹들
데이터층 생성 = 켜기
조합 모드 = 바꾸기
조합 팩터 = 1.000
Transfer Weights를 실행하면 별도의 확인 버튼을 누르는 게 아니라, 실행 직후 왼쪽 아래 옵션 패널에서 설정을 조정하면 결과가 반영되는 방식이었다.
9. Armature Modifier 확인
웨이트 그룹이 복사되어도 옷에 Armature Modifier가 없으면 애니메이션을 따라가지 않는다.
옷 오브젝트를 선택하고 Modifier 탭에서 다음을 확인했다.
Armature Modifier 있음
Object = 캐릭터 Armature
없으면 직접 추가한다.
Add Modifier
→ Armature
→ Object에 현재 캐릭터 Armature 지정
10. 성공 판단
catwalk loop 애니메이션을 재생해서 옷이 몸과 팔을 따라가는지 확인했다.
성공 기준
상의 몸통이 몸을 따라 움직임
소매가 팔을 따라 움직임
옷이 제자리에 남지 않음
반대쪽 팔을 따라가지 않음
어깨/겨드랑이/손목에서 크게 찢어지지 않음
이 단계에서 드디어 의상이 리깅된 캐릭터를 따라 움직였다.
11. 남은 문제: 바디 관통
애니메이션을 돌려보니 배 부분에서 바디가 옷을 살짝 뚫고 나오는 현상이 있었다.
이건 흔한 문제였다.
해결 방법은 세 가지.
1. 옷 배 부분을 조금 더 앞으로 빼기
2. Alt + S로 옷 앞판을 살짝 부풀리기
3. 옷 안에 완전히 가려지는 바디 면을 숨기거나 삭제하기
게임용 모델에서는 옷 안쪽의 바디를 삭제하는 경우도 많기 때문에, 데모용이라면 옷으로 가려지는 복부/몸통 일부를 과감하게 숨기는 것도 가능하다.
12. 최종 작업 흐름 요약
이번 작업의 전체 순서는 다음과 같다.
- AccuRIG으로 자동 리깅
- 애니메이션별 FBX 확인
- Rest Position / T-Pose 확보
- 0_T-Pose 액션 Fake User 설정
- 의상 메쉬 가져오기
- Rest Position 기준으로 의상 피팅
- 앞판은 Proportional Editing과 Alt+S로 조정
- 소매는 몸통에 완전 봉합하지 않고 겹침/캡 구조로 처리
- 옷 오브젝트 선택 → 바디 선택
- Weight Paint Mode
- Weights > Transfer Weights
- 버텍스 그룹 복사 확인
- 옷에 Armature Modifier 확인
- catwalk loop 애니메이션 테스트
- 관통 부위 보정
- 성공 파일 백업
13. 이번 작업에서 배운 것
가장 중요한 교훈은 이것이었다.
자동 리깅은 끝이 아니라 시작이다.
AccuRIG이 뼈대와 애니메이션을 만들어주더라도, 의상을 추가하려면 결국 다음 작업이 필요했다.
기준 포즈 확인
의상 피팅
버텍스 그룹/웨이트 전송
Armature Modifier 연결
애니메이션 테스트
관통 보정
그리고 모델러들이 왜 대단한지도 알게 됐다.
옷 하나 입히는 것도 단순한 꾸미기가 아니라, 메쉬 구조, 웨이트, 포즈, 애니메이션, 관통 문제까지 모두 연결되어 있었다.
14. 다음에 다시 할 때 체크리스트
- AccuRIG 결과물 원본 백업
- Rest Position 확인
- T-Pose 또는 A-Pose 액션 확보
- 중요한 Action은 Fake User 켜기
- 의상은 Rest Position 기준으로 맞추기
- 앞판은 O(Proportional Editing)로 넓게 조정
- 소매는 몸통과 억지로 붙이지 않기
- 옷 선택 → 바디 선택 순서 지키기
- Weight Paint > Weights > Transfer Weights 실행
- 데이터 유형: 버텍스 그룹들
- 데이터층 생성 체크
- 목적지 레이어: 모든 레이어
- 조합 모드: 바꾸기
- Armature Modifier 확인
- catwalk loop로 테스트
- 배/어깨/손목 관통 확인
- 성공한 순간 바로 버전 저장
'1인 개발 > Sunlit Garden(햇살이 머무는 정원)' 카테고리의 다른 글
| 나는 농장보다 ‘정원’을 만들고 싶었던 것 같다 (0) | 2026.06.14 |
|---|---|
| Sunlit Garden 개발 기록 - (0) | 2026.05.27 |
| Sunlit Garden 개발 기록 - 캐릭터 스프라이트 방향 정리 (0) | 2026.05.25 |
| Sunlit Garden 개발 기록 - 땅 표현 테스트 (0) | 2026.05.18 |