이 문서에서는 파라메트릭 의상 에셋의 퀄리티를 향상할 수 있는 추가 구성을 살펴봅니다.
바디에서 스킨 웨이트를 전송할 때의 제한으로 인해, 겨드랑이나 위 허벅지 영역에서 티어링 같은 아티팩트가 발생할 수 있습니다. 이러한 현상이 애니메이션 시퀀스 동안 발생한다면 스키닝 오퍼레이션을 제어하는 맵을 미리 페인팅해 두어야 합니다. 의상에 맵을 페인팅하면 완화(Relax), 정리(Prune), 해머(Hammer), 범위제한(Clamp) 및 정규화(Normalize) 오퍼레이션을 제어할 수 있습니다.
웨이트 맵 페인팅하기
클로스 에셋을 우클릭하고 데이터플로 에디터에서 열기(Open in Dataflow Editor)를 선택하여 엽니다. 더블클릭은 하지 마세요.
의상 에셋 빌드하기에서 선택한 것과 동일한 경로를 사용합니다.
경로 A: 모델이 FBX 포맷이고 렌더 메시만 포함하는 경우에 해당합니다. 기존 메타휴먼 클로딩을 파라메트릭으로 변환하려는 경우에는 이 경로를 선택합니다.
경로 B: 모델이 Marvelous Designer 또는 Clo에서 USD 타입으로 익스포트되었고 시뮬레이션 메시와 렌더 메시를 모두 포함하는 경우에 해당합니다.
경로 C: 모델이 렌더 메시이고 시뮬레이션 메시를 수동으로 생성한 경우에 해당합니다.
경로 A
StaticMeshImport 노드를 클릭한 다음 화면 상단에 있는 웨이트 맵 페인트(Paint Weight Map) 버튼을 클릭합니다.
그러면 메시에 맵이 생성됩니다. 하지만 컨스트럭션 뷰포트에서는 아무것도 보이지 않습니다. 맵을 확인하고 페인팅하려면 다음 단계를 따릅니다.
렌더 메시에서만 페인팅하려면 노드 디테일(Node Details) 패널에서 버텍스 그룹(Vertex Group)을 RenderVertices로 변경합니다.
웨이트 맵 페인트를 더블클릭하면 컨스트럭션 뷰포트에 표시됩니다. 그렇지 않으면 렌더(Render)가 선택되어 있는지 확인합니다.
맵에 식별할 수 있는 이름을 지정합니다. 이 예시에서 맵은 '완화'를 제어하는
LOD_0메시를 위한 것으로, 이름을LOD0_relaxMap으로 명명했습니다.선택한 오퍼레이션에 영향을 받게 할 영역은 흰색으로 페인팅하고, 나머지 영역은 검은색으로 남겨둡니다. 완료되었으면 수락(Accept)을 클릭합니다.
이제 스태틱 메시에 맵을 어태치할 준비가 되었습니다. 데이터플로 그래프에서 우클릭하여 SetSkinningSelection을 입력하고, 팝업이 나타나면 선택합니다.
PaintWeightMap의 컬렉션(Collection)(출력) 핀을 SetSkinningSelection 노드의 컬렉션(입력) 핀에 연결합니다.
PaintWeightMap의 어트리뷰트 키(Attribute Key) 핀을 SetSkinningSelection 노드의 선택 맵(Selection Map) 핀에 연결합니다.
SetSkinningSelection 노드의 컬렉션(출력) 핀을 TransferSkinWeights 노드의 컬렉션(입력) 핀에 연결합니다.
SetSkinningSelection 노드를 클릭하고 노드 디테일(Node Details) 패널에서 버텍스 그룹을 RenderVertices로 변경합니다.
사용하려는 방식에 맞게 보정 타입(Correction Type)을 설정합니다.
선택 맵 필드는 비워둬도 됩니다. 이미 어트리뷰트 키와 선택 맵 핀을 통해 Paint Weight Map 노드와 연결되어 있기 때문입니다.
동일한 맵을 사용하려면, 해당 맵을 여러 개의 SetSkinningSelection 노드에 연결할 수 있습니다.
이제 맵을 만들어야 하는 모든 에셋에 대해 동일한 작업을 반복합니다. LOD를 수동으로 생성한 경우에는 해당 LOD에 대해서도 맵을 직접 페인팅해야 합니다.
이 작업을 완료한 후에는 클로스 에셋을 재평가하고 저장해야 합니다. 그런 다음 이미 의상 에셋을 만들었으면 해당 에셋을 열고 다시 평가하고 저장합니다.
다음은 수동으로 생성한 LOD를 사용하는 에셋의 예시입니다.
경로 B
USDImport 노드를 클릭한 다음 화면 상단에 있는 웨이트 맵 페인트 버튼을 클릭합니다.
시뮬레이션 메시에서 페인팅하려면 노드 디테일(Node Details) 패널에서 버텍스 그룹을 SimVertices3d로 변경합니다.
웨이트 맵 페인트를 더블클릭하면 컨스트럭션 뷰포트에 표시됩니다. 그렇지 않으면 3dSim이 선택되어 있는지 확인합니다.
식별할 수 있는 이름을 지정합니다. 이 예시에서 맵은 '완화'를 제어하는
LOD_0메시를 위한 것으로, 이름을LOD0_relaxMap으로 명명했습니다.선택한 오퍼레이션에 영향을 받게 할 영역은 흰색으로 페인팅하고, 나머지 영역은 검은색으로 남겨둡니다. 완료되었으면 수락(Accept)을 클릭합니다.
이제 스태틱 메시에 맵을 어태치할 준비가 되었습니다. 데이터플로 그래프에서 우클릭하여
SetSkinningSelection을 입력하고, 팝업이 나타나면 선택합니다.PaintWeightMap 노드의 컬렉션(출력) 핀을 SetSkinningSelection 노드의 컬렉션(입력) 핀에 연결합니다.
PaintWeightMap의 어트리뷰트 키 핀을 SetSkinningSelection 노드의 선택 맵 핀에 연결합니다.
SetSkinningSelection 노드의 컬렉션(출력) 핀을 TransferSkinWeights 노드의 컬렉션(입력) 핀에 연결합니다.
SetSkinningSelection 노드를 클릭한 다음 노드 디테일 패널에서 버텍스 그룹을 SimVertices3D로 변경합니다.
사용하려는 방식에 맞게 보정 타입을 설정합니다.
선택 맵 필드는 비워둬도 됩니다. 이미 어트리뷰트 키 또는 선택 맵 핀을 통해 Paint Weight Map 노드와 연결되어 있기 때문입니다.
동일한 맵을 사용하려면 해당 맵을 여러 개의 SetSkinningSelection 노드에 연결할 수 있습니다.
이제 맵을 만들어야 하는 모든 에셋에 대해 동일한 작업을 반복합니다. LOD를 수동으로 생성한 경우에는 해당 LOD에 대해서도 맵을 직접 페인팅해야 합니다.
이 작업을 완료한 후에는 클로스 에셋을 재평가한 후 저장해야 합니다. 그런 다음 이미 의상 에셋을 만들었으면 해당 에셋을 열고 다시 평가하고 저장합니다.
경로 C
경로 B를 따르되, 맵은 USDImport 노드가 아닌 MergeClothCollections 노드에서 생성합니다.
추가 선택적 구성
기타 선택 가능한 구성은 다음과 같습니다.
UV 크기 조절(Resize UVs): 반복되는 텍스처가 있는 경우, UV 크기 조절을 구성할 수 있습니다.
커스텀 영역 크기 조절(Custom Region Resizing): 의상의 특정 부분이 바디와 함께 워프되지 않고 균등하게 스케일 조절되도록 제어할 수 있는 크기 조절 기능입니다. 이는 단단한 표면의 오브젝트나 바디와 함께 워프되지 않도록 해야 하는 의상 부분에 유용합니다.