Unity는 메시의 모양이 애니메이션화된 뼈대에 따라 변형되는 Bone 애니메이션의 렌더링을 위해 Skinned Mesh Renderer 컴포넌트를 사용합니다. 캐릭터뿐만 아니라 (조인트가 힌지처럼 기능하는 기계와 달리) 조인트가 구부러지는 다른 오브젝트에도 유용한 기법입니다.
뼈대 는 애니메이션 도중 메시가 변형되는 방법에 영향을 미치는 스킨드 메시 내부의 보이지 않는 오브젝트입니다. 뼈대는 합쳐져서 계층 구조의 “골격”을 형성하고, 골격의 조인트를 회전하여 움직이게 하면 애니메이션이 정의됩니다. 각각의 뼈대는 주변 메시의 일부 버텍스에 붙어 있습니다. 애니메이션을 재생하면 버텍스는 연결된 뼈대와 함께 움직이고 “스킨”이 골격을 따라 움직입니다. (예를 들어 팔꿈치처럼) 간단한 조인트에서 메시 버텍스는 만나는 뼈대 모두의 영향을 받으며 메시는 조인트가 구부러짐에 따라 사실적으로 늘어나고 회전합니다. 보다 복잡한 상황에서는 세 개 이상의 뼈대가 메시의 특정 영역에 영향을 미쳐 미세한 동작이 가능합니다.
스킨드 메시는 보통 애니메이션과 함께 사용되지만 Rigidbody 컴포넌트를 골격의 각 뼈대에 붙여 물리 엔진의 제어를 받게 할 수도 있습니다. 일반적으로 캐릭터의 팔다리가 폭발에 의해 내던져지거나 부딪힐 때 마구 흔들리는 “래그돌” 효과를 주는 데 활용되는 방식입니다.
이 프로퍼티들 중 일부는 메시 렌더러 레퍼런스 페이지에도 나타납니다. 다음 표는 파란색 상자 안에 나타나는 나머지 프로퍼티에 관한 정보를 제공합니다.
프로퍼티: | 기능: |
---|---|
BlendShapes | 이 메시에 정의된 블렌드 셰이프를 저장합니다. |
Rendering Layer Mask | 이 렌더러가 상주할 렌더링 레이어를 결정합니다. 스크립터블 렌더 파이프라인을 사용하는 경우 렌더링별 레이어 마스크를 추가로 지정할 수 있습니다. 이렇게 하면 렌더러에 포함된 마스크와 DrawRenderers 커맨드에 전달된 마스크를 기준으로 렌더러를 필터링할 수 있습니다. |
Renderer Priority | 우선 순위를 기준으로 렌더러를 정렬합니다. 낮은 값이 먼저 렌더링되고 높은 값이 나중에 렌더링됩니다. |
Quality | 스키닝 동안 버텍스당 사용되는 최대 뼈대 수를 정의합니다. 값이 높을수록 뼈대 수가 많고 렌더러의 품질이 좋습니다. Unity는 1개에서 32개까지 원하는 뼈대 수로 모든 버텍스를 스키닝할 수 있지만, 뼈대 수가 4개를 넘어가면 성능이 저하됩니다. 사용하는 뼈대가 많을수록 결과가 향상되지만, 뼈대를 추가할 때마다 프로세싱 오버헤드가 높아집니다. |
Auto |
블렌드 가중치 Quality 설정을 사용합니다. 참고: 원하는 수의 스킨 가중치를 임포트했고 4개가 넘는 뼈대를 사용하고 싶다면 이 옵션을 선택하고 블렌드 가중치를 Unlimited로 설정해야 합니다. |
1 Bone | 각 버텍스에 영향을 주는 뼈대를 하나만 사용합니다. |
2 Bones | 버텍스당 최대 두 개의 뼈대를 사용합니다. 화질과 성능 간에 적절한 타협이기 때문에 많은 게임에서 흔히 사용되는 설정입니다. |
4 Bones | 버텍스당 최대 네 개의 뼈대를 사용합니다. 네 개가 넘는 뼈대가 단일 버텍스에 영향을 주도록 허용해야 하는 경우 블렌드 가중치 Quality 설정을 사용하십시오. |
Update When Offscreen | 이 옵션을 활성화하면 카메라에 보이지 않을 때에도 프레임마다 바운딩 볼륨을 계산할 수 있습니다. 이 옵션을 비활성화하면 게임 오브젝트가 화면 밖에 있을 때 애니메이션 실행이 멈춥니다. 기본적으로 Unity는 카메라에 보이지 않는 스킨드 메시를 업데이트하지 않습니다. 메시가 화면에 다시 들어오면 Unity는 스키닝을 다시 업데이트합니다. 이를 통해 시스템 리소스를 절감할 수 있습니다. 자세한 내용은 아래의 게임 오브젝트의 가시성 결정을 참조하십시오. |
Skinned Motion Vectors | 이 옵션을 활성화하면 메시 스키닝 데이터를 이중 버퍼링하여 Unity가 스키닝된 모션을 보간한 후 모션 벡터 텍스처에 배치하도록 허용합니다. 이 작업은 많은 GPU 메모리를 소모하지만, 모션 벡터의 정확도가 높아집니다. |
Mesh | 이 렌더러에서 사용하는 메시(스킨)를 설정합니다. |
Root Bone | 애니메이션의 “루트”가 되는 뼈대(즉, 다른 모든 뼈대의 움직임에 관련된 뼈대)를 설정합니다. |
Bounds | Unity가 메시가 화면 밖에 있는지 확인하는 데 사용하는 바운딩 볼륨을 설정합니다. Unity는 모델 파일의 메시와 애니메이션을 임포트할 때 바운드를 미리 계산하고, 씬 뷰에서 모델 주변의 와이어프레임으로 표시합니다. 자세한 내용은 아래의 게임 오브젝트의 가시성 결정을 참조하십시오. |
Unity는 메시의 Bounds 를 사용하여 게임 오브젝트가 보이는지 여부를 판단합니다. 즉 전체 바운딩 볼륨은 모든 활성화된 카메라의 뷰 밖에 있어야 합니다. 하지만 애니메이션 메시의 트루 바운딩 볼륨은 애니메이션이 재생되면서 변경될 수 있습니다(예를 들어 캐릭터가 공중으로 손을 들어 올리면 바운딩 볼륨은 커집니다). Unity는 최대 바운딩 볼륨을 계산할 때 첨부된 모든 애니메이션을 고려하지만 일어날 만한 모든 경우를 예측하기 위해 바운드를 계산할 수 없는 경우도 존재합니다.
다음의 각 예제 상황은 뼈대나 버텍스를 미리 계산된 바운딩 볼륨 밖으로 밀어낼 때 문제가 될 수 있습니다.
이러한 경우 다음 방법 중 하나를 사용하여 문제를 해결할 수 있습니다.
바운드를 수정해 메시의 잠재적 바운딩 볼륨을 일치시킵니다.
성능 향상을 위해 가능하면 이 옵션을 사용하십시오.
Update When Offscreen 을 활성화해 스킨드 메시를 항상 스키닝 및 렌더링합니다.
성능이 주요 관심 사항이 아니거나, 래그돌을 사용할 때와 같이 바운딩 볼륨의 크기를 예측할 수 없는 경우 이 옵션을 사용하십시오.
스킨드 메시가 래그돌과 더 잘 작동하기 위해 Unity는 임포트할 때 스킨드 메시 렌더러를 루트 뼈대에 자동으로 다시 매핑합니다. 하지만 이는 모델 파일에 스킨드 메시 렌더러가 하나일 때만 해당됩니다. 래그돌을 사용하고 모든 스킨드 메시 렌더러를 루트 뼈대나 자식에 연결하지 못하는 경우 이 최적화를 해제하십시오.
2019–05–31 일부 편집 리뷰를 거쳐 페이지 수정됨
스킨 가중치를 포함하도록 업데이트됨(2019.1)