Version: Unity 6.0 (6000.0)
언어 : 한국어
CullingGroup API를 사용하여 컬링 설정
컬링 그룹 만들기

CullingGroup API 소개

컬링 그룹은 사용자 시스템을 Unity의 컬링 및__ LOD__디테일 수준(LOD)을 참조하십시오.
See in Glossary
파이프라인으로 통합하는 방법을 제공합니다. 이 API는 다음과 같은 여러 용도로 사용할 수 있습니다.

  • 군중을 시뮬레이션하면서 현재 실제로 보이는 캐릭터에 대해서만 전체 게임 오브젝트 포함
  • Graphics.DrawProcedural 기반 GPU 파티클 시스템을 빌드하되 벽 뒤에 있는 파티클 시스템의 렌더링 건너뜀
  • 플레이어가 적이 뷰에 갑자기 ‘튀어’ 나오는 것을 보지 못하도록 적을 스폰하기 위해 카메라에서 숨기는 스폰 포인트 추적
  • 캐릭터가 가까울 때는 전체 품질 애니메이션과 AI 계산을 사용하고 멀리 있을 때는 품질이 더 낮고 더 저렴한 동작으로 전환
  • 10,000개의 마커 포인트를 씬에 포함하고 플레이어와 포인트의 거리가 1m 이내가 될 때 효율적으로 알아냄

이 API는 바운딩 구체의 배열을 제공하는 방식으로 작동합니다. 그러면 특정 카메라에 대한 구체의 상대적인 가시성이 LOD 레벨 숫자처럼 처리할 수 있는 ‘거리 밴드’ 값과 함께 계산됩니다.

CullingGroup API 베스트 프랙티스

컬링 그룹을 프로젝트에 적용할 수 있는 방법을 고려할 때는 컬링 그룹 디자인의 다음과 같은 측면을 고려해야 합니다.

가시성 사용

컬링 그룹이 가시성을 계산하는 모든 볼륨은 바운딩 구체, 즉 실제로는 위치(구체의 중심)와 반지름 값으로 정의됩니다. 성능상의 이유로 다른 바운딩 셰이프는 지원되지 않습니다. 실제로는 컬링하려는 오브젝트를 완전히 둘러싸는 구체를 정의하게 됩니다. 더 정확하게 맞춰야 하는 경우 여러 구체를 사용하여 오브젝트의 여러 부분을 덮고 모든 구체의 가시성 상태를 기반으로 결정을 내리는 것이 좋습니다.

가시성을 평가하기 위해 컬링 그룹은 어떤 카메라 가시성을 계산해야 하는지 알아야 합니다. 현재 하나의 컬링 그룹은 하나의 카메라만 지원합니다. 여러 카메라에 대한 가시성을 평가해야 하는 경우 카메라당 하나의 컬링 그룹을 사용하고 결과를 조합해야 합니다.

컬링 그룹은 절두체 컬링과 정적 오클루전 컬링을 기반으로 가시성을 계산합니다. 동적 오브젝트는 잠재적 오클루더로 고려되지 않습니다.

거리 사용

컬링 그룹은 일부 레퍼런스 지점(예: 카메라 또는 플레이어의 위치)과 각 구체에서 가장 가까운 지점 간의 거리를 계산할 수 있습니다. 이 거리 값은 직접 제공되지 않지만, 추가한 임곗값 세트를 사용하여 분리된 ‘거리 밴드’ 정수 결과를 계산하기 위해 양자화됩니다. 이러한 거리 밴드를 ‘근거리’, ‘중간 거리’, ‘원거리’ 등으로 해석해야 합니다.

컬링 그룹은 오브젝트가 한 밴드에 있다가 다른 밴드로 이동할 때 콜백을 제공하여 해당 오브젝트의 동작을 CPU 리소스를 덜 사용하는 동작으로 변경하는 등의 작업을 수행할 수 있는 기회를 부여합니다.

마지막 거리 밴드를 넘어선 구체는 보이지 않는 것으로 간주되므로, 아주 멀리 있는 오브젝트를 완전히 비활성화하는 컬링 구현을 쉽게 구성할 수 있습니다. 이 동작을 원치 않는 경우 최종 임곗값이 무한한 거리에 있도록 설정하면 됩니다.

컬링 그룹 하나에 레퍼런스 포인트 하나만 지원됩니다.

성능과 디자인

CullingGroup API는 씬을 변경하고 바운딩 구체의 새로운 가시성 상태를 즉시 요청할 수 있는 기능을 제공하지 않습니다. 성능상의 이유로 컬링 그룹은 전체 카메라에 대한 컬링을 실행하는 동안만 새로운 가시성 정보를 계산합니다. 이 시점에 콜백 또는 컬링 그룹 쿼리 API를 통해 정보를 사용할 수 있습니다. 실제로는 비동기식 방식으로 컬링 그룹에 접근해야 합니다.

컬링 그룹에 제공하는 바운딩 구체 배열은 복사되지 않고 컬링 그룹에서 참조됩니다. 즉, SetBoundingSpheres에 전달하는 배열에 대한 레퍼런스를 유지해야 하며, SetBoundingSpheres를 다시 호출하지 않고도 이 배열의 콘텐츠를 수정할 수 있습니다. 동일한 구체 세트의 가시성과 거리를 계산하는 여러 컬링 그룹(예: 여러 카메라)이 필요한 경우 모든 컬링 그룹이 동일한 바운딩 구체 배열 인스턴스를 공유하는 것이 효율적입니다.

CullingGroup API를 사용하여 컬링 설정
컬링 그룹 만들기