[UE5] Scene Capture 2D - 실시간 카메라 구현
탱크 슈팅게임에서 전체적인 전투 현황을 생생하게 볼 수 있도록 경기장의 전광판처럼 실시간으로 씬을 보여주는 기능을 만들어보려 한다.
이번 포스팅의 주제는 Scene Capture 2D라는 Actor 클래스를 사용해서 기능을 구현하기다.
Level에 Scene Capture 2D 액터를 배치하면 카메라 모양의 액터가 배치된다. 인스턴스는 CaptureComponent2D 컴포넌트를 가지고 있다.
Scene Capture 2D 액터가 보고 있는 화면을 Render Target Texture에 실시간으로 기록하고 이를 Material의 Texture로 설정한다.
마지막으로 배치한 액터(큐브)의 Material을 앞서 만든 M_RealtimeCapture로 지정하여 큐브에 실시간으로 화면이 출력되도록로 실시간 카메라 기능을 구현하려 한다.
우선 Material과 Render Target 애셋을 하나씩 만들자.
다음으로 SceneCapture2D의 Texture Target을 앞서 만든 RT_RealtimeCapture로 지정한다.
M_RealtimeCapture Material 블루프린트를 열어 Material Graph에서 아래와 같이 Render Target 객체인 RT_RealtimeCapture를 Texture로 받아오도록 하자.
M_Realtime Capture의 Details 패널에서 Shading Model을 Unlit으로 바꾸어 Render Target의 Texture를 조명 없이 그래도 볼 수 있도록 하였다.
이제 Material을 보면 Scene Capture 카메라가 보고 있는 화면이 그대로 입혀진 것을 확인할 수 있다.
이제 Material을 입힐 액터를 Level에 배치한다.
벽면에 큰 큐브를 배치하고 Material을 위에서 만든 M_RealtimeCapture로 설정한다.
맵 중앙에서 높이 Scene Capture Camera를 배치하면 아래 사진처럼 위에서 카메라가 보는 장면이 실시간으로 큐브에 송출되는 것을 볼 수 있다.
Scene Capture 2D 액터의 ScreenCaptureComponent2D가 위 기능을 담당하기 때문에 Component를 적 터렛에 Attach 하면 아래처럼 적 시점을 출력하는 것도 가능하다.
투사체에 적용하여도 재미있는 장면을 연출할 수 있다.
Reference
[0] https://docs.unrealengine.com/4.27/en-US/Resources/ContentExamples/Reflections/1_7/
[1] https://www.youtube.com/watch?v=c4YCMK9L9qI