소개 (Introduction)


백스톱은 버텍스의 노멀 방향을 기준으로 진입할 수 있는 거리를 제한하는 일종의 충돌 감지 방식입니다.

이를 사용하면 앞머리가 머리 안으로 침범하는 것을 쉽게 방지할 수 있으며, T셔츠나 기타 의류가 신체 내부로 들어가는 것을 막을 수도 있습니다.

메커니즘이 단순하고 처리 부하가 적으며, 신체 내부로의 침투를 강력하게 방지할 수 있는 시스템입니다.

 

백스톱은 [Movement Limit] 패널에서 설정할 수 있습니다. 이 가이드는 먼저 백스톱의 원리를 설명한 후, 앞머리와 스커트 두 가지 예제를 통해 사용 방법을 설명합니다.

 

 

 

 

구조 (Structure)


백스톱의 원리는 간단합니다.

프록시 메쉬의 각 버텍스가 노멀 방향을 기준으로 이동할 수 있는 범위를 제한하는 방식입니다.

 

 

위 그림은 백스톱의 설정 속성과 그 한계를 보여줍니다. 프록시 메쉬의 버텍스와 노멀은 현재의 이동 위치가 아닌, 애니메이션 포즈(Origin)를 기준으로 합니다.

첫 번째 제한은 Max Distance(최대 거리)입니다. 버텍스는 원점(Origin)을 중심으로 반경 Max Distance 내에서만 이동할 수 있습니다.

 

두 번째 제한은 Backstop Collision(백스톱 충돌)입니다. 버텍스는 Backstop Radius(백스톱 반경)를 갖는 구체 바깥쪽으로만 이동할 수 있으며, 이 구체는 원점에서 Backstop Distance(백스톱 거리)만큼 떨어진 위치에 생성됩니다.

 

이 두 가지 제한으로 인해 버텍스는 Max Distance 내에서만 이동할 수 있으며, 동시에 Backstop Collision 바깥쪽에서만 존재할 수 있습니다. 이 제한은 둘 다 적용할 수도 있고, 하나만 사용할 수도 있습니다.

 

 

 

 

앞머리 설정 예제 (Setting Example of Bangs)


앞머리를 예로 들어 백스톱을 사용하여 앞머리가 머리 안으로 침범하는 것을 방지하는 방법을 설명합니다.

 

BoneCloth는 앞머리가 자연스럽게 흔들리도록 사전에 설정되어 있습니다.

 

 

노멀 방향 확인 (Check Normal Direction)

먼저 현재 프록시 메쉬의 노멀 방향을 확인해야 합니다.

Gizmo Panel에서 Axis를 Normal로 설정하면 확인할 수 있습니다.

 

초록색 선이 노멀 방향을 나타냅니다.

가시성을 위해 버텍스 구는 숨겨져 있습니다.

 

BoneCloth는 단순히 Transform의 Y축을 사용하기 때문에 이 모델에서는 방향이 엉망입니다.

이 상태에서는 백스톱을 사용할 수 없습니다.

 

 

노멀 조정 (Normal Adjustment)

노멀 방향을 조정해야 합니다.

이상적으로는 모든 노멀이 머리 바깥쪽을 향해야 합니다.

노멀 축(Normal Axis)과 노멀 정렬(Normal Alignment) 속성을 사용하여 조정합니다.

 

Normal Alignment를 Transform으로 설정한 후,

 

머리 중심에 위치한 Transform을 등록합니다.

만약 머리 중심에 Transform이 없다면 새로운 GameObject를 생성하여 등록하는 것이 좋습니다.

 

Transform 모드에서는 지정한 Transform 좌표를 중심으로 노멀 방향이 방사형으로 변경됩니다.

이 변경은 프록시 메쉬에 적용되며, 원래의 Transform이나 Mesh에는 영향을 주지 않습니다.

 

결과적으로 모든 노멀이 머리 바깥쪽을 향하도록 조정되었으며, 이제 백스톱을 설정할 준비가 되었습니다.

 

 

백스톱 설정 (Backstop Setting)

이제 침범할 수 있는 거리를 설정하면 됩니다. 이번에는 다음과 같이 설정했습니다.

 

곡선을 사용하여 시작점에서 끝점까지 0cm에서 5cm까지 침범할 수 있도록 설정했습니다. 이번에는 Max Distance를 사용하지 않았습니다.

Stiffness는 반발력의 강도를 나타냅니다. 값을 낮추면 버텍스가 조금 더 부드럽게 되돌아갑니다.

 

 

완료 (Complete)

실행해 봅시다!

 

*캐릭터를 좌우로 움직였습니다.
Collider를 사용하지 않고도 머리카락이 머리 안으로 침범하지 않도록 설정할 수 있었습니다.

 

 

 

 

스커트 설정 예제 (Skirt Setting Example)


이번에는 스커트를 예로 들어 고급 백스톱 설정 방법을 설명합니다.

백스톱은 주로 버텍스가 신체를 관통하는 것을 방지하는 역할을 합니다. 그러나 신체는 항상 애니메이션되며 다양한 자세 변화를 겪기 때문에 앞머리 설정보다 더 복잡한 작업이 필요합니다.

 

 

애니메이션 자세의 중요성 (Importance of Animation Posture)

여기서 애니메이션 자세가 중요한 요소가 됩니다. 애니메이션 자세란, MagicaCloth를 사용하지 않고 Transform 또는 Mesh가 애니메이션을 위해 변형되는 포즈를 의미합니다.

 

예를 들어, 아래 캐릭터의 스커트는 왼쪽과 오른쪽 다리에 스킨이 적용된 상태입니다.
이 경우, 스커트는 다리를 따라 움직이며 애니메이션되므로, 백스톱을 설정할 수 있습니다.

 

하지만 다음 캐릭터의 경우, 스커트가 다리에 스킨되지 않은 상태입니다.
이 상태에서는 애니메이션이 실행될 때 다리가 스커트를 통과하게 되며, 백스톱을 설정할 수 없습니다.

 

백스톱은 애니메이션 포즈에 제한을 가하는 시스템이므로, 백스톱이 제대로 작동하려면 Transform 또는 Mesh가 애니메이션을 따라가야 합니다.

 

 

애니메이션 자세 조정 (Animation Posture Adjustment)

위 문제를 해결하는 가장 좋은 방법은 스킨 가중치를 설정하여 메쉬가 다리를 따라가도록 만드는 것입니다.
또는 스커트에 본(Bone)을 추가하고, 달리기, 점프, 공격 등의 액션별로 본 애니메이션을 제어하여 자세를 어느 정도 조절하는 방법도 있습니다.
이 과정은 일반적으로 Blender와 같은 외부 툴을 사용하는 아티스트가 수행합니다.

 

이렇게 아티스트가 제작한 애니메이션 자세에 Cloth Simulation을 추가하는 방식이, 신체 침투를 방지하는 가장 견고한 방법입니다.
이 방법을 가장 추천합니다.

 

하지만 이 방법을 사용할 수 없는 경우, 이후 설명할 커스텀 스키닝 기능(Custom Skinning Feature)을 대안으로 사용할 수도 있습니다.

 

 

애니메이션 자세 확인 (Check Animation Posture)

현재 애니메이션 자세를 Gizmo를 통해 시각적으로 확인할 수 있습니다.
다음과 같이 애니메이션 자세 확인 기능을 활성화하면 확인할 수 있습니다.

 

예를 들어, 샘플에 포함된 UnityChanKAGURA의 스커트는 다리에 스킨되지 않았습니다.
Gizmo를 확인하면 이를 확인할 수 있습니다.

 

 

커스텀 스키닝 사용 (Using Custom Skinning)

만약 아티스트가 직접 수정하는 것이 불가능한 경우, 커스텀 스키닝(Custom Skinning) 기능을 대안으로 사용할 수 있습니다.
이 기능은 프록시 메쉬를 지정한 본(Bone)에 자동으로 스킨하는 기능입니다.
이미 애니메이션 포즈가 올바르게 설정되어 있다면 이 기능을 사용할 필요는 없습니다.

 

Custom Skinning 패널에서 체크를 활성화하고, Skinning Bones에 필요한 본을 등록합니다.
KAGURA의 스커트의 경우, 가슴에서 양쪽 다리까지의 본을 등록했습니다.

 

이 등록된 본은 Gizmo에서 노란색 구체(Yellow Sphere)로 표시됩니다.

 

이 상태에서 실행하면 커스텀 스키닝을 통해 프록시 메쉬가 다리를 따라가도록 설정됩니다.


이제 백스톱이 정상적으로 작동하게 됩니다.
이 기능은 BoneCloth에서도 사용할 수 있습니다.

 

하지만 커스텀 스키닝은 단순한 대체 기능일 뿐이므로 정확도가 낮을 수 있습니다.

 

 

유효한 버텍스 페인트 (Paint Valid Vertices)

백스톱은 버텍스 단위로 기능을 켜거나 끌 수 있습니다.
이는 패널의 파란색 펜 마크(Blue Pen Mark)를 클릭하여 버텍스 페인트를 실행하면 설정할 수 있습니다.

 

예를 들어, 특정 메쉬 부분에서 백스톱이 작동하지 않도록 설정하고 싶을 때 사용할 수 있습니다.

 

 

백스톱 설정 (Backstop Setting)

이제 앞머리 설정 예제와 동일한 방식으로 백스톱을 설정하면 됩니다.
이번에는 KAGURA의 스커트에 커스텀 스키닝을 적용합니다.

효과를 쉽게 확인하기 위해 침범 제한 거리를 0cm로 설정했습니다.

 

완료 (Complete)

실행해 봅시다!

 

이번 설정은 Collider를 전혀 사용하지 않고 백스톱만으로 제어되는 방식입니다.
백스톱이 다리의 움직임을 제한하며, 버텍스가 다리 안으로 침범하는 것을 막는 것을 확인할 수 있습니다.
또한 허리 주변에서도 버텍스 침범이 발생하지 않는 것을 확인할 수 있습니다.

 

여기에 Collider를 추가하고 보강하면, 아무리 강한 움직임을 줘도 스커트가 다리를 관통하지 않도록 제어할 수 있습니다.

 

 

 

 

애니메이션 자세 비율 (Animation Posture Ratio)


이 항목은 백스톱과 직접적인 관련은 없지만, 흔들림을 제어하는 데 중요하기 때문에 설명합니다.

 

지금까지 애니메이션 자세에 대해 설명했으며, MagicaCloth는 내부적으로 초기 자세와 애니메이션 자세를 모두 유지하고 있습니다.

백스톱은 항상 애니메이션 자세를 기준으로 계산됩니다.

 

그러나 일부 제약에서는 초기 자세 또는 애니메이션 자세를 기준으로 복원할지를 지정할 수 있으며, 이를 애니메이션 자세 비율이라고 합니다.

기본 패널의 Animation Pose Ratio 항목에서 설정할 수 있습니다.

 

이 값이 1.0에 가까울수록 복원력이 애니메이션 자세를 기준으로 계산됩니다.

기본값은 0.0이며, 이 경우 복원력은 초기 자세를 기준으로 계산됩니다.

즉, 초기 자세로 복원할 것인지, 현재 애니메이션 자세로 복원할 것인지에 대한 비율을 설정하는 값입니다.

 

비율이 0.0이면 초기 자세로 돌아가려는 복원력이 작용하고, 비율이 1.0이면 현재 애니메이션 자세로 돌아가려는 복원력이 작용합니다.

비율이 0.5이면 초기 자세와 애니메이션 자세를 1:1로 블렌딩하여 복원됩니다.

 

 

영향을 받는 제약 (Affected Constraints)

이 애니메이션 자세 비율의 영향을 받는 제약은 세 가지입니다.

  1. 각도 복원(Angle Restoration)
  2. 각도 제한(Angle Limit)
  3. 형상 복원(Shape Restoration)

 

 

설정 가이드라인 (Setting Guidelines)

기본적으로 0.0으로 설정하는 것이 무난합니다.

대부분의 경우 옷의 움직임이 더 안정적으로 유지되기 때문입니다.

 

그러나 애니메이션 자세가 크게 변형되는 경우에는 비율을 증가시키는 것이 더 안정적일 수 있습니다.

또한 애니메이션 자세가 아티스트에 의해 완전히 제어되는 경우, 높은 값을 설정하는 것이 더 안정적입니다.

이 경우, 기본적으로 0.5부터 시작하여 움직임을 보면서 조정하는 것이 좋습니다.

'유니티 에셋 > Magica Cloth 2' 카테고리의 다른 글

BoneCloth 고급 설정 (BoneCloth Advanced Settings)  (0) 2025.03.02
자가 충돌 설정 (Self-Collision Setting)  (1) 2025.03.02
버텍스 페인팅 방법  (0) 2025.03.02
매개변수 설정  (0) 2025.03.02
충돌 감지 설정  (0) 2025.03.02

+ Recent posts