본문 바로가기
Programming/Unity

[Unity3D] 카메라 거리에 따라 오브젝트 활성화/비활성화

by 타임박스 2020. 12. 4.
반응형


✔ Unity Runtime - Camera 거리에 따라 오브젝트 렌더링 활성화/비활성화

LOD Group Component 활용



 

어플리케이션은 화면에 표시된 수많은 모델링들을 렌더링합니다.

그리고 리소스에서 가장 많이 사용되는 것이 화면 렌더링이죠.

사용자가 특정 장면을 줌하는 것이 아닌 전체 장면을 보기위해 줌 아웃을 한다면 씬에 포함된 모든 오브젝트들을 렌더링 하게 됩니다. 

그럼 렌더링에 소요되는 시간이 증가되며 frame은 낮아질 수 밖에 없습니다.

장면 전체에 대해서 렌더링을 할 경우 조그만한 오브젝트가 보일까요?

보이지 않습니다. 굳이 보일 필요도 없구요.

보이지 않는다고 하지만 프로그램은 렌더링을 하고 있습니다. 

굳이 보일 필요가 없는 오브젝트를 어떻게 처리해야 할까?

아주 간단합니다. Unity에서 기능을 제공하고 있습니다. 

바로 LOD Group Component 입니다.

Fade Mode : 거리에 따라 오브젝트가 사라질때의 방법을 정의할 수 있습니다. ( 장면 전환이라고 보시면 됩니다. )

그리고 LOD 0, LOD 1, ... 등의 영역은 사용자가 임의로 조정이 가능합니다.

Renderers는 해당 LOD 레벨에 보여질 객체를 추가할 수 있습니다.

아래 예제를 참조하세요.

 

1. LOD Group Component 추가

테스트를 위해 Cube와 Sphere3개를 만들어서 테스트 하겠습니다.

LOD Group을 추가할 대상 오브젝트를 클릭 -> Add Component -> LOD Group 추가

(LOD Group 추가할 대상은 보통 최상위 오브젝트를 지정하시면 됩니다. 선택은 자유...)

<그림 1> Add Component 추가

2. Renderers 추가

<그림 2> 추가된 화면

추가되면 위와 같이 컴포넌트가 나타납니다.

디폴트로 LOD 단계는 4개로 구성되어있습니다.

단계를 줄이거나 추가하고 싶으면 마우스 우클릭 -> 추가 or 삭제 하시면 됩니다.

이제 Renderers를 추가해보겠습니다.

LOD 0(100%) 카메라가 가까이 왔을때를 나타냅니다.

LOD 0을 클릭 -> Add 버튼 클릭

Add버튼을 클릭하면 추가할 대상오브젝트들이 표시됩니다. 

0레벨은 모두 표시되야 하니 Cube를 선택 ( 하위 자식들 자동으로 들어가게 됩니다 )

 

3. 렌더링 확인하기

LOD 0을 설정했으니 어떻게 동작되는지 확인해봅니다.

동작 확인은 LOD Group Component에서 하늘색의 카메라 모양 핸들러가 있습니다. 

눌러서 좌우 드래그.. 

아래는 LOD 0일떄 화면

 

그리고 아래는 LOD 1일때 화면

아래처럼 화면이 변한 것을 볼 수 있습니다. 

LOD 1에는 Renderers를 아무것도 추가하지 않았기 때문에 모두 안보이게 됨.

이렇게 단계적으로 오브젝트들의 렌더링을 제어하여 성능을 최적화할 수 있습니다.

 

감사합니다.

반응형

댓글