유니티 에셋/Magica Cloth 2

충돌 감지 설정

스크립팅하는애님 2025. 3. 2. 01:17

 

https://youtu.be/YmXUkOs5ErY?si=K0vFJE8nIALZLsVA

 

 

소개


여기에서는 캐릭터 의상을 시뮬레이션할 때 필수적인 인체와의 충돌 감지에 대해 설명합니다.
충돌 감지 설정은 BoneClothMeshCloth에서 공통적으로 사용됩니다.

 

 

 

 

충돌 감지 유형


MagicaCloth에는 네 가지 충돌 제어 방식이 존재합니다.

충돌 감지 유형 설명

Collider 충돌 감지 구체(Sphere), 캡슐(Capsule), 평면(Plane) 등의 콜라이더와 충돌을 감지하는 방식. 가장 일반적으로 사용되며, 이 페이지에서 설명됩니다.
Backstop 정점의 법선 방향으로 들어갈 수 있는 거리와 반경을 설정하여, 옷이 인체 내부로 파고드는 것을 방지하는 방식.
Self-Collision 자체 충돌 감지. 옷이 자체적으로 접히거나 엉키는 것을 방지함.
Mutual Collision 상호 충돌 감지. 다른 Cloth 오브젝트와 충돌하여 서로 겹치지 않도록 방지함.

이 페이지에서는 Collider 충돌 감지만 설명하며,
다른 충돌 감지 방식에 대한 내용은 전용 가이드 페이지를 참고하세요.

 

 

 

 

Collider 충돌 감지 원리


Collider 충돌 감지는 매우 간단한 원리로 작동합니다.
정점(Vertex)이 구(Sphere), 캡슐(Capsule) 등의 콜라이더 형태에 침범하지 않도록 밀어내는 방식입니다.

 

이러한 콜라이더를 인체 형태에 맞게 배치하면, 옷이 캐릭터 몸 안으로 파고드는 현상을 방지할 수 있습니다.

 

 

 

 

콜라이더 유형


콜라이더는 여러 가지 형태가 있습니다.

 

Sphere Collider

 

구형 콜라이더.

 

Capsule Collider

 

캡슐형 콜라이더.
시작점과 끝점의 반경 및 길이를 변경할 수 있습니다.

 

Plane Collider

 

평면 콜라이더.
크기를 설정할 수 없으며, 무한 평면으로 처리됩니다.

 

 

 

 

충돌 모드


콜라이더에 대한 프록시 메시의 판정 방식을 선택할 수 있습니다.

 

Vertex Sphere Mode

프록시 메시의 정점을 구로 간주하여 콜라이더와 충돌 감지를 수행합니다.
구의 크기는 조정할 수 있습니다.

 

처리 부하가 적어 신경 쓰지 않고 사용할 수 있다는 장점이 있습니다.

 

그러나 아래와 같이 콜라이더가 작을 경우, 구 사이로 통과하는 문제가 발생할 수 있으므로 주의해야 합니다.

 

Edge Mode

프록시 메시의 엣지와 콜라이더 간의 충돌 감지를 수행합니다.
엣지의 두께를 조정할 수 있습니다.

엣지 모드는 구형 모드의 통과 문제를 방지할 수 있다는 큰 장점이 있습니다.

 

그러나 구형 모드보다 처리 부하가 높으므로 주의해서 사용해야 합니다.
정점 구형 모드에서 문제가 발생하는 경우에만 고려하는 것이 좋습니다.

 

 

 

콜라이더 배치


KAGURA의 치마를 예제로 사용하여 콜라이더를 설정해 보겠습니다.
치마가 이미 MeshCloth를 사용하여 설정되었다고 가정합니다.

 

치마의 경우 다리 콜라이더와 허리 콜라이더가 필요합니다.
먼저, 왼쪽 다리 본을 선택합니다.
KAGURA에서는 [CH_Thigh_L]이 됩니다.
그런 다음 마우스 오른쪽 메뉴를 열고 Create Other/Magica Cloth2/Magica Capsule Collider를 선택합니다.

 

캡슐 콜라이더 컴포넌트가 다음과 같이 추가되었습니다.

 

이제 기즈모가 씬 뷰에 나타납니다.

 

배치에서 중요한 점은 콜라이더의 스케일이 XYZ 축에서 균일해야 한다는 것입니다.
이것은 로컬 스케일이 아니라 부모를 포함한 글로벌 스케일입니다.
스케일이 균일하지 않으면 충돌 감지가 올바르게 작동하지 않으므로 주의하세요.

 

 

캡슐 콜라이더 인스펙터를 사용하여 위치와 크기를 조정합니다.

 

캡슐 콜라이더는 방향, 길이, 시작 반경 및 끝 반경을 개별적으로 설정할 수 있습니다.
각 매개변수를 변경해 보세요.
씬 뷰 기즈모가 이에 따라 변형되는 것을 확인할 수 있습니다.

 

캡슐 콜라이더의 시작점과 끝점을 다른 크기로 설정하려면, 다음과 같이 인스펙터에서 [S] 버튼을 누릅니다.

 

이렇게 하면 시작 반경과 끝 반경을 독립적으로 설정할 수 있습니다.

 

또한, ReverseDirection을 사용하여 방향을 반전하거나 AlignedOnCenter를 끄면 시작점을 중심에 정렬할 수 있습니다.

 

이러한 속성을 사용하여 콜라이더를 다리에 맞게 조정합니다.
조정할 때 씬 뷰를 와이어프레임 모드로 변경하면 더 잘 보입니다.

 

또한, 센터 속성을 변경하는 대신 콜라이더의 GameObject를 이동하는 것이 위치 조정에 더 편리한 경우가 많습니다.
콜라이더를 이동하여 다음과 같은 위치로 조정합니다.

 

같은 방법으로 힙 부분에 SphereCollider를 추가합니다.

힙 본 [CH_Hips]를 선택하고 마우스 오른쪽 메뉴에서 SphereCollider를 선택합니다.
Sphere Collider가 추가됩니다.

 

Sphere Collider의 속성은 반지름만 있습니다.

 

캡슐 콜라이더와 마찬가지로 반지름과 위치를 조정하여 왼쪽 힙 라인에 맞춥니다.

 

오른쪽도 동일하게 설정하고, 마지막으로 네 개의 콜라이더를 이미지와 같이 배치합니다.

 

 

 

 

콜라이더 등록


마지막으로, 생성한 콜라이더를 클로스 컴포넌트에 등록하겠습니다.
등록하지 않으면 콜라이더가 작동하지 않으므로 주의하세요.
콜라이더 등록은 Collider Collision 패널에서 수행됩니다.

 

생성한 콜라이더를 Collider List에 등록합니다.

 

이제 콜라이더 설정이 완료되었습니다!

 

 

 

 

정점 반경 및 마찰 설정


마지막으로, 충돌 모드, 두께(Radius), 그리고 마찰(Friction)을 설정합니다.

 

두께는 곡선을 사용하여 프록시 메시 정점의 깊이에 따라 반경을 변경할 수도 있습니다.
Radius 슬라이더 바를 조정해 보세요.
씬 뷰에서 설정한 반경이 실시간으로 반영됩니다.
씬 뷰를 보면서 배치한 콜라이더에 적절한 정점 구 크기를 조정하세요.
이번에는 정점 구 크기를 0.02로 균일하게 설정하였습니다.

 

마찰(Friction)은 콜라이더와 정점이 접촉했을 때 미끄러지는 정도를 조정합니다.
값을 높이면 덜 미끄러지게 됩니다.

 

 

 

 

동작 확인


이제 모든 설정이 완료되었습니다!
실제로 실행하여 움직임을 확인해 보세요.
설정한 콜라이더와 프록시 메시의 정점이 충돌하여 관통을 방지한다면 성공입니다!

 

 

 

 

다음 단계는?


지금까지 BoneCloth와 MeshCloth의 사용 방법 및 충돌 감지 설정 방법을 설명하였습니다.
그러나 이상적인 움직임을 구현하려면 많은 매개변수를 조정해야 합니다.
다음으로, 각 매개변수의 설정과 작동 방식에 대해 설명하겠습니다.