[내일배움캠프 본 캠프 66일차] 상세보기 카메라를 분리하는 이유

2025. 12. 31. 23:16본 캠프

 

기존의 상세보기용 카메라 및 매니저는 플레이어를 항상 따라다니는 구조였었는데

첫번째는 당시에는 최상위 인풋처리를 통해 플레이어/상세보기/UI등을 나누는 구조가 정립되지 않아서

플레이어가 입력처리의 메인이었기 때문이었다. 

이제 InputManager라는 최상위 입력을 받아서 각 역할에 맞게 배분해주는 관리자가 생겼기 때문에

Player와 InspectionManager는 서로 모르는 느슨한 결합상태에서 이벤트를 통해 신호만 주고받는 관계로 바뀌었고

 

렌더링과 동기화 비용을 줄이기 위해 플레이어 프리펩에서 해당 기능을 분리하도록 결정했다.

 

만약 계속해서 움직이는 오브젝트인 플레이어의 하위에 모델링인 뼈 말고도

다양한 기능을 갖춘 오브젝트들이 계속 하위에 존재하게 된다면 어떤 일이 생길까?

 

-각 Renderer는 매 프레임단위로 변경된 Transform을 기반으로 Culing을 계산하게되고 Particle이나 SkinnedMeshRenderer 등 효과를 위한 다양한 것들이 추가될 수록 CPU-GPU 동기비용이 계속해서 늘어나게 될 것이다.

 

-하위 오브젝트에 Update 호출 부분에서 Transform을 수정하게 될 시 호출 수도 계속 늘어나고 캐시 미스 현상도 생기면서 다양한 오류들이 발생할 확률이 매우 높아진다.

 

즉 이런 구조를 만들 때는 '부모 이동 = 자식 Transform 재계산' 이라는 걸 항상 염두에 둬야한다.

 

이제 분리를 통해서 인스펙션 카메라는 고정된 상태로 항상 월드에 존재하며 플레이어가 어디를 움직여도 신호만 주면

그때 프리펩을 통해 '고정된' 위치에서 생성된 모습을 찍어서 RawImage 형태로 가공해 Screen에 표시만 하면 된다.

 

RawImage자체도 해상도를 줄인다면 렌더링 측면에서는 더욱 좋은 비용절감 효과를 가져올 것이다.