Skip to content

Blender 웨이트 페인팅: 누구나 겪는 7가지 문제와 해결법, 그리고 이 단계를 건너뛰는 방법 ​

마지막 업데이트: 2026년 9월.

웨이트 페인트 모드에서 팔꿈치를 가로질러 파란색에서 빨간색으로 이어지는 열 그라디언트가 표시된 Blender 캐릭터 팔

Blender에서 발생하는 웨이트 페인팅 문제는 거의 모두 다음 일곱 가지 중 하나입니다. 자동 웨이트가 실행되지 않거나, 한 팔다리의 웨이트가 다른 팔다리로 번지거나, 한 버텍스를 4개가 넘는 본이 당기거나, 웨이트 합이 1이 되지 않거나, 양쪽 웨이트가 서로 다르거나, 손목을 비틀 때 찌그러지거나, 몸이 움직여도 재킷이 따라오지 않는 문제입니다. 각 문제에는 Weight Paint Mode의 Weights 메뉴에 있는 특정 도구(Normalize All, Clean, Limit Total, Smooth, Mirror Vertex Group, Transfer Weights)나 모디파이어 설정이 있으며, 이 가이드에서는 각 문제를 해결하는 정확한 경로를 알려드립니다. 아예 웨이트를 칠하고 싶지 않다면 캐릭터 스키닝을 대신 처리해 주는 두 가지 애드온이 있으며, 마지막에 둘 다 살펴봅니다.

빠른 답변 ​

  • 자동 웨이트가 실패할 때 Bone Heat Weighting: failed to find solution for one or more bones가 표시된다면 메시를 정리하세요. Mesh > Clean Up > Merge by Distance, Degenerate Dissolve, Delete Loose를 실행한 다음 Select > Select All by Trait > Non Manifold를 사용합니다. 하나로 연결된 몸만 리깅하고 의상은 나중에 붙이세요.
  • 웨이트가 엉뚱한 팔다리로 번질 때: 영향을 받은 면을 선택한 다음, 해당 면을 담당해야 하는 본에만 Weights > Assign Automatic from Bones를 실행하거나 웨이트를 지운 뒤 Weights > Smooth와 Weights > Clean을 실행하세요.
  • 버텍스당 본이 너무 많을 때: Limit을 4로 설정해 Weights > Limit Total을 실행한 다음 Weights > Normalize All을 실행하세요.
  • 웨이트 합이 1이 아닐 때: Lock Active를 끄고 Weights > Normalize All을 실행한 다음 도구 옵션에서 Auto Normalize를 켜세요.
  • 한쪽은 맞지만 반대쪽이 다를 때: Mirror Weights와 Flip Group Names를 켜고 Weights > Mirror Vertex Group을 실행하거나, Symmetry 패널에서 Mirror Vertex Groups를 켜고 페인팅하세요.
  • 사탕 포장지처럼 비틀리는 손목: 렌더링용이라면 Armature 모디파이어의 Preserve Volume을 켜고, 게임 엔진용이라면 트위스트 본을 사용하세요.
  • 의상이 몸을 따라가지 않을 때: 의상에 Data Transfer 모디파이어를 추가하고 Vertex Groups와 Nearest Face Interpolated를 선택한 뒤 소스를 몸으로 설정하세요.
  • 이 단계를 건너뛰려면: Voxel Heat Diffuse Skinning(약 $30)은 Blender 솔버가 거부하는 메시도 스키닝합니다. Cinevva Rig 애드온(출시 가격 $29, 사용자 컴퓨터에서 오프라인으로 실행, Windows, macOS, Linux용 Blender 4.2 이상 지원)은 스켈레톤 배치와 웨이트 작업을 함께 처리합니다.

빠른 참조 ​

문제나타나는 현상해결법위치
자동 웨이트 실패Bone Heat Weighting: failed to find solution for one or more bonesMerge by Distance, Degenerate Dissolve, Delete Loose를 실행하고 논매니폴드 에지를 수정한 뒤 몸만 따로 리깅Edit Mode의 Mesh > Clean Up, Select > Select All by Trait
웨이트 번짐팔을 올리면 갈비뼈가 함께 올라가거나 손이 엉덩이를 끌어당김선택한 면에 Assign Automatic from Bones를 실행한 다음 Smooth와 Clean 실행면 마스킹을 켠 Weight Paint Mode의 Weights 메뉴
4개를 초과하는 영향엔진이나 뷰어에서 Blender와 다르게 변형됨Limit Total을 4로 설정한 다음 Normalize All 실행Weight Paint Mode의 Weights 메뉴
정규화되지 않은 웨이트Blender에서는 정상으로 보이지만 내보내면 잘못됨Normalize All 실행(Lock Active 끄기), Auto Normalize 켜기Weights 메뉴, 도구 Options 패널
비대칭 웨이트왼쪽은 깔끔하게 구부러지지만 오른쪽은 그렇지 않음Flip Group Names를 켜고 Mirror Vertex Group 실행Weights > Mirror Vertex Group
사탕 포장지 같은 비틀림손목을 회전하면 아래팔이 한 점으로 찌그러짐Preserve Volume 또는 트위스트 본 사용Armature 모디파이어 또는 리그
의상이 따로 놈재킷이나 치마가 따라오지 않거나 다리가 뚫고 나옴Data Transfer 모디파이어에서 Vertex Groups와 Nearest Face Interpolated 사용의상 오브젝트의 모디파이어

스킨 웨이트란 무엇인가: 한 문단으로 설명 ​

캐릭터의 각 버텍스에는 어떤 본이 얼마나 움직이는지를 나타내는 작은 목록이 있습니다. Blender는 이 목록을 본 이름과 같은 버텍스 그룹으로 저장하며, 그룹마다 각 버텍스의 웨이트가 하나씩 있습니다. Armature 모디파이어는 이를 읽습니다. 즉, "'forearm'이라는 이름의 본은 'forearm' 버텍스 그룹에 속한 버텍스에만 영향을 줍니다. 특정 버텍스에 대한 한 본의 영향력은 관련 그룹에 있는 해당 버텍스의 웨이트로 제어됩니다." Weight Paint Mode는 이 숫자를 색상으로 확인하고 편집하는 방법입니다. 매뉴얼의 색상 코드에 따르면 "값이 낮은 영역(웨이트가 0.0에 가까운 영역)은 파란색(차가움)으로 표시되고, 값이 높은 영역(웨이트가 1.0에 가까운 영역)은 빨간색(뜨거움)으로 표시"되며 그사이는 초록색과 노란색으로 나타납니다.

좋은 관절에는 짧은 그라디언트가 있습니다. 나쁜 관절에는 종이처럼 접히게 만드는 급격한 단차가 있거나, 닿아서는 안 되는 곳까지 그라디언트가 뻗어 있습니다.

팔꿈치를 가로지르는 웨이트Blender의 차가운 색에서 뜨거운 색으로 표시한 아래팔 본의 버텍스 그룹입니다. 파란색은 0.0, 빨간색은 1.0입니다.팔꿈치처럼 구부러짐접히고 가슴까지 당김팔꿈치 관절0.01.0위팔아래팔웨이트가 서너 개의 에지 루프에 걸쳐 점진적으로 변합니다.각 루프가 굽힘을 나눠 받아 주름이 곡선으로 생깁니다.팔 바깥에는 빨간색 영역이 없습니다.팔꿈치 관절0.01.0가슴으로 번짐웨이트가 한 루프 만에 0에서 1로 바뀝니다.한 루프가 굽힘을 모두 받아 납작하게 찌그러집니다.가슴의 빨간 영역이 아래팔을 따라 움직입니다.
같은 아래팔 본에 적용된 두 가지 버텍스 그룹입니다. 왼쪽에서는 블렌딩 영역이 팔꿈치 주변의 여러 에지 루프에 걸쳐 있어 주름이 곡선으로 생깁니다. 오른쪽에서는 블렌딩 영역의 폭이 한 루프뿐이라 종이처럼 접히며, 가슴에 아래팔 웨이트가 엉뚱하게 남아 있습니다. Weight Paint Mode에서 말하는 '번짐'이 바로 이런 모습입니다.

수정하기 전에 현재 상태부터 확인하기 ​

매뉴얼의 작업 흐름에 설명된 대로 뷰를 설정하세요. 아마추어를 선택하고 Ctrl-Tab을 눌러 Pose Mode로 들어간 다음, 메시를 선택하고 Weight Paint Mode로 전환합니다. 상단 바의 Edit > Lock Object Modes가 선택 해제되어 있어야 하며, 그렇지 않으면 두 번째 단계가 실패합니다. 뷰포트 헤더에서 Bone Selection을 켠 다음 본을 Alt-LMB로 클릭하면 메시에서 해당 버텍스 그룹을 볼 수 있습니다. 본은 몸 안에 가려지므로 아마추어의 Viewport Display 설정에서 In Front를 켜세요.

그런 다음 Viewport Overlays를 열고 Zero Weights를 All로 설정하세요. 오버레이 문서에 따르면 "어떤 버텍스 그룹에도 웨이트가 없는 버텍스는 검은색으로 표시됩니다." 캐릭터가 움직일 때 제자리에 남는 버텍스가 바로 이런 버텍스입니다.

CGDive의 웨이트 페인트 작업 흐름 튜토리얼에서는 같은 설정 과정을 보여 줍니다. 아마추어에 포즈를 적용하고, 본을 선택하고, 웨이트를 칠한 다음, 본을 움직여 결과를 확인합니다.

문제 1: 자동 웨이트 실패 ​

Ctrl-P를 누르고 Armature Deform > With Automatic Weights를 선택했을 때 Blender가 다음과 같이 응답합니다.

Bone Heat Weighting: failed to find solution for one or more bones

이 문자열은 Blender 소스의 source/blender/editors/armature/meshlaplacian.cc에 있으며, 그 주변의 함수는 무엇이 잘못되었는지 알려 줍니다. 자동 웨이트는 각 본을 열원으로 취급하고 메시 표면에서 확산 문제를 풉니다. 매뉴얼에서는 이를 "해당 버텍스에서 특정 본까지의 거리를 기반으로 한 영향력('본 히트' 알고리즘)"이라고 설명합니다. 코드에서 중요한 세부 사항은 두 가지입니다. 먼저 메시가 삼각분할됩니다("본 히트에는 삼각분할된 면이 필요함"). 그리고 본은 메시를 대상으로 한 레이 캐스트로 가시성을 검사하여 자신이 볼 수 있는 버텍스만 가열합니다. 본의 선형 해를 구하지 못하면 오류가 발생하며, 메시가 퇴화된 시스템을 전달할 때 이런 실패가 일어납니다. 실제로는 다음 중 하나를 의미합니다:

  1. 중복된 버텍스와 면적이 0인 면. FBX나 OBJ를 임포트하거나 불리언을 적용한 뒤 흔히 발생합니다. 편집 모드에서 모두 선택한 다음 메시 > 정리 > 거리로 병합을 실행하고(매뉴얼: "선택한 버텍스 중 서로의 거리가 일정 값보다 가까운 버텍스를 병합합니다"), 이어서 메시 > 정리 > 퇴화 요소 디졸브를 실행합니다. 이 기능은 "선택한 에지 중 일정 길이보다 짧은 에지를 축소합니다. 이 과정에서 작은 면도 제거됩니다."
  2. 떨어진 지오메트리. 메시 > 정리 > 떨어진 요소 삭제.
  3. 비매니폴드 에지와 내부 면. 선택 > 특성으로 모두 선택 > 비매니폴드는 "어떤 면에도 속하지 않는 에지", "경계와 구멍의 에지", "세 개 이상의 면에 속한 에지"를 선택합니다. 선택 > 특성으로 모두 선택 > 내부 면은 "메시 표면이 아니라 메시 내부에 실수로 생성되었을 수 있는 면"을 찾습니다. 표시되는 부분을 수정하세요. 본이 관통하는 구멍은 문제가 되며, 메시 > 정리 > 구멍 채우기로 닫을 수 있습니다.
  4. 서로 분리된 셸이 많음. 몸, 머리카락, 눈, 치아, 부츠, 벨트가 각각 별도의 아일랜드인 캐릭터가 대표적인 원인이며, Voxel Heat Diffuse Skinning 애드온이 만들어진 이유이기도 합니다. 먼저 몸만 리깅한 뒤 문제 7의 데이터 전송 방식으로 나머지를 연결하거나, Ctrl-J로 조각들을 결합한 다음 거리로 병합하세요.
  5. 스케일. Rigify 문서에는 전제가 명확하게 적혀 있습니다. "Rigify는 1유닛이 1미터에 해당한다고 가정합니다. 따라서 사람의 키는 약 2유닛입니다." 키가 180유닛인 캐릭터는 이 기준에서 크게 벗어납니다. 메시와 아마추어의 스케일을 조정하고 오브젝트 > 적용 > 모든 변환을 실행한 다음 다시 페어런팅하세요.

오류가 계속되면 문제를 나누어 해결하세요. 면 선택 마스킹으로 메시 일부를 선택하고, 한 번에 몇 개의 본에만 웨이트 > 본에서 자동 할당을 실행합니다. 웨이트 페인트 도구 페이지의 모든 도구는 "버텍스 선택 마스킹 및 면 선택 마스킹과 함께" 작동하므로, 계산을 실패하게 만드는 영역을 찾아낼 수 있습니다.

문제 2: 웨이트가 다른 팔다리로 번짐 ​

팔을 들어 올리면 흉곽까지 함께 움직입니다. 허벅지를 굽히면 바지의 가랑이가 안쪽으로 접힙니다. 바인드 포즈에서 손이 엉덩이 가까이에 있었기 때문에 손 본이 엉덩이 일부를 끌어당기기도 합니다. 매뉴얼은 원인을 단도직입적으로 설명합니다. 자동 웨이트는 "자식 오브젝트를 원하는 방식으로 변형하지 못하는 아마추어를 만드는 경우가 많습니다. 어떤 본이 특정 버텍스에 영향을 주어야 하는지 결정할 때 영향 영역이 겹칠 수 있습니다."

가장 깔끔한 해결책은 일부 영역에만 솔버를 다시 실행하는 것입니다. 웨이트 페인트 모드에서 면 선택 마스킹을 켜고, 팔에 속해야 하는 면만 선택한 다음 포즈 모드에서 팔 본을 선택하고 웨이트 > 본에서 자동 할당을 실행합니다. 매뉴얼에 따르면 이 기능은 "페어런트 아마추어 메뉴에서 사용할 수 있는 것과 동일한 '자동 웨이팅' 방식을 선택한 본에서 버텍스 그룹으로 적용"합니다. 하지만 이제 가슴 면은 선택 영역에 포함되지 않으므로 가슴으로 웨이트가 번질 수 없습니다. 팔다리마다 반복하세요.

번진 범위가 작다면 직접 페인트하세요. 브러시의 혼합을 빼기로 설정하고 강도를 낮추거나, 그리기 브러시에서 Ctrl을 누른 채 칠해 웨이트를 빼고, 팔 본이 활성화된 상태에서 가슴에 잘못 들어간 웨이트를 지웁니다. 그런 다음 웨이트 > 부드럽게를 실행합니다. 이 기능은 "인접한 버텍스의 평균을 기준으로 선택한 버텍스의 웨이트를 혼합"합니다. 계수 0.5와 반복 2~3회로 시작하는 것이 좋습니다. 이어서 웨이트 > 정리를 실행해 부드럽게 처리 후 남은 0에 가까운 잔여 웨이트를 제거하세요. 자세한 내용은 아래의 익스포트 체크리스트를 참고하세요.

웨이트 번짐을 미리 방지하는 두 가지 방법이 있습니다. 팔다리가 서로 떨어지도록 캐릭터를 포즈 잡고(손과 엉덩이 사이에 간격이 있는 T 포즈나 A 포즈), 팔이 몸통 옆에 닿아 있는 메시는 리깅하지 마세요. 포즈와 단일 메시 준비 방법은 자동 리깅 가이드에서 자세히 다룹니다.

문제 3: 버텍스당 본이 4개를 초과함 ​

Blender는 하나의 버텍스가 몇 개의 그룹에 속하는지 신경 쓰지 않습니다. 하지만 게임 엔진은 다릅니다. glTF 2.0 사양은 스키닝 데이터를 JOINTS_0 및 WEIGHTS_0 속성에 저장하며, "하나의 버텍스에 영향을 주는 조인트 수는 세트당 4개로 제한됩니다." 4개를 초과하면 두 번째 세트(JOINTS_1, WEIGHTS_1)가 필요하지만, 많은 런타임이 이를 무시합니다. Unity의 Skinned Mesh Renderer는 스킨 웨이트 옵션으로 본 1개, 본 2개, 본 4개 또는 자동을 제공하며, "사용자 지정 개수의 스킨 웨이트를 임포트하고 4개를 초과하는 본의 영향을 허용하려면 이 옵션을 선택하고 스킨 웨이트를 무제한으로 설정해야 합니다"라고 경고합니다. Blender의 glTF 익스포터에도 본 영향 수 설정이 있으며, "값이 4나 8이 아니면 많은 뷰어에서 모델이 잘못 표시될 수 있습니다"라는 설명이 있습니다.

따라서 Blender에서 6개의 영향을 받는 버텍스는 익스포트나 임포트 과정에서 조용히 잘려 나가며, 엔진에서의 캐릭터 변형이 뷰포트와 달라집니다. 자동 웨이트는 어깨, 엉덩이, 손가락 주변에 6~7개의 영향을 흔히 생성합니다.

해결에는 두 번의 클릭이면 충분합니다. 웨이트 > 총합 제한에서 제한을 4로 설정하세요. 매뉴얼에서는 다음과 같이 설명합니다. "버텍스당 웨이트 그룹 수를 지정된 제한까지 줄입니다. 제한에 도달할 때까지 가장 낮은 웨이트부터 제거합니다." 그런 다음 웨이트 > 모두 정규화를 실행하세요. 가장 작은 웨이트를 제거하면 남은 웨이트의 합이 1보다 작아지기 때문입니다.

버텍스 하나, 본 6개, 슬롯 4개자동 웨이트 적용 후의 어깨 버텍스에 총합 제한 4와 모두 정규화를 차례로 적용합니다.자동 웨이트 적용 후총합 제한, 제한 4모두 정규화영향 6개, 합계 1.00영향 4개, 합계 0.95영향 4개, 합계 1.00위팔어깨가슴목척추머리0.420.310.150.070.030.020.420.310.150.07제거됨제거됨위팔어깨가슴목척추머리위팔어깨가슴목0.440.330.160.07JOINTS_0 / WEIGHTS_0에 맞음조인트 4개, 웨이트 4개,합계 1.0, 속성 세트 1개.마지막 단계에서 웨이트에 1/0.95를 곱합니다. Blender는 계산 중 자동으로 정규화하므로 뷰포트에서는 가운데 열도 동일하게 보입니다.
총합 제한은 가장 큰 웨이트 4개를 유지하고 나머지를 제거하므로 버텍스 웨이트의 합이 0.95가 됩니다. 모두 정규화는 남은 웨이트의 합을 다시 1.0으로 맞춥니다. 아마추어 모디파이어가 계산할 때 웨이트를 정규화하므로 Blender 뷰포트에서는 세 열이 모두 동일하게 보이며, 이 때문에 문제는 익스포트 후에야 드러납니다.

문제 4: 웨이트의 합이 1이 아님 ​

이 문제는 눈에 잘 띄지 않습니다. 매뉴얼의 정규화 웨이트 워크플로는 그 이유를 다음과 같이 설명합니다. "Blender의 아마추어 모디파이어가 이를 자동으로 처리하므로, 엄밀히 말해 페인팅 단계에서 웨이트를 정규화할 필요는 없습니다." 웨이트 합이 0.6이나 1.7인 버텍스도 Blender에서는 올바르게 변형됩니다. 하지만 glTF 사양은 웨이트의 "선형 합이 주어진 버텍스에서 합리적으로 가능한 한 1.0에 가까워야 합니다"라고 규정하며, 중요성을 이렇게 설명합니다. "웨이트 합에서 1/255의 오차만 발생해도 조인트 위치에 허용할 수 없을 만큼 큰 차이가 생깁니다." 익스포터가 조용히 해결해 줄 것이라고 기대하지 마세요.

웨이트 > 모두 정규화를 실행하세요. 매뉴얼에서는 다음과 같이 설명합니다. "이 도구는 각 버텍스에서 모든 버텍스 그룹에 걸친 웨이트 합이 1이 되도록 합니다. 잠긴 그룹을 제외한 모든 버텍스 그룹을 정규화합니다." 활성 그룹을 유지하고 나머지만 그에 맞춰 재조정하려는 경우가 아니라면 활성 잠금을 해제하세요. 그런 다음 도구 설정에서 자동 정규화를 켜세요. 이 옵션은 "페인팅하는 동안 변형 버텍스 그룹의 합이 1이 되도록 보장합니다." 이후의 모든 스트로크는 기존 웨이트 위에 값을 더하는 대신 잠기지 않은 그룹 사이에서 웨이트를 재분배합니다.

모두 정규화를 웨이트 > 정규화와 혼동하지 마세요. 후자는 "활성 버텍스 그룹에만 작동"하며, "가장 높은 웨이트 값이 1.0"이 되도록 그룹의 값을 조정합니다.

잠금은 함께 익혀야 할 기능입니다. 버텍스 그룹 패널의 자물쇠나 K 파이 메뉴로 그룹을 잠그면 자동 정규화가 "잠기지 않은 그룹 사이에서만 재분배"합니다. 이미 올바르게 설정한 가슴 웨이트를 건드리지 않고 어깨를 수정할 때 유용합니다.

문제 5: 양쪽 웨이트가 일치하지 않음 ​

왼팔을 한 시간 동안 칠했지만 오른팔은 여전히 처음 자동 웨이트를 적용한 상태입니다. 웨이트 > 버텍스 그룹 미러는 한쪽 웨이트를 반대쪽으로 복사하며, 매뉴얼에 따르면 두 가지 조건이 있습니다. 첫째, "미러링은 오브젝트의 레스트 포즈가 X축을 기준으로 완벽하게 대칭일 때만 작동합니다." 메시가 거의 대칭이지만 완벽하지 않다면 "완전히 대칭이 아닌 메시(근사 미러)를 위한" 토폴로지 미러를 켜세요. 둘째, 별도로 지정하지 않으면 "웨이트가 대응하는 반대쪽 본 웨이트 그룹으로 전송되지 않습니다." 이를 처리하는 옵션이 그룹 이름 뒤집기이며, 대칭 이름을 가진 그룹("(예: 'L', 'R', 'right', 'left' 구성 요소 포함)") 사이에서 할당을 서로 바꿉니다. 미러 웨이트, 그룹 이름 뒤집기, 모든 그룹을 켜면 캐릭터 전체를 한 번에 처리할 수 있습니다. 이는 본 이름이 해당 규칙에 맞게 지정되어 있는지에 달려 있습니다. 이름 지정 규칙 페이지에서는 hand_L과 hand_R, hand.l과 hand.r, handLeft와 handRight, 그리고 좌우 표시가 앞에 붙는 같은 형식을 허용하지만, 구분자 없는 handL은 허용하지 않습니다. Mixamo 스타일의 LeftHand와 RightHand도 작동합니다. Bone_012 같은 이름을 사용하는 아마추어는 먼저 이름을 바꿔야 합니다. 미러링 기능은 어떤 본끼리 짝을 이루는지 스스로 알 수 없기 때문입니다.

문제를 피하려면 처음부터 대칭으로 페인팅하세요. 도구 설정의 대칭 패널에서 정점 그룹 미러링을 선택합니다. 매뉴얼에서는 이를 "대칭 이름을 가진 그룹에 미러링된 페인팅"이라고 설명합니다. 이제 왼팔에 그리는 모든 스트로크가 오른팔의 그룹에도 적용됩니다.

문제 6: 사탕 포장지처럼 찌그러지는 손목 ​

손목을 90도 비틀면 아래팔 중간이 잘록하게 눌립니다. 이는 페인팅 실수가 아닙니다. 선형 블렌드 스키닝의 수학적 특성 때문입니다. 아래팔과 손에 각각 절반씩 웨이트가 지정된 정점은 회전된 변환과 회전되지 않은 변환의 평균을 적용받으며, 이 평균은 축 방향으로 수축합니다. 아마추어 모디파이어의 볼륨 유지 옵션은 쿼터니언 블렌딩을 대신 사용하며, 매뉴얼은 그 장단점을 정확히 설명합니다. "이 옵션을 사용하지 않으면 관절의 회전으로 인해 인접한 지오메트리가 축소되는 경향이 있으며, 기본 포즈에서 180도 회전하면 거의 0까지 줄어듭니다. 이 옵션을 사용하면 지오메트리가 더 이상 축소되지 않지만, 기본 포즈에서 180도에 도달할 때 불연속적인 '틈'이 생깁니다."

Blender 안에서 렌더링할 때는 볼륨 유지를 선택하세요. 게임용이라면 이것이 메시 데이터가 아니라 모디파이어 설정이며, glTF와 FBX에는 포함되지 않는다는 점을 알아야 합니다. 다른 방식을 사용하도록 변경하지 않는 한 엔진은 선형 스키닝을 사용하므로, 임포트하면 눌림 현상이 다시 나타납니다. 익스포트 후에도 유지되는 해결책은 오래전부터 쓰이던 방법입니다. 아래팔 트위스트 본을 하나 또는 두 개 추가해 회전을 더 작은 단계로 나누고 각각 별도의 그라디언트를 적용하거나, 더 많은 에지 루프에 손목 웨이트를 분산해 어떤 정점도 정확히 50/50 지점에 놓이지 않도록 합니다.

스무스 보정 모디파이어는 Blender 안에서 사용할 수 있는 또 다른 도구로, "일반적으로 아마추어 모디파이어 뒤에 사용하면 유용하며, 세심하게 웨이트 페인팅해도 피하기 어려운 관절 주변의 변형을 보정합니다." 여기에도 같은 주의점이 있습니다. Blender 안에서만 변형되며 웨이트로 익스포트되지는 않습니다.

문제 7: 의상 셸이 몸을 따라 움직이지 않음 ​

몸에 리깅했고 움직임도 좋습니다. 하지만 별도 메시인 재킷에는 잘못된 자동 웨이트가 따로 적용되어 허벅지가 바짓단을 뚫고 나오거나, 웨이트가 전혀 없어 공중에 그대로 남아 있습니다. 몸과 의상의 블렌딩이 조금만 달라도 이런 문제가 발생합니다. 올바른 해결책은 의상에 자체 웨이트를 만드는 것이 아니라 몸의 웨이트를 그대로 전달하는 것입니다.

의상 오브젝트에 데이터 전송 모디파이어를 추가하세요. 소스를 몸으로 설정하고 정점 데이터를 선택한 다음 정점 그룹을 고르고, 매핑을 가장 가까운 면 보간으로 설정한 뒤 데이터 레이어 생성을 클릭합니다. 매뉴얼은 이 버튼의 중요성을 경고합니다. "모디파이어는 이를 자동으로 처리하지 않으므로 반드시 이 버튼을 클릭하거나 누락된 레이어를 직접 추가해야 합니다. 그렇지 않으면 전송이 작동하지 않을 수 있습니다." 가장 가까운 면 보간은 "가장 가까운 소스 면에서 가장 가까운 지점을 찾은 다음, 그 지점을 사용해 해당 면 정점의 값을 보간"합니다. 피부에서 몇 밀리미터 떨어진 셸에 정확히 필요한 방식입니다. 레이어 매핑을 이름별로 설정해 몸의 LeftArm이 재킷의 LeftArm으로 전달되도록 하세요. 그런 다음 그 아래에 같은 아마추어를 가리키는 아마추어 모디파이어를 추가합니다. 익스포트하기 전에 데이터 전송 모디파이어를 적용해 웨이트를 실제 정점 그룹으로 변환하세요.

같은 기능을 연산자로도 사용할 수 있습니다. 웨이트 페인트 모드에서 몸을 선택한 다음 의상을 활성 오브젝트로 선택하고 웨이트 > 웨이트 전송을 실행한 뒤, 마지막 작업 조정 패널에서 소스 레이어 선택을 이름별로 설정합니다. 매뉴얼은 오브젝트가 "같은 위치에 있어야 합니다. 나란히 배치되어 있으면 웨이트 전송이 작동하지 않습니다."라고 설명합니다.

셸이 피부에 밀착되지 않고 두꺼운 경우에도, 예를 들어 두꺼운 코트나 갑옷이라도 전송된 웨이트가 자동 웨이트보다 낫습니다. 아래의 몸과 서로 다르게 변형될 수 없기 때문입니다.

게임 익스포트를 위한 웨이트 정리 순서 ​

각 도구가 전체 메시에 적용되도록 면 또는 정점 마스킹을 모두 끈 상태에서 웨이트 페인트 모드로 다음 작업을 수행하세요.

  1. 본이 아닌 그룹을 삭제합니다. 정점 그룹 패널에서 변형 본과 일치하지 않는 그룹을 모두 제거하세요. 아마추어 모디파이어 문서에는 "빈 정점 그룹을 제거하면 종속성을 줄이는 데 도움이 됩니다"라고 설명되어 있습니다.
  2. 번짐과 비대칭을 먼저 수정합니다(문제 2와 5). 아래 도구들은 잘못 들어간 웨이트와 올바른 웨이트를 구분하지 못합니다.
  3. 웨이트 > 총합 제한, 제한 4. glTF, three.js, Babylon.js, 기본 설정의 Unity 및 대부분의 모바일 타깃에 적합합니다. 엔진과 익스포트가 모두 8개로 설정되어 있다면 8을 사용하세요.
  4. 웨이트 > 전체 정규화, 활성 그룹 잠금 끄기. 총합 제한에서 작은 웨이트를 제거한 후 합계를 다시 1.0으로 만듭니다.
  5. 웨이트 > 정리, 제한 0.001, 하나 유지 켜기. 정리는 "웨이트가 제한값보다 낮은 정점 그룹에서 정점 할당을 해제합니다." 0.0004의 웨이트는 눈에 보이는 효과가 없지만 여전히 네 슬롯 중 하나를 차지합니다. 하나 유지를 사용하면 "각 정점에 최소 하나의 웨이트가 유지"됩니다. glTF는 일반적으로 웨이트를 정규화된 바이트로 저장하며 최소 단위가 1/255이므로, 0.004 미만 값은 어차피 반올림되어 사라집니다.
  6. 웨이트 > 전체 정규화를 다시 실행합니다. 정리 후 정점의 합계가 0.999로 남을 수 있습니다.
  7. 웨이트 0인 정점을 확인합니다. 오버레이를 전체로 설정하고 검은색 부분을 찾으세요.
  8. 익스포트합니다. glTF 익스포터의 데이터, 스키닝에서 본 영향 수를 4로 유지하고 모든 본 영향 포함을 끄세요. 데이터, 아마추어에서 기본 포즈 아마추어 사용을 선택해 현재 프레임이 아니라 기본 포즈가 바인드 포즈로 사용되도록 합니다.
7가지 문제, 7가지 도구별도 경로가 명시되지 않았다면 웨이트 페인트 모드입니다. 모든 도구는 면 및 정점 마스킹을 따릅니다.문제도구경로본 히트 오류팔다리 사이 웨이트 번짐4개가 넘는 영향웨이트 합계가 1이 아님비대칭 웨이트사탕 포장지형 손목의상 셸하나 이상의 본에 대한 해를 찾지 못함팔이 갈비뼈를 들고 손이 엉덩이를 끌어당김엔진에서 Blender와 다르게 변형됨Blender에서는 괜찮지만 익스포트 후 잘못됨왼쪽은 맞지만 오른쪽은 틀림손목을 비틀면 아래팔이 눌림재킷은 남겨지고 다리는 의상을 뚫음거리로 병합, 퇴화 요소본에서 자동 할당총합 제한 4, 전체 정규화전체 정규화, 자동 정규화정점 그룹 미러링볼륨 유지, 트위스트 본데이터 전송 모디파이어디졸브, 느슨한 요소 삭제, 비매니폴드면 선택에 적용한 뒤 스무스, 정리가장 낮은 웨이트부터 제거활성 그룹 잠금을 끈 뒤 정규화하며 페인팅웨이트 미러링, 그룹 이름 뒤집기Blender에는 모디파이어, 엔진에는 본정점 그룹, 가장 가까운 면 보간편집 모드, 메시 > 정리선택 > 특성으로 모두 선택웨이트 > 본에서 자동 할당헤더: 면 선택 마스킹 켜기웨이트 > 총합 제한웨이트 > 전체 정규화웨이트 > 전체 정규화도구 설정 > 옵션 > 자동 정규화웨이트 > 정점 그룹 미러링도구 > 대칭 > 정점 그룹 미러링모디파이어 > 아마추어 > 볼륨 유지또는 아마추어에 트위스트 본 추가모디파이어 > 추가 > 데이터 전송또는 웨이트 > 웨이트 전송
7가지 문제와 각각에 사용할 도구, 그리고 클릭할 위치입니다. 첫 번째와 일곱 번째 행은 웨이트 페인트 모드 밖에서 작업합니다. 메시 정리는 편집 모드에서 수행하며 데이터 전송 모디파이어는 의상 오브젝트에 추가합니다.

이 단계를 건너뛰는 방법 ​

사람들은 이 작업을 피하기 위해 돈을 냅니다. 두 제품이 서로 다른 방식으로 이를 보여줍니다.

Mesh Online의 Voxel Heat Diffuse Skinning은 자동 웨이트가 제대로 작동하지 않을 때 Blender 사용자들이 구입하는 애드온입니다. Superhive 제품 페이지에는 인디 라이선스가 $30로 표시되어 있고, 12,500건 이상 판매되었으며, 확장 기능으로 Blender 3.6부터 5.1까지 지원합니다. 제품 페이지는 바로 이 문제를 앞세웁니다. "Blender에 '본 히트 웨이팅: 하나 이상의 본에 대한 해를 찾지 못했습니다'라는 메시지가 표시됩니다." 작동 방식은 이름 그대로입니다. Blender의 기본 솔버는 표면을 따라 열을 확산하므로 깨끗한 표면이 필요합니다. 이 애드온은 캐릭터를 솔리드 복셀로 변환하고 "솔리드 조각상 안에서 열이 확산"되게 하므로, 겹치는 셸 20개로 만들어진 캐릭터도 하나의 몸처럼 스키닝됩니다. 제작자는 장단점도 솔직하게 밝힙니다. 기본 표면 방식은 "손가락과 발가락 같은 세부 영역에서 훨씬 나은 결과를 낼 수 있기" 때문에 이 애드온은 두 방식을 결합합니다. 최소 8GB의 메모리가 필요합니다. 메시가 엉망이지만 Blender 자체 스켈레톤을 사용하고 싶다면 구입할 만한 제품입니다.

Cinevva Rig 애드온은 다른 방법을 택합니다. 웨이트를 수정하지도, 본을 직접 배치하지도 않는 것입니다. 메시를 선택하고 Rig를 누르면 Mixamo 형식으로 이름이 지정된 휴머노이드 스켈레톤을 배치하고 한 번에 스키닝합니다. 웨이트는 이미 게임 엔진에 맞게 영향 수가 제한되고 정규화 및 정리되어 있습니다. 약 2.4GB의 엔진을 한 번 다운로드한 뒤 자체 컴퓨터에서 오프라인으로 실행되며, 리그당 추가 요금 없이 출시가 $29에 한 번만 구매하면 됩니다. Windows, macOS, Linux에서 Blender 4.2 이상을 지원합니다. 또한 결과물에 Blender 내부에서 리타기팅할 수 있는 CC0 애니메이션 클립 260개와, 본 영향 수, 기본 포즈, 축, 스케일을 자동으로 설정하는 무료 Web, Unity, Unreal, Godot 익스포트 프리셋도 포함됩니다. 커스텀 스켈레톤이나 꼬리, 얼굴 리그의 웨이트 페인팅을 대체하지는 않습니다. 금요일까지 게임에 넣어야 하는 휴머노이드라면 그 작업을 대신해 줍니다. 자세한 내용은 Blender 애드온 페이지에서 확인할 수 있습니다.

Blender를 열지 않고 캐릭터 하나만 처리하려면 웹 자동 리거에 최대 50MB의 GLB, FBX 또는 OBJ를 업로드하면 리깅된 GLB를 받을 수 있습니다. 첫 번째 캐릭터는 무료이며, 이 가이드 중간 3분의 1에서 설명한 4개 영향과 합계 1의 웨이트 구조가 이미 적용되어 있습니다.

Rigify는 Blender에 기본 포함된 무료 옵션이며, 문서는 기대치를 솔직하게 설명합니다. "본을 올바르게 배치했다면(그리고 작업하기에 충분한 토폴로지가 있다면!) 자동 웨이트를 사용한 아마추어 변형은 대개 별도 조정 없이도 매우 잘 작동합니다." 괄호 안의 내용이 이 글 전체의 핵심입니다.

자주 묻는 질문 ​

Blender 웨이트 페인트가 작동하지 않는 이유는 무엇인가요? ​

보통 다음 세 가지 중 하나가 원인입니다. 잘못된 버텍스 그룹에 페인팅하고 있을 수 있으므로, Bone Selection을 켠 상태에서 뼈를 Alt-LMB로 클릭하고 헤더의 활성 그룹을 확인하세요. 아마추어가 Pose Mode가 아니거나 Edit > Lock Object Modes가 선택되어 있을 수도 있습니다. 또는 면 선택 마스킹이 켜져 있는데 선택 영역 밖에 페인팅하고 있을 수 있습니다. Zero Weights 오버레이를 사용하면 가중치가 하나라도 있는 버텍스를 확인할 수 있습니다.

"Bone Heat Weighting: failed to find solution for one or more bones" 오류는 어떻게 해결하나요? ​

Edit Mode에서 메시를 정리하세요. Mesh > Clean Up > Merge by Distance, Degenerate Dissolve, Delete Loose를 차례로 실행한 다음 Select > Select All by Trait > Non Manifold를 실행하고 강조 표시되는 부분을 수정합니다. 캐릭터의 키를 약 2미터로 맞추고 트랜스폼을 적용한 뒤, 의상을 부착하기 전에 하나로 연결된 몸체를 리깅하세요. 그래도 실패한다면 Voxel Heat Diffuse Skinning 애드온을 사용해 보세요. 이 애드온은 본 히트 솔버 없이도 밀폐되지 않은 메시를 스키닝할 수 있습니다.

Blender에서 웨이트 페인트를 미러링하려면 어떻게 하나요? ​

Weights > Mirror Vertex Group에서 Mirror Weights, Flip Group Names, All Groups를 선택하고, 메시가 완벽하게 대칭이 아니라면 Topology Mirror도 선택하세요. X축을 기준으로 대칭인 레스트 포즈와 hand.L, hand.R처럼 쌍을 이루는 이름의 뼈가 필요합니다. 양쪽을 동시에 페인팅하려면 도구 설정의 Symmetry 패널에서 Mirror Vertex Groups를 선택하세요.

Blender에서 웨이트를 정규화하려면 어떻게 하나요? ​

Weights > Normalize All을 실행하면 잠기지 않은 모든 그룹에서 각 버텍스의 웨이트 합계가 1이 됩니다. 활성 그룹을 유지하려는 경우가 아니라면 Lock Active를 끄세요. 그런 다음 도구의 Options에서 Auto Normalize를 활성화하면 새로 칠하는 스트로크의 합계가 계속 1로 유지됩니다. 일반 Weights > Normalize는 다릅니다. 활성 그룹의 최댓값이 1.0이 되도록 해당 그룹만 조정합니다.

Blender에서 웨이트 페인트를 부드럽게 하려면 어떻게 하나요? ​

버텍스 선택 마스킹을 활성화하고 관절 주변의 버텍스를 선택한 다음 Weights > Smooth를 실행하세요. Factor는 각 웨이트가 인접 버텍스의 평균값에 얼마나 가까워질지를 제어하며 0.5가 좋은 시작점입니다. Iterations는 이 작업을 반복하고, Expand/Contract는 영향을 받는 영역을 확장하거나 축소합니다. 이어서 작은 Limit 값으로 Weights > Clean을 실행한 다음 Normalize All을 실행하세요.

Blender에서 뼈를 움직일 때 메시가 잘못 변형되는 이유는 무엇인가요? ​

잘못된 버텍스가 해당 뼈의 그룹에 포함되어 웨이트가 번졌을 수 있습니다. 이 경우 면을 선택한 상태에서 Weights > Assign Automatic from Bones를 실행하거나 웨이트를 지워 수정할 수 있습니다. 또는 관절을 가로지르는 전환이 너무 급격할 수 있으며, 이때는 Weights > Smooth를 사용합니다. 처음부터 뼈가 메시 내부의 잘못된 위치에 있어 자동 웨이트가 부정확하게 생성되었을 수도 있습니다. Zero Weights도 확인하세요. 어떤 그룹에도 속하지 않은 버텍스는 주변이 모두 움직여도 제자리에 남습니다.

히트 웨이팅과 복셀 히트 디퓨즈 스키닝의 차이점은 무엇인가요? ​

Blender의 본 히트 웨이팅은 각 뼈의 영향력을 메시 표면 전체로 확산하므로 깨끗하고 연결된 표면이 필요합니다. 복셀 히트 디퓨즈 스키닝은 캐릭터의 부피를 복셀로 채우고 솔리드 내부로 영향력을 확산하므로, 메시가 밀폐되어 있는지 또는 서로 분리된 셸로 구성되어 있는지에 영향을 받지 않습니다. Voxel Heat Diffuse Skinning 애드온은 Superhive에서 약 $30에 판매되며, 이 방식을 Blender에서 사용할 수 있게 해 줍니다. 또한 손가락 같은 세밀한 부분을 위해 두 방식을 결합합니다.

관련 자료 ​