시뮬레이션 세팅을 환경설정하려면 먼저 프록시 디포머를 설정해야 합니다. 그러면 콜리전을 시뮬레이션하고, 시뮬레이션 퀄리티를 제어하는 솔버를 구성할 수 있습니다.
프록시 디포머 설정하기
이 섹션에서는 프록시 디포머(Proxy Deformer)를 구성합니다. 이 디포머는 렌더 메시를 디폼하기 위해 시뮬레이션 메시를 사용합니다. 또한 재킷과 홀스터를 위한 두 개의 선택 항목을 구성하여 시뮬레이션 중에 서로 간섭하지 않도록 합니다.
Collection 핀에서 드래그하여 WeightMapToSelection을 검색한 다음 선택합니다. 그런 다음 MaxDistance Weight Map의 Name 핀을 WeightMapToSelection 노드의 Weight Map Name 핀에 연결합니다. WeightmapToSelection 노드는 페인트 웨이트 맵을 프록시 디포머가 처리할 수 있는 버텍스 모음으로 변환합니다.
Collection 핀에서 드래그하여 Cloth 카테고리에서 Selection을 검색한 다음 선택합니다. 노드를 Selection_Holster로 명명합니다. 노드 디테일(Node Details) 패널로 이동하여 이름(Name)을 HolsterFaces로, 그룹(Group)을 SimFaces로 설정합니다.
그러면 클로스 메시 선택(Cloth Mesh Selection) 툴이 활성화됩니다.
클로스 메시 선택 툴 인터페이스에는 다음 섹션이 있습니다.
섹션 설명 1. 작업(Operations):
컬렉션에서 선택 항목을 임포트하거나, 기본 선택 항목과 보조 선택 항목 간에 토글합니다.
2. 선택 툴(Selection tools):
선택 플러드(Flood Selection): 현재 선택 영역의 전체 메시를 선택합니다. 선택 확대(Grow Selection): 현재 메시 내에서 선택 영역을 확대합니다. 선택 축소(Shrink Selection): 현재 메시 내에서 선택 영역을 축소합니다.
3. 시각화(Visualization):
클로스 컬렉션 버텍스와 에지를 보여줍니다.
4. 선택 액션(Selection Actions):
선택 반전(Invert Selection): 현재 선택을 반전시킵니다. 모두 선택(Select All): 컬렉션 내 모든 메시를 선택합니다.
5. 선택 필터(Selection Filter):
메시 버텍스와 폴리곤 선택 간에 토글합니다.
6. 추가 선택 옵션(Additional Selection Options), 직교 뷰포트 비헤이비어(Ortho Viewport Behavior), 고급(Advanced):
오클루전 무시(Ignore Occlusion), 후면 히트(Hit Back Faces)와 같은 추가 선택 옵션이 포함되어 있습니다.
7. 수락(Accept) 또는 취소(Cancel)
선택 항목을 수락 또는 취소합니다.
클로스 컬렉션에서 홀스터를 클릭하고 드래그하여 선택합니다. 수락을 클릭합니다.
Collection 핀에서 드래그하여 Cloth 카테고리에서 Selection을 검색한 다음 선택합니다. 노드를 Selection_Jacket으로 명명합니다. 노드 디테일 패널로 이동하여 이름을 JacketFaces로, 그룹을 SimFaces로 설정합니다.
클로스 컬렉션에서 분리할 재킷의 페이스를 선택합니다. 수락을 클릭합니다.
Collection 핀에서 드래그하여 ProxyDeformer를 검색한 다음 선택합니다. 이 노드가 시뮬레이션 중에 디폼할 방식을 클로스 컬렉션에 알려줍니다.
WeightMapSelection 노드의 Selection Name 핀을 Sim Vertex Selection 핀에 연결합니다.
Selection_Holster의 Name 핀을 Selection Filter Set 0 핀에 연결합니다.
ProxyDeformer 노드를 우클릭하고 AddOptionPin을 선택합니다. Selection_Jacket의 Name 핀을 Selection Filter Set 1 핀에 연결합니다.
시뮬레이션 셀프 콜리전 설정하기
이 섹션에서는 시뮬레이션을 위한 셀프 콜리전을 구성합니다. 벨트 루프, 벨트, 재킷의 콜리전 레이어를 생성하여 시뮬레이션 중에 서로 간섭하지 않도록 합니다. 또한 두께 및 마찰을 위한 웨이트 맵을 생성하고, 키네마틱 콜리전도 구성해 보겠습니다.
새로운 Selection 노드를 생성하고 Selection_BeltLoops로 명명합니다.
노드 디테일 패널로 이동하여 이름을 BeltLoops로, 그룹을 SimFaces로 설정합니다.
클로스 컬렉션에서 벨트 루프를 선택합니다.
Collection 핀에서 드래그하여 SelectionToIntMap을 검색한 다음 선택합니다. 노드를 SelectionToIntMap_BeltLoops로 명명하고 Name 핀을 Selection Name 핀에 연결합니다. SelectionToIntMap 노드가 선택 항목을 실행할 시뮬레이션 레이어를 설정합니다. 시뮬레이션은 레이어를 순서대로 실행하며, 숫자가 가장 낮은 레이어(레이어 0)가 가장 먼저 실행됩니다.
새로운 Selection 노드를 생성하고 Selection_Belt로 명명합니다.
노드 디테일 패널로 이동하여 이름을 Belt로, 그룹을 SimFaces로 설정합니다.
클로스 컬렉션에서 벨트 페이스를 선택합니다.
Collection 핀에서 드래그하여 SelectionToIntMap을 검색한 다음 선택합니다. 노드를 SelectionToIntMap_Belt로 명명하고 Name 핀을 Selection Name 핀에 연결합니다.
새로운 Selection 노드를 생성하고 Selection_JacketCol로 명명합니다.
노드 디테일 패널로 이동하여 이름을 JacketUnderBelt로, 그룹을 SimFaces로 설정합니다.
클로스 컬렉션에서 재킷 페이스를 선택합니다.
Collection 핀에서 드래그하여 SelectionToIntMap을 검색한 다음 선택합니다. 노드를 SelectionToIntMap_Jacket으로 명명하고 Name 핀을 Selection Name 핀에 연결합니다.
SelectionToIntMap_BeltLoops의 Int Map Name 핀을 SelectionToIntMap_Belt의 Int Map Name 핀에 연결합니다. SelectionToIntMap_Belt의 Int Map Name 핀을 SelectionToIntMap_Jacket의 Int Map Name 핀에 연결합니다.
WeightMap 노드를 생성하고 AddWeightMap_Thickness로 명명합니다. 이름을 Thickness로 설정합니다. 시뮬레이션 중에 클로스의 두께를 보여줄 클로스 컬렉션을 페인팅합니다.
WeightMap 노드를 생성하고 AddWeightMap_Friction으로 명명합니다. 이름을 Friction으로 설정합니다. 시뮬레이션 중에 마찰을 보여줄 클로스 컬렉션을 페인팅합니다.
이제 셀프 콜리전 노드에서 사용하는 키네마틱 콜리전을 위한 선택 항목을 생성합니다.
StaticMeshImport 노드를 추가하고 StaticMeshImport_Collider로 명명합니다. 스태틱 메시(Static Mesh) 드롭다운을 클릭하고 적절한 스태틱 메시를 선택합니다.
Collection 핀에서 드래그하여 TransferSkinWeights를 검색한 다음 선택합니다. 노드를 TransferSkinWeights_Collider로 명명합니다.
Collection 핀에서 드래그하여 Selection을 검색한 다음 선택합니다.
Selection 노드의 Collection 핀에서 드래그하여 MergeClothCollections를 검색한 다음 선택합니다.
노드를 MergeClothCollections_Kinematic으로 명명합니다.
MergeClothCollections_Kinematic 노드를 우클릭하고 AddOptionPin을 선택합니다
AddWeightMap_Friction 노드의 Collection 핀을 MergeClothCollections_Kinematic 노드의 Collection 1 핀에 연결합니다.
MergeClothCollections_Kinematic 노드의 Collection 핀에서 드래그하여 SimulationSelfCollisionConfig를 검색한 다음 선택합니다.
SelectionToIntMap_Jacket 노드의 Int Map Name 핀을 SimulationSelfCollisionConfig의 Self Collision Layers 핀에 연결합니다.
Selection 노드의 Name 핀을 SimulationSelfCollisionConfig의 Self Collision Enabled Kinematic Faces 핀에 연결합니다.
AddWeightMap_Friction 노드의 Name 핀을 SimulationSelfCollisionConfig의 Self Collision Kinematic Collider Friction Weighted 핀에 연결합니다.
AddWeightMap_Thickness 노드의 Name 핀을 SimulationSelfCollisionConfig의 Self Collision Thickness Weighted 핀에 연결합니다.
시뮬레이션 솔버 및 클로스 에셋 터미널 설정하기
이 섹션에서는 시뮬레이션 퀄리티를 제어하는 시뮬레이션 솔버(Simulation Solver)를 구성합니다. 또한 클로스 에셋 터미널(Cloth Asset Terminal)을 생성하여 에셋을 완성해 보겠습니다. 이 노드는 전체 데이터플로 그래프를 평가하고 콘텐츠 브라우저에서 그 결과를 클로스 에셋에 설정합니다.
SimulationSelfCollisionConfig 노드의 Collection 핀에서 드래그하여 SimulationSolverConfig를 검색한 다음 선택합니다.
반복작업 수(Num Iterations)를 2로 설정합니다.
최대 반복작업 수(Max Num Iterations)를 2로 설정합니다.
서브스텝 수(Num Substeps)를 13으로 설정합니다.
셀프 콜리전 서브스텝 수(Num Self Collision Substeps)를 활성화하고 2로 설정합니다.
SimulationSolverConfig 노드의 Collection 핀에서 드래그하여 ClothAssetTerminal을 검색한 다음 선택합니다. 이제 뷰포트에 클로스 컬렉션이 표시됩니다.
프리뷰 씬 디테일(Preview Scene Details) 패널을 클릭하고 스켈레탈 메시 에셋(Skeletal Mesh Asset) 및 애니메이션 에셋(Animation Asset)을 설정하여 시뮬레이션을 미리 봅니다. 이 예시에서는 앞으로 걸어가는 애니메이션을 미리보기로 선택했습니다.