Version: 2021.3
언어: 한국어
Mesh Renderer 컴포넌트
Mesh Filter 컴포넌트

Skinned Mesh Renderer 컴포넌트

Skinned Mesh Renderer 컴포넌트는 변형 가능한 메시를 렌더링합니다. 변형 가능한 메시에는 스킨드 메시(뼈대와 바인드 포즈가 있는 메시), 블렌드 셰이프가 있는 메시, 천 시뮬레이션을 실행하는 메시가 포함됩니다.

일반 메시를 렌더링하기 위해서는 메시 렌더러메시 필터를 대신 사용합니다.

변형 가능한 메시 또는 변형 가능한 메시가 있는 모델을 씬에 추가하면 Unity는 해당 씬의 게임 오프젝트에 Skinned Mesh Renderer 컴포넌트를 추가합니다.

C# 코드에서 SkinnedMeshRenderer 클래스는 Skinned Mesh Renderer 컴포넌트를 나타냅니다. SkinnedMeshRenderer 클래스는 Renderer 클래스에서 많은 기능을 상속합니다. 이처럼 이 컴포넌트는 라인 렌더러트레일 렌더러와 같이 Renderer 를 상속받은 다른 컴포넌트와 공통점이 많습니다.

스킨드 메시 렌더러 가시성 문제 해결

Unity는 메시의 바운드를 사용하여 렌더링할지를 결정합니다. 전체 바운딩 볼륨이 액티브 카메라의 뷰 밖에 있는 경우 Unity는 메시를 렌더링하지 않습니다.

스킨드 메시 렌더러의 경우 메시 바운드는 메시가 변형함에 따라 변경됩니다. Unity는 임포트 시 존재하는 모든 애니메이션을 고려하여 최대 바운딩 볼륨을 계산하고 그 값을 사용하여 가시성을 결정합니다. 그러나 임포트 이후에 다음과 같은 상황이 발생하면 버텍스 또는 뼈대가 알려진 최대 바운드를 벗어날 수 있습니다.

  • 애디티브 애니메이션
  • 런타임 시 스크립트에서 뼈대의 포지션 변경
  • 버텍스 포지션을 변경하는 버텍스 셰이더 사용
  • 래그돌을 사용하는 경우

이런 상황이 발생한 경우 Unity가 메시의 가시성을 올바르게 결정하지 못할 수 있고 예상대로 표시하지 못할 수도 있습니다.

이러한 경우 다음 방법 중 하나를 사용하여 문제를 해결할 수 있습니다.

  • 바운드를 수정해 메시의 최대 잠재적 바운딩 볼륨을 일치시킵니다. 성능 향상을 위해 가능하면 이 옵션을 사용하십시오.
  • 오프스크린일 때 업데이트를 활성화하면 메시가 보이지 않는 경우에도 항상 Unity가 메시 바운드를 계속 계산합니다. 성능이 주요 관심 사항이 아니거나 바운딩 볼륨의 크기를 예측할 수 없는 경우(예: 래그돌을 사용하는 경우) 이 옵션을 사용합니다.

스킨드 메시 렌더러 인스펙터 레퍼런스

인스펙터 창에 표시된 Skinned Mesh Renderer 컴포넌트.
인스펙터 창에 표시된 Skinned Mesh Renderer 컴포넌트.

A: 프로퍼티
B: 머티리얼
C: 조명
D: 프로브
E: 추가 설정

프로퍼티

프로퍼티 설명
** Bounds** Unity가 메시가 화면 밖에 있는지 확인하는 데 사용하는 바운딩 볼륨을 설정합니다. Unity는 모델 파일의 메시와 애니메이션을 임포트할 때 바운드를 미리 계산하고, 씬 뷰에서 모델 주변의 와이어프레임으로 표시합니다.

오프스크린일 때 업데이트를 참으로 설정한 경우 Unity는 모든 프레임마다 이러한 바운드를 다시 계산하고 그 계산된 값을 사용하여 해당 프로퍼티를 덮어씁니다.

이 프로퍼티는 Mesh.Bounds API에 해당합니다.
BlendShapes Unity가 메시에 정의된 블렌드 셰이프와 함께 사용하는 가중치 값을 저장합니다.
Quality 버텍스에 영향을 줄 수 있는 뼈대의 최대 수에 대한 런타임 상한을 설정합니다.

Unity는 메시를 임포트할 때 1개에서 32개까지 원하는 뼈대 수로 모든 버텍스를 스킨닝할 수 있습니다. 영향력 있는 뼈대의 수가 많을수록 이동 중에 결과가 개선됩니다. 그러나 필요한 리소스도 증가하므로 성능에 영향을 미칠 수 있습니다.

성능상의 이유로 런타임 상한을 사용하는 것보다 임포트 시 버텍스에 영향을 주는 뼈대의 수를 설정하는 것이 좋습니다. 이렇게 하려면 모델 임포트 설정 창의 릭 탭에서 스킨 가중치 설정을 조정합니다.

이 설정을 사용하여 각 컴포넌트에 런타임 상한을 설정하는 것 외에도 Edit > Project Settings > Quality > Other > Skin Weights에서 프로젝트의 전역 제한을 설정할 수도 있습니다.

이 프로퍼티는 SkinnedMeshRenderer.quality API에 해당합니다.
Auto Quality Settings > Skin Weights에서 설정된 전역 제한을 사용합니다.


참고: 원하는 수의 스킨 가중치를 임포트하고 4개가 넘는 영향력이 있는 뼈대를 사용하고 싶다면 이 옵션을 선택하고 Skin WeightsUnlimited로 설정해야 합니다.
1 뼈대 각 버텍스에 뼈대를 하나만 사용합니다.
2 뼈대 각 버텍스에 최대 2개의 뼈대를 사용합니다.
4 뼈대 버텍스당 최대 네 개의 뼈대를 사용합니다. 하나의 버텍스에 영향을 주는 뼈대를 4개 넘게 허용하려면 Auto 설정을 사용합니다.
Update When Offscreen 이 옵션을 활성화하면 메시가 카메라에 보이지 않을 때에도 프레임마다 바운딩 볼륨을 계산할 수 있습니다. 이 옵션을 비활성화하면 게임 오브젝트가 화면 밖에 있을 때는 스키닝을 멈추고 게임 오브젝트가 화면에 다시 들어오면 다시 시작합니다.

성능상의 이유로 기본적으로 비활성화되어 있습니다.

이 프로퍼티는 SkinnedMeshRenderer.updateWhenOffscreen API에 해당합니다.
Mesh 렌더러가 사용하는 메시를 설정합니다. 메시는 유효한 바인드 포즈와 스킨 가중치를 포함하거나 블렌드 셰이프를 사용하거나 천 시뮬레이션을 실행해야 합니다. 메시가 이러한 기술을 사용하지 않는 경우 메시 렌더러와 메시 필터를 사용하는 것이 좋습니다.

해당 프로퍼티는 SkinnedMeshRenderer.sharedMesh입니다.
Root bone 골격의 “root”인 트랜스폼을 설정합니다. 바운드는 이 트랜스폼을 따라 함께 이동합니다.
Rendering Layer Mask 이 프로퍼티는 Unity가 이 렌더러를 할당할 렌더링 레이어를 결정합니다. 이 프로퍼티를 사용하여 렌더링별 추가 레이어 마스크를 지정할 수 있습니다.

이 프로퍼티는 Renderer.renderingLayerMask API에 해당합니다.

Unity는 스크립터블 렌더 파이프라인을 사용한 경우에만 이 프로퍼티를 표시합니다.
Renderer Priority 우선 순위를 기준으로 렌더러를 정렬합니다. 낮은 값이 먼저 렌더링되고 높은 값이 나중에 렌더링됩니다.

이 프로퍼티는 Renderer.rendererPriority API에 해당합니다.

Unity는 고해상도 렌더 파이프라인을 사용한 경우에만 이 프로퍼티를 표시합니다.

머티리얼

Unity의 2020.1 HDRP 템플릿 예시 프로젝트에서 메시의 와이어프레임 뷰
Unity의 2020.1 HDRP 템플릿 예시 프로젝트에서 메시의 와이어프레임 뷰

Materials 섹션에는 이 컴포넌트가 사용하는 모든 머티리얼이 나열됩니다.

프로퍼티 설명
Size 머티리얼 리스트 요소의 수입니다.

요소의 수를 줄일 경우 Unity는 리스트 끝에서 요소를 삭제합니다. 요소의 수를 늘리면 Unity는 리스트의 끝에 새로운 요소를 추가합니다. Unity는 리스트의 끝에서 요소가 사용하는 동일한 머티리얼로 새로운 요소를 채웁니다.
Element 리스트의 머티리얼입니다. 머티리얼 에셋을 각 요소에 할당할 수 있습니다.

기본적으로 Unity는 머티리얼의 이름을 토대로 리스트를 알파벳 순으로 정렬합니다. 이 리스트는 순서를 변경할 수 있으며 Unity는 해당 순서가 변경되면 요소의 수를 자동으로 업데이트합니다.

참고: 하위 메시보다 머티리얼이 더 많은 경우 Unity는 남은 머티리얼을 각각 사용하여 마지막 하위 메시를 렌더링합니다. 머티리얼이 완전히 불투명하지 않은 경우 다른 머티리얼과 겹쳐지면서 흥미로운 시각적 효과를 만들 수 있습니다. 그러나 완전히 불투명한 머티리얼은 이전 레이어를 덮어쓰기 때문에 Unity가 마지막 하위 메시에 적용하는 추가 불투명 머티리얼은 성능에 부정적인 영향만 미칠뿐 아무런 이점이 없습니다.

조명

Light 섹션에는 조명과 관련된 프로퍼티가 포함되어 있습니다.

프로퍼티 설명
Cast Shadows 적당한 광원이 비출 때 이 렌더러가 그림자를 드리우는 경우와 방법을 지정합니다.

이 프로퍼티는 Renderer.shadowCastingMode API에 해당합니다.
On 그림자를 드리우는 광원이 비추면 이 렌더러가 그림자를 드리웁니다.
Off 이 렌더러는 그림자를 드리우지 않습니다.
Two-sided 이 렌더러는 양면 그림자를 드리웁니다. 즉 평면이나 쿼드와 같은 단면 오브젝트는 광원이 메시 뒤에 있더라도 그림자를 드리울 수 있습니다.

베이크된 전역 조명 또는 인라이튼 실시간 전역 조명이 양면 그림자를 지원하는 경우 머티리얼이 반드시 양면 전역 조명을 지원해야 합니다.
Shadows Only 이 렌더러는 그림자를 드리우지만 렌더러 자체는 표시되지 않습니다.
Receive Shadows Unity가 이 렌더러에 그림자 캐스트를 표시하는 경우를 지정합니다.

이 프로퍼티는 이 씬에 대해 베이크된 전역 조명 또는 인라이튼 실시간 전역 조명을 활성화하는 경우에만 효과를 발휘합니다.

이 프로퍼티는 Renderer.receiveShadows API에 해당합니다.
Contribute Global Illumination 전역 조명 계산에 이 렌더러가 사용되며 베이크 타임 시 발생합니다.

이 프로퍼티는 씬에 대해 베이크된 전역 조명 또는 인라이튼 실시간 전역 조명을 활성화하는 경우에만 효과를 발휘합니다.

이 프로퍼티를 활성화하면 게임 오브젝트의 정적 에디터 플래그에서 GI 플래그 기여가 활성화됩니다. 이는 StaticEditorFlags.ContributeGI API에 해당합니다.
Receive Global Illumination Unity는 베이크된 라이트맵이나 런타임 라이트 프로브에서 전역 조명 데이터를 이 렌더러에 제공합니다.

이 프로퍼티는 Contribute Global Illumination을 활성화하는 경우에만 편집할 수 있습니다. 이 씬에 대한 베이크된 전역 조명이나 인라이튼 실시간 전역 조명을 활성화하는 경우에만 효과를 발휘합니다.

이 프로퍼티는 MeshRenderer.receiveGI API에 해당합니다.
Lightmaps Unity는 라이트맵에서 이 렌더러에 전역 조명 데이터를 제공합니다.
Light Probes Unity는 씬의 라이트 프로브에서 이 렌더러에 전역 조명 데이터를 제공합니다.
Prioritize Illumination 이 프로퍼티를 활성화하면 인라이튼 실시간 전역 조명 계산에 이 렌더러를 항상 포함할 수 있습니다. 이를 통해 성능상의 이유로 전역 조명 계산에서 일반적으로 제외되는 멀리 떨어진 이미시브에도 렌더러가 영향을 받는지 확인합니다.

이 프로퍼티는 게임 오브젝트의 정적 에디터 플래그에서 Contribute Gi가 활성화되고 프로젝트는 빌트인 렌더 파이프라인을 사용하며 인라이튼 실시간 전역 조명이 씬에서 활성화된 경우에만 표시됩니다.

프로브

Probes 섹션에는 라이트 프로브반사 프로브에 관한 프로퍼티가 포함되어 있습니다.

프로퍼티 설명
Light Probes 이 렌더러가 라이트 프로브 시스템에서 빛을 수신하는 방법을 설정합니다.

이 프로퍼티는 Renderer.lightProbeUsage API에 해당합니다.
Off 렌더러는 보간된 라이트 프로브를 사용하지 않습니다.
Blend Probes 렌더러는 보간된 라이트 프로브 한 개를 사용합니다. 이는 기본 값입니다.
Use Proxy Volume 렌더러는 보간된 라이트 프로브의 3D 그리드를 사용합니다.
Custom Provided 렌더러는 MaterialPropertyBlock에서 라이트 프로브 셰이더의 균일한 값을 추출합니다.
Proxy Volume Override Light Probe Proxy Volume 컴포넌트가 있는 다른 게임 오브젝트에 레퍼런스를 설정합니다.

이 프로퍼티는 Light ProbesUse Proxy Volume으로 설정된 경우에만 표시됩니다.
Reflection Probes 렌더러가 반사 프로브 시스템에서 반사를 수신하는 방법을 설정합니다.

이 프로퍼티는 Renderer.probeAnchor API에 해당합니다.
Off 반사 프로브를 비활성화합니다. Unity는 반사에 대해 스카이박스를 사용합니다.
Blend Probes 반사 프로브를 활성화합니다. 블렌딩은 반사 프로브 사이에서만 발생합니다. 캐릭터가 다른 조명 설정을 사용한 영역 사이를 전환할 수 있는 실내 환경에서 유용합니다.
Blend Probes and Skybox 반사 프로브를 활성화합니다. 블렌딩은 반사 프로브 사이 또는 반사 프로브와 기본 반사 사이에서 발생합니다. 야외 환경에서 유용합니다.
Simple 반사 프로브를 활성화하지만 블렌딩은 두 개의 중복된 볼륨이 있을 때 반사 프로브 사이에서 발생하지 않습니다.
Anchor Override 라이트 프로브 또는 반사 프로브 시스템을 사용할 때 보간 포지션을 결정하기 위해 Unity가 사용하는 변형을 설정합니다. 기본적으로 이는 렌더러의 지오메트리 바운딩 박스의 중심입니다.

이 프로퍼티는 Renderer.probeAnchor API에 해당합니다.

추가 설정

Additional Settings 섹션에는 추가 프로퍼티가 포함되어 있습니다.

프로퍼티 설명
Skinned Motion Vectors 이 옵션을 활성화하면 메시 스키닝 데이터를 이중 버퍼링하여 Unity가 스키닝된 모션을 보간한 후 모션 벡터 텍스처에 배치하도록 허용합니다. 이 작업은 많은 GPU 메모리를 소모하지만, 모션 벡터의 정확도가 높아집니다.
Dynamic Occlusion Dynamic Occlusion이 활성화되면 Unity의 오클루전 컬링은 정적 오클루더에 의해 카메라 뷰에서 차단될 때 이 렌더러를 컬링합니다. 이 동적 오클루전이 활성화되지 않으면 시스템은 정적 오클루더에 의해 카메라 뷰에서 차단되면 이 렌더러를 컬링하지 않습니다.

동적 오클루전은 기본값으로 활성화되어 있습니다. 이 옵션은 벽 뒤의 캐릭터 윤곽을 드로우하는 것과 같은 효과에 대해 비활성화합니다.
Mesh Renderer 컴포넌트
Mesh Filter 컴포넌트