VR 콘텐츠 제작

디스크 골프 [#20] - 맵 새로 만들고 최적화하기

송현호 2023. 12. 29. 16:12

원래 맵을 터레인을 사용해서 만들었었는데 터레인을 사용하니 vr기기로 앱을 돌릴때 렉이 너무 많이 걸린다는 것을 깨달았다.

터레인은 메시자체가 무겁기도하고 아무래도 이번에 제작한 맵의 크기가 크다보니 기기가 감당할 정도의 성능으로 돌리기가 어려웠다.

결국 터레인의 해상도를 줄이고 최적화를 해서 프레임을 올렸지만 해상도를 낮추다보니 터레인의 퀄리티가 매우 안좋아졌다.

그래서 생각한게 터레인이 무거운 이유는 맵을 만들면서 터레인의 버텍스 수가 많아지기 때문인데 터레인을 평지로 맞추고, 원래 산맥이 있던 자리를 돌 프리펩으로 대체해서 사용하는 방법이다.

 

그래서 일단 만들어 놓은 터레인을 만일을 대비해 복사한 다음, Flatten 버튼을 눌러서 기존에 있던 터레인을 평지로 만들어주었다.

 

 

그리고 지금 사용하는 에셋에는 5가지 종류의 돌이 있는데 5가지 종류의 돌을 반복해서 사용하면 패턴이 똑같아지므로

사이즈 회전값등을 변경하면서 맵을 만들어줬다.

 

 

빌드해서 파일을 만든 다음 vr기기로 실행해보았다.

그런데 전에 나타났던 현상까지는 아니지만 vr기기가 렉이 걸리고 실행 중 프레임이 10까지 떨어 졌다.

 

그래도 처음에 터레인을 만들었던 것에 비하면 나름대로 렉이 덜 걸리는 것 같다.

렉을 줄이기 위해 먼저 라이트맵을 만들어 줬다,

라이트맵을 사용할 경우 조명정보를 텍스처로 저장하여 렌더링 성능을 향상시킬 수 있다.

https://medium.com/zigbang/%EB%9D%BC%EC%9D%B4%ED%8A%B8-%EB%A7%B5-%ED%9A%A8%EC%9C%A8%EC%A0%81%EC%9C%BC%EB%A1%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-eab4604c6318

 

라이트 맵 효율적으로 사용하기

이번 포스팅에선 3D 그래픽스 분야에서 널리 사용되고 있는 기술 중 하나인 라이트맵에 대해 설명하고, 간단한 사용 방법과 함께 라이트맵을 효율적으로 활용하기 위한 테크닉을 소개하고자 합

medium.com

 

 

그리고 오클루전 컬링을 사용하자

 

오클루전 컬링(Occlusion Culling)은 다른 오브젝트에 가려진 오브젝트를 렌더링하지 않는 기술로 렌더링 성능을 크게 향상 시킬 수 있다.

https://docs.unity3d.com/kr/530/Manual/OcclusionCulling.html

 

오클루전 컬링 - Unity 매뉴얼

오클루전 컬링(Occlusion Culling)은 다른 오브젝트에 가려(오클루전된) 카메라에 보이지 않는 오브젝트의 렌더링을 비활성화하는 기능입니다. 3D 컴퓨터 그래픽스에서는 대부분의 경우 카메라에서

docs.unity3d.com

 

 

Occlusion Static과 Occludee Static을 체크하자 (자식 포함) 

 

 

그리고 윈도우 렌더링탭에서 오클루전 컬링을 선택한다음

 

 

Bake 버튼을 눌러주면 끝이다.

 

3번째로 정적 배칭 기능을 이용하였다.

 

정적 배칭(Static Batching)은 움직이지 않는 오브젝트의 메시를 결합하는 CPU가 간단한 드로우콜을 실행하도록 한다.

https://docs.unity3d.com/kr/2021.3/Manual/static-batching.html

 

정적 배칭 - Unity 매뉴얼

정적 배칭은 드로우 콜을 줄이기 위해 움직이지 않는 메시를 결합하는 드로우 콜 배칭 메서드입니다. 정적 배칭은 결합된 메시를 월드 공간으로 변환하고 이러한 메시를 위한 하나의 공용 버텍

docs.unity3d.com

 

 

그리고 빌드한 다음 실행해보니 프레임이 60에서 70사이를 유지하는 것을 확인할 수 있었다.