0%

Unity

VR 롤러코스터 최적화 이슈에 대한 원인과 해결

한*현··수정됨 2026.07.21

VR 롤러코스터 최적화 이슈에 대한 원인과 해결

프로젝트 배경

VR 콘텐츠에서 롤러코스터는 높은 몰입감을 제공하는 대표적인 체험형 콘텐츠로, 직접 레일을 설계하고 주행 로직을 구현하게 되었습니다.

그러나 제한된 개발 일정 내에서

  • 레일 모델링

  • 곡선 기반 이동 로직 구현

을 동시에 구현하는 것은 현실적으로 부담스러운 일이었습니다.

따라서 직접 구현하기보다는 검증된 에셋을 활용하는 편이 합리적이라고 판단하였습니다.

레일 자동 생성 에셋 도입

선택한 에셋은 다음 기능을 제공했습니다.

  • 레일 포인트 배치

  • 배지어 곡선을 이용한 방향 조절 및 길이 조절

  • 레일 모델링 토글

  • 해당 경로를 따라 롤러코스터가 이동하는 기능

덕분에 레일 설계와 테스트를 매우 빠르게 진행할 수 있게 되었습니다.

이동 경로 오류

문제는 이동 경로에서 발생했습니다.

  • 롤러코스터가 어느 순간 레일 순서와 별개로 튀거나

  • 역주행 하는 것 같은 모습

을 보였습니다.

코드를 분석한 결과, 레일 참조 순서가 의도와 불일치하여 일어난 일이었습니다.

기존에는 FindGameObjectsWithTag를 통해 찾아서, 메모리에 생성된 순서대로 찾았으나, 시간이 지나거나 유니티를 새로 시작하면 이 순서가 뒤바뀌었습니다.

명확한 생성 순서를 찾아 리스트화하여 해결

원인을 찾은 후, 해결 방법은 명확했습니다.

레일은 Hierachy 창에 오브젝트로 존재했고, Hierachy 창의 이미 생성된 오브젝트들은 임의로 순서가 변경되지 않는다는 점을 주목하였습니다.

1772165402.png

레일 오브젝트가 모두 한 오브젝트의 자식으로 있기에, 반복문으로 자식 오브젝트들을 위에서부터 하나씩 리스트화 시켰고, 이 수정 이후 레일 순서대로 매끄럽게 움직였습니다.

성능 이슈

프로젝트 막바지에 새로운 문제가 나타났습니다.

  • 미세한 프레임 드랍

  • 체감되는 끊김

  • 부드러움 저하

Profiler 분석 결과

  • 급격히 휘어진 레일이 더 높은 메쉬를 가짐

  • 수백개의 레일이 생성되며, 레일 세그먼트 별 다수의 메쉬 생성

VR에서는 작은 성능 저하도 사용자에게 크게 느껴지는 특성이 있으므로, 훨씬 높은 프레임(72~90fps)을 유지할 필요가 있었습니다.

Occlusion Culling 적용

최종 해결 방법은 Occlusion Culling 적용이었습니다.

1772167492.png

시야에 보이지 않는 레일을 렌더링에서 제외하도록 베이크 한 결과

  • 드로우 콜 감소

  • GPU 부하 완화

  • 프레임 안정화

불필요한 렌더링을 줄이는 것만으로도 체감 성능이 유의미하게 개선되었습니다.

1772167589.png

정리

이번 사례를 통해 다음과 같은 점을 확인할 수 있었습니다.

  • 에셋 도입은 개발 속도를 높이지만, 구조 검증이 선행되어야 한다.

  • VR에서는 성능 최적화가 선택이 아닌 필수다.

  • 문제 해결의 핵심은 구조 파악에 있다.

읽기 도구

3분 읽기

이 글이 도움이 되었나요?

다음으로 읽기