컬링 그룹은 사용자 시스템을 Unity의 컬링 및__ LOD__디테일 수준(LOD)을 참조하십시오.
See in Glossary 파이프라인으로 통합하는 방법을 제공합니다. 이 API는 다음과 같은 여러 용도로 사용할 수 있습니다.
이 API는 바운딩 구체의 배열을 제공하는 방식으로 작동합니다. 그러면 특정 카메라에 대한 구체의 상대적인 가시성이 LOD 레벨 숫자처럼 처리할 수 있는 ‘거리 밴드’ 값과 함께 계산됩니다.
컬링 그룹을 프로젝트에 적용할 수 있는 방법을 고려할 때는 컬링 그룹 디자인의 다음과 같은 측면을 고려해야 합니다.
컬링 그룹이 가시성을 계산하는 모든 볼륨은 바운딩 구체, 즉 실제로는 위치(구체의 중심)와 반지름 값으로 정의됩니다. 성능상의 이유로 다른 바운딩 셰이프는 지원되지 않습니다. 실제로는 컬링하려는 오브젝트를 완전히 둘러싸는 구체를 정의하게 됩니다. 더 정확하게 맞춰야 하는 경우 여러 구체를 사용하여 오브젝트의 여러 부분을 덮고 모든 구체의 가시성 상태를 기반으로 결정을 내리는 것이 좋습니다.
가시성을 평가하기 위해 컬링 그룹은 어떤 카메라 가시성을 계산해야 하는지 알아야 합니다. 현재 하나의 컬링 그룹은 하나의 카메라만 지원합니다. 여러 카메라에 대한 가시성을 평가해야 하는 경우 카메라당 하나의 컬링 그룹을 사용하고 결과를 조합해야 합니다.
컬링 그룹은 절두체 컬링과 정적 오클루전 컬링을 기반으로 가시성을 계산합니다. 동적 오브젝트는 잠재적 오클루더로 고려되지 않습니다.
컬링 그룹은 일부 레퍼런스 지점(예: 카메라 또는 플레이어의 위치)과 각 구체에서 가장 가까운 지점 간의 거리를 계산할 수 있습니다. 이 거리 값은 직접 제공되지 않지만, 추가한 임곗값 세트를 사용하여 분리된 ‘거리 밴드’ 정수 결과를 계산하기 위해 양자화됩니다. 이러한 거리 밴드를 ‘근거리’, ‘중간 거리’, ‘원거리’ 등으로 해석해야 합니다.
컬링 그룹은 오브젝트가 한 밴드에 있다가 다른 밴드로 이동할 때 콜백을 제공하여 해당 오브젝트의 동작을 CPU 리소스를 덜 사용하는 동작으로 변경하는 등의 작업을 수행할 수 있는 기회를 부여합니다.
마지막 거리 밴드를 넘어선 구체는 보이지 않는 것으로 간주되므로, 아주 멀리 있는 오브젝트를 완전히 비활성화하는 컬링 구현을 쉽게 구성할 수 있습니다. 이 동작을 원치 않는 경우 최종 임곗값이 무한한 거리에 있도록 설정하면 됩니다.
컬링 그룹 하나에 레퍼런스 포인트 하나만 지원됩니다.
CullingGroup API는 씬을 변경하고 바운딩 구체의 새로운 가시성 상태를 즉시 요청할 수 있는 기능을 제공하지 않습니다. 성능상의 이유로 컬링 그룹은 전체 카메라에 대한 컬링을 실행하는 동안만 새로운 가시성 정보를 계산합니다. 이 시점에 콜백 또는 컬링 그룹 쿼리 API를 통해 정보를 사용할 수 있습니다. 실제로는 비동기식 방식으로 컬링 그룹에 접근해야 합니다.
컬링 그룹에 제공하는 바운딩 구체 배열은 복사되지 않고 컬링 그룹에서 참조됩니다. 즉, SetBoundingSpheres에 전달하는 배열에 대한 레퍼런스를 유지해야 하며, SetBoundingSpheres를 다시 호출하지 않고도 이 배열의 콘텐츠를 수정할 수 있습니다. 동일한 구체 세트의 가시성과 거리를 계산하는 여러 컬링 그룹(예: 여러 카메라)이 필요한 경우 모든 컬링 그룹이 동일한 바운딩 구체 배열 인스턴스를 공유하는 것이 효율적입니다.