자동 스키닝 전송 기능을 사용하면 레이어드 의상 및 얼굴 액세서리가 연결된 캐릭터 모델과 함께 정확하게 변형될 수 있습니다. 액세서리 자체를 스킨해야 할 필요 없이 말이죠. 복잡한 3D 모델링 소프트웨어에서 모델을 수동으로 리깅 및 스키닝하는 대신, 이 기능을 사용하여 액세서리에 스키닝 데이터를 전송하거나 생성할 수 있습니다. 자동 스키닝 전송을 사용할 때, Roblox 엔진은 런타임 중에 스키닝을 생성하고 적용합니다.
자동 스키닝 전송을 사용하기 위해 액세서리 기하학의 스키닝이 필요하지 않습니다. 사실, 자동 스키닝 된 액세서리는 다른 수의 조인트, 본을 가진 캐릭터나 다른 종류의 스키닝을 사용하는 캐릭터에 연결된 경우에도 잘 작동하며, 액세서리는 캐릭터 애니메이션에 따라 정확하게 움직입니다.

스키닝은 캐릭터 제작에서 여전히 중요한 개념입니다. 만약 사용자 지정 캐릭터를 생성하고 있다면, 모델에 스키닝 데이터를 적용하여 보다 자연스러운 포즈와 애니메이션을 가진 캐릭터를 만들고 싶을 수도 있습니다. 메쉬를 스키닝하는 방법에 대한 정보는 인간형 모델 스키닝을 참조하십시오.
자동 스키닝 전송 활성화
자동 스키닝 전송 프로세스를 활성화하려면 다음을 수행해야 합니다:
- StarterPlayer.LoadCharacterLayeredClothing가 게임에서 활성화되어 있는지 확인하십시오.
- 자동으로 스키닝할 레이어드 Accessory의 WrapLayer 인스턴스 내에서 AutoSkin 속성을 활성화한 다음, 다음 값 중 하나로 설정하십시오:
- Disabled: 자동 스키닝 전송 프로세스를 비활성화합니다. 이 값이 기본값입니다.
- EnabledOverride: 자동 스키닝 전송 프로세스를 활성화하고 런타임 중에 액세서리에 존재하는 스키닝 정보를 덮어쓸 수 있게 합니다.
- EnabledPreserve: 자동 스키닝 전송 프로세스를 활성화하지만 런타임 중에 액세서리에 존재하는 스키닝 정보를 덮어쓸 수 없게 합니다. 유지할 스키닝이 없는 경우, 자동 스키닝 전송 프로세스는 자동으로 새 스키닝 데이터를 생성합니다.
액세서리에 스키닝 데이터가 없거나 액세서리에 대한 기존 스키닝 데이터를 덮어쓰기 선택 시, Roblox 엔진은 캐릭터의 기하학과 케이지에서 스키닝 데이터를 계산합니다. 그런 후, 액세서리와 관련된 새로운 스키닝 데이터와 리그가 액세서리의 변형 및 움직임을 원본 기하학과 동기화시킵니다.
모범 사례
자동 스키닝 전송은 종종 수동 스키닝보다 더 잘 작동하지만, 액세서리 스키닝과 관련된 예상치 못한 행동을 줄이기 위한 몇 가지 모범 사례가 있습니다. 모든 모델링 프로세스와 마찬가지로 다양한 아바타 유형에서 레이어드 의상 및 얼굴 액세서리를 지속적으로 테스트하여 원하는 결과를 얻는 것이 중요합니다.
특별 스키닝 전송 조인트
자동 스키닝 전송은 특정 세밀한 액세서리 유형, 예를 들어 속눈썹이나 눈썹에서는 잘 작동하지 않을 수 있습니다. 보다 제어된 스키닝 전송 결과를 얻으려면 액세서리 기하학을 두 개의 특별히 명명된 조인트 중 하나인 RBX_Leader와 RBX_Follower에 스키닝할 수 있는 옵션이 있습니다.
RBX_Leader에 스키닝된 모든 정점은 현재 존재하는 전송 프로세스를 거칩니다. 그러나 RBX_Follower에 스키닝된 정점은 실제로 가장 가까운 리더 정점에 기반하여 전송됩니다. 이것은 속눈썹이 일반적으로 속눈썹 가닥의 밑부분을 따라 이동하는 것이 아니라 속눈썹 가닥의 끝이 보통 눈썹 영역의 어디로 전송되는 방식의 결과를 개선합니다.
속눈썹의 경우, RBX_Leader에 좋은 후보는 캐릭터의 눈꺼풀 바로 위에 위치하도록 설계된 정점입니다. 나머지 정점은 RBX_Follower에 스키닝할 수 있습니다.


눈썹의 경우, 좋은 후보는 눈썹 선을 가로지르는 가장자리를 따라 있는 정점들입니다.


Blender에서 오브젝트 데이터 속성 > 정점 그룹을 사용하여 정점 그룹 할당을 관리하고 볼 수 있습니다.

이 방법을 지원하기 위해 Studio에서 추가 작업이 필요하지 않습니다. 액세서리가 Class.WrapLayer.AutoSkin.EnabledOverride로 설정되어 있고 이러한 조인트가 존재하며 정점이 할당되어 있으면, 이 스키닝 전송 변형이 적용됩니다.
이 조인트를 사용하여 UGC 항목으로 액세서리를 업로드하려면 알고 있어야 할 몇 가지 규칙이 있습니다:
- 정점은 이러한 조인트에 부분적으로 가중치를 가질 수 없습니다. 사용하려면 정점을 조인트에 1.0 가중치로 스키닝해야 합니다.
- 이러한 조인트가 메쉬에 존재하면 액세서리는 WrapLayerAutoSkin.EnabledOverride로 설정되어야 합니다.
- 이러한 조인트가 포함된 본체 부위 메쉬는 검증에서 거부됩니다.
- 눈썹 및 속눈썹 액세서리 유형은 특별한 스키닝 조인트를 가져야 하며 WrapLayerAutoSkin.EnabledOverride로 설정되어야 합니다.
캐릭터 케이지 수정
자동 스키닝 전송을 사용하여 액세서리가 예상되는 캐릭터 표면에 정확하게 변형되도록 캐릭터 케이지를 수정할 수 있습니다. 예를 들어, 자동 스키닝은 레이어드 의상이 잘못된 몸 부분을 기준으로 변형될 수 있습니다. 이는 전송 프로세스가 액세서리와 내부 케이지 간의 가장 가까운 거리 기반으로 작동하기 때문입니다. 다음 예에서는 수염 액세서리가 블록형 전체 신체 케이지를 사용하여 모델링되었습니다. 이로 인해 수염 일부가 턱 대신 캐릭터 케이지의 상부 가슴에 더 가깝게 위치하게 되어 잘못된 변형이 발생했습니다.

레이어드 액세서리가 캐릭터 기하학의 원하지 않는 영역에서 스키닝 데이터를 사용하지 않도록 하려면 자산을 다른 캐릭터 마네킹 케이지에서 모델링할 수 있습니다. 예를 들어, 블록형 캐릭터는 torso에 스키닝된 수염과 어려움을 겪겠지만, 인간형과 같은 실제 목을 가진 캐릭터는 이 문제가 없습니다.
또는 레이어드 액세서리가 스키닝되지 않아야 하는 외부 케이지의 일부를 제거할 수 있습니다. 이는 마켓플레이스를 위한 자산을 의도한 경우 유효한 워크플로우가 아닙니다, 그러나 이는 게임 내 자산이나 다른 용도의 자산에 사용할 수 있습니다. 예를 들어, 다음 이미지에서는 외부 케이지가 수정되어 오직 머리 기하학만 포함되도록 되었음을 보여줍니다. 외부 케이지를 이처럼 개선하면, 자동으로 스키닝 데이터를 전송할 때 수염과 부분 케이지가 이제 머리 기하학에서만 스키닝을 정확히 전송합니다.

이전에 발생한 변형 문제를 해결하기 위해 전혀 다른 케이지를 사용할 수도 있다는 점에 유의해야 합니다. 예를 들어, 가슴과 턱 사이의 공간이 더 많은 더 휴머노이드 케이지를 사용하면 수염이 가슴이나 목 부분이 아닌 머리에 더 가까워지므로 자동 스키닝 전송이 해당 영역에서 스키닝 데이터를 전송하지 않게 됩니다.

캐릭터의 케이지의 다양한 영역을 수정하여 레이어드 의상과 얼굴 액세서리가 신체 또는 머리의 올바른 영역에 따라 변형되도록 할 수 있습니다. 예를 들어, 캐릭터 모델의 팔을 수정하여 드레스가 캐릭터가 달리는 동안 잘못 연결되지 않도록 하거나, 잘못된 발에 매핑되는 바지를 수정하는 것입니다. 다음 비디오는 자켓의 칼라가 머리와 함께 잘못 움직이는 모습을 보여줍니다. 이는 레이어드 의상이 케이지의 머리 부분에 가장 가까운 칼라 영역에서 변형되고 있기 때문입니다. 이를 해결하기 위해 케이지의 머리 부분을 제거하여 자켓이 머리와 전혀 잘못 변형되지 않도록 할 수 있습니다. 대신 어깨 영역에 따라 변형되며, 이는 이 의류에 훨씬 더 적합합니다.

다른 액세서리 카테고리
자동 스키닝 전송은 모자 및 안경 유형의 액세서리와 같은 특정 액세서리 카테고리에 대해 잘 작동하지 않을 수 있습니다. 예를 들어 모자 또는 안경 액세서리는 일반적으로 강직해야 하는 영역에서 변형을 유발할 수 있습니다. 일반적으로 이러한 액세서리는 강직하게 유지되어야 하며, 이에 대한 스키닝 데이터를 연결하지 않아야 합니다.
다른 액세서리 카테고리에 대한 제안된 WrapLayer.AutoSkin 매개변수 요약은 다음 표를 참조하십시오:
| 액세서리 카테고리 | 제안된 매개변수 |
|---|---|
| 수염 | EnabledOverride |
| 눈썹 | EnabledOverride |
| 속눈썹 | EnabledOverride |
| 머리 | Disabled |
| 모자 | Disabled |
| 안경 | Disabled |
| 셔츠 | EnabledOverride 또는 EnabledPreserve |
| 바지 | EnabledOverride 또는 EnabledPreserve |
| 신발 | EnabledOverride 또는 EnabledPreserve |