스킨 메쉬


장면(scene)뷰와 인스펙터에서 스킨한 의복

SkinnedCloth 콤포넌트는 SkinnedMeshRenderer과 같이 작동하여 캐릭터에서 의복을 재현합니다. 사용자가 SkinnedMeshRenderer 를 사용하는 움직이는 캐릭터를 가지고 있다면, 사용자는 SkinnedMeshRenderer와 함께 SkinnedCloth 콤포넌트를 게임 오브젝트에 추가하여 좀 더 생물체처럼 보이게 할 수 있습니다. 그냥 SkinnedMeshRender를 가진 GameObject를 선택하고 Component→Physics→Skinned Cloth 메뉴를 사용하여 SkinnedCloth 콤포넌트를 추가하십시오.

이 SkinnedCloth 콤포넌트가 하는 역할은 SkinnedMeshRenderer로부터 버텍스(vertex) 출력을 받아 그것이 의복 시뮬레이션을 적용하는 것 입니다. SkinnedCloth 콤포넌트는 버텍스 당 계수(per-vertex coefficients) 한 세트를 가지고 있으면 그것은 스킨메쉬(skinned mesh)에 대하여 시뮬레이트 된 의복이 얼마나 자유로이 움직일 수 있나를 설정합니다.

이 계수들은 해당 SkinnedCloth 콤포넌트를 포함한 게임 오브젝트가 선택되었을 때 장면 뷰와 인스펙터를 이용하여 시각적으로 편질 할 수 있습니다. 두가지 편집 모드가 있는데, selection과 vertex painting 모드입니다. Selection 모드에서는 장면뷰에서 vertices를 클릭하여 선택하고 인스펙터에서 해당 계수들을 편집합니다. vertex paining 모드에서는, 사용자가 인스펙터에서 원하는 계수를 설정하고 사용자가 변경하고자 하는 계수 옆에 있는 "paint" 버튼을 켠 후, 해당 값을 여기에 적용하려면 vertices를 클릭합니다.

주의할 것은 skinned cloth 시뮬레이션은 SkinnedMeshRenderer에 의해 입혀진 vertices에 의해서만 작동하며, 이 외에는 어느 콜라이더와도 반응하지 않습니다. 이것은 skinned cloth 시뮬레이션은 여타의 나머지 물리력 시뮬레이션처럼 같은 프레임 비율이나 같은 쓰레드에서 시뮬레이션을 하지 않아도 되기 때문에 전적으로 물리적인 Interactive Cloth 콤포넌트보다 훨씬 빠르게 동작합니다.

사용자는 skinned cloth 언제라도 콤포넌트를 켜거나 끌 수 있습니다. 이것을 끄면 랜더링을 일반 SkinnedMeshRenderer로 스위치하므로, 사용자는 변하는 성능에 능동적으로 맞출 필요가 있을 때마다 바꿀 수 있습니다. 또한 SkinnedCloth.SetEnabledFading() 메소드를 사용하여 스크립트로부터 플레이어가 전환을 눈치채지 못하도록 하기 위하여 두 모드 매끄럽게 교차 등장 (cross-fade) 할 수 있습니다.

의복 계수

버텍스(vertex) 당 4개의 계수가 있으며, 이들은 skinned vertices와 노멀(normal)에 대하여 의복 버텍스(cloth vertices)가 어떻게 동작하는지를 정의합니다:

Max Distance 버텍스와 거리를 두는 것은 스킨메쉬버텍스 위치(skinned mesh vertex position)로부터 떠나기 위하여 허용됩니다. SkinnedCloth 콤포넌트는 cloth vertices가 스킨메쉬버텍스 위치(skinned mesh vertex position)로부터 maxDistance 이내에 머물 것을 보장합니다.만일 maxDistance이 0이면, 해당 vertex는 시뮬레이션이 수행되지 않고 단지 스킨메쉬버텍스 위치로 설정됩니다. 이러한 동작은 cloth vertex를 움직이는 캐릭터의 스킨에 고정하는데 유용합니다 – 사용자는 이를 피복을 벗으면 안 되는 모든 vertex나 캐릭터의 몸체에 어떤 식으로든 고정되어야 하는 부분에 시행할 수 있습니다(예를 들면 벨트로 고정된 바지의 허리부분). 그러나 사용자 캐릭터의 대부분이 의복 시뮬레이션이 필요하지 않다면(얼굴이나 손 등), 최적의 성능을 위하여 별도의 스킨메쉬(skinned mesh)로 설정하고 SkinnedCloth 콤포넌트를 부여할 필요가 없습니다.
Distance Bias 이것은 의복 메쉬 노멀을 기반으로 maxDistance에 설정한 범위를 일그러뜨립니다. 이 기능은 그 값이 0.0(디폴트)일 경우 꺼집니다. 이 경우, 최고 거리 구간은 형체가 유지됩니다. maxDistanceBias를 -1.0 쪽으로 감소시키면 버텍스가 직각 방향으로 움직일 수 있는 거리를 감소시킵니다. -1.0이면 해당 버텍스는 스킨메쉬버텍스 위치(skinned mesh vertex position)를 통하여 스킨메쉬버텍스 위치(skinned mesh vertex position)의 maxDistance이내에서 머물러야 합니다. maxDistance를 1.0을 향해 변경하면, 해당 버텍스가 노멀 방향으로 이동이 허용된 거리가 감소합니다. 1.0에서는 해당 버텍스는 스킨메쉬버텍스 위치(skinned mesh vertex position)로부터 maxDistance 이 내의 거리에서 직각면 내에서만 움직일 수 있게 됩니다.
Collision Sphere Radius and Collision Sphere Distance 버텍스가 들어갈 수 있는 범위를 정의합니다. 이는 움직이는 의복에 대한 충돌을 허용합니다. 이 한 쌍 (collisionSphereRadius, collisionSphereDistance))은 각 의복 버텍스의 구간을 설정합니다. 해당 구간의 중앙은 constrainPosition - constrainNormal * (collisionSphereRadius + collisionSphereDistance)의 위치에 있고, 그 반경은 collisionSphereRadius 이며, 여기서 constrainPosition 과constrainNormal은 버텍스의 위치이고, SkinnedMeshRenderer에 의해 생성된 노멀(normals)입니다. SkinnedCloth는 의복 버텍스가 이 반경을 들어올 수 없게 합니다. 이는 collisionSphereDistance이 해당 의복 메쉬가 이 의복에 의해 얼마나 깊이 관통될 수 있는가를 설정하는 것을 의미합니다. 이 값은 일반적으로 0으로 됩니다. collisionSphereRadius는 인접하는 버텍스 사이의 거리보다 큰 값으로 설정되어야 하며 이는 해당 의복 버텍스가 충돌 반경에서 미끄러지지 않게 하기 위해서 입니다. 이러한 설정 하에서, 해당 의복은 스킨메쉬에 대하여 충돌하는 것으로 보여질 것 입니다.

시각적으로 표현된 이미지를 참조하여 maxDistanceBias의 다양한 값에 스킨버텍스와 노멀에 대하여 해당 계수들이 어떻게 동작하는지를 참조하십시오. 붉은 영역은 collisionSphereRadius 와collisionSphereDistance에 의해 설정된 충돌 반경이고, 의복버텍스는 들어갈 수 없습니다. 그러므로 maxDistance 과 maxDistanceBias에 의해 설정되고 붉은 영역에 의해 제외된 녹색 영역에는 의복버텍스가 들어갈 수 있는 영역으로 설정됩니다.


스킨 메쉬 인스펙터

사용자가 SkinnedCloth 콤포넌트를 포함한 GameObject를 선택 시, 사용자는 의복 버텍스 계수와 다른 속성을 편집하기 위해 SkinnedCloth 인스펙터를 사용할 수 없습니다:

Vertex Selection Tool


이 모드에서 사용자는 장면뷰에서 버텍스들을 선택할 수 있고 ,그들의 계수를 인스펙터에서 설정할 수 있습니다.(의복 계수가 어떻게 작동하는 지에 대하여 설명을 보고 싶으면 이전 섹션을 참조하십시오). Shift 키를 누르거나 마우스로 사각형을 드래그하면 여러 개의 계수를 설정 할 수 있습니다. 여러 개의 버텍스들이 선택되면, 인스펙터는 해당 버텍스들의 계수들에 대한 평균값을 보여줍니다. 사용자가 이 값을 변경하면, 그 계수는 모든 버텍스들에게 같은 계수 값을 설정할 것 입니다. 사용자가 장면 뷰를 wireframe로 바꾸면, 뒷면 버텍스(back-facing vertices)을 보고 선택할 수 있습니다. 이는 해당 캐릭터의 전체 부분을 선택하고 싶을 때 유용합니다.

사용자가 모든 버텍스들이 어떤 계수 값을 가지고 있는지에 대한 이해를 돕기 위하여, 사용자가 계수 필드 옆에 위치한 눈 모양의 아이콘을 클릭하면 편집기가 장면 뷰내에서 해당 계수를 보여줍니다. 가장 낮은 값의 계수를 가진 버텍스는 녹색 빛깔로, 중간 값은 노란 색, 그리고 가장 높은 값은 푸른 색으로 나타납니다. 이 색상 스케일은 해당 계수의 사용 값 범위에 대비하여 항상 상대적으로 선택되면, 절대값과는 무관합니다.

버텍스 페인팅 도구


버텍스의 선택과 유사하게, 이 도구 또한 사용자가 버텍스 계수 값을 설정 할 수 있게 도와주는 도구입니다. 버텍스 선택과는 달리, 사용자는 값 변경 전에 버텍스를 클릭할 필요가 없습니다. 이 모드에서는 사용자는 원하는 값을 입력하고, 변경하고 싶은 계수 옆에 페인트붓 토글을 켜고 그리고 해당 값으로 설정하고 싶은 모든 버텍스를 클릭하면 됩니다.

설정


세 번째 탭을 사용하면 사용자는 스킨의복(skinned cloth) 여러 가지 속성을 설정할 수 있습니다:

Bending Stiffness 의복의 휘는 굴곡.
Stretching Stiffness 의복의 늘어나는 굴곡.
Damping 의복 움직임을 제동
Use Gravity 의복 시뮬레이션에서 중력 효과를 적용해야 할까요?
External Acceleration 지속적인 외부 가속이 의복에 적용.
Random Acceleration 무작위적인 외부 가속이 의복에 적용.
World Velocity Scale 캐릭터의 월드 공간의 움직임이 얼마나 의복 버텍스에 영향을 미치는지의 값. 이 값이 높을수록 월드 공간에서의 GameObject의 움직임에 더욱 더 크게 반응합니다. 기본적으로 이 값은 SkinnedCloth의 공기마찰력을 설정합니다.
World Acceleration Scale 캐릭터의 월드 공간의 가속이 얼마나 의복 버텍스에 영향을 미치는지의 값. 이 값이 높을수록 월드 공간에서의 GameObject의 가속에 더욱 더 크게 반응합니다. 만일 캐릭터가 가속할 때 불안정해 보이면, 이 값을 감소하십시오.

역링크