고도 엔진에서 Viewport를 활용한 RenderTarget 처리, 특정 Viewport의 시야, 카메라를 텍스처로 꺼내는 방법 - Whitmem
고도 엔진에서 Viewport를 활용한 RenderTarget 처리, 특정 Viewport의 시야, 카메라를 텍스처로 꺼내는 방법
Game Development
2025-01-15 01:07 게시 7df89095beffd6154c3e

0
0
68
이 페이지는 외부 공간에 무단 복제할 수 없으며 오직 있는 그대로 게시되며 부정확한 내용을 포함할 수 있습니다. 법률이 허용하는 한 가이드 라인에 맞춰 게시 내용을 인용하거나 출처로 표기할 수 있습니다.
This page is not to be distributed to external services; it is provided as is and may contain inaccuracies.
SubViewport RenderTarget 처리 방법
어떤 특정 Viewport 안에 있는 카메라와 시야 등을 텍스처로 꺼내어 다양한 연출이나 효과를 내는 방법에 관한 것이다. SubViewPort를 생성하고 원하는 객체를 넣어 다른 장면에 존재하는 화면 처럼 분리할 수 있다.
기본적으로 일반 월드 안에 TileMapLayer와 Area2D 의 기본 구성요소만 있는 상태에서는 오른쪽과 같이 하나의 장면만으로 구성된다. 이 장면안에 맵이 있고 캐릭터가 움직이는 형태로 구현할 수 있다. 그런데 장면안에 또 다른 장면을 넣고 싶은 경우가 있다. 이 예시에서는 2D 게임이지만, 3D 1인칭 게임이나 3인칭 게임의 경우, 게임 안에서 게임을 플레이하는 경우가 그 예이다. 이미지 텍스처 위에서 수 많은 연산을 수행해도 되겠지만 비효율적이다. 따라서 장면을 따로 구성하여 그 장면안에서 실제 처리를 수행하고 그 장면의 카메라 이미지를 가져와 겉의 텍스처에 붙이는 것이다.
위 예시에서 SubViewport 를 하나 만들어 그 공간안에 똑같은 맵을 하나 만들었다. SubViewport는 눈에 보이지 않는 가상의 장면 공간이다. 이 장면의 미리보기는 오른쪽 Inspector 의 SubViewport에 보인다. 이 공간안에 존재하는 하위 객체들은 이 서브 뷰포트 내에서만 보인다.
이제 해당 서브 뷰 포트를 메인 뷰포트의 어딘가에 텍스처로 출력해야 한다. TextureRect라는 객체를 사용하겠다. 이 객체를 만들고 적당한 위치에 크기를 지정한다.
그리고 우측 텍스처 설정에서 ViewportTexture 을 새로 만들고,
뷰 포트를 SubViewport 로 지정한다. 해당 텍스처에 가상의 장면이 출력된다.
참고로 TextureRect 는 특정 이미지 텍스처를 출력하는 역할을 한다. 장면이 저렇게 늘어질 수 있는 것은 장면으로 출력된 이미지를 출력 단계에서 늘린 것이기 때문이다. 장면이 더 넓게 보이게 하기 위해서는 SubViewport 에서 뷰포트 크기를 늘려줘야 한다.
이 게시글의 SubViewport 는 비교적 간단한 요소에 대해서 이렇게 처리할 수 있는 것으로 보인다. 소스 코드상에서 가상의 ViewPort를 직접 생성하고, 장면을 인스턴스화 하여 ViewPort 하위에 등록하여 이미지로 출력되게 한 다음, 텍스처로 불러올 수 있다. 이런 경우 장면 단위로 작업할 수 있고, 약간의 코드 구성을 통해 여러 효과를 다양하게 적용할 수 있다.
댓글 0개
댓글은 일회용 패스워드가 발급되며 사이트 이용 약관에 동의로 간주됩니다.
확인
Whitmemit 개인 일지 블로그는 개인이 운영하는 정보 공유 공간으로 사용자의 민감한 개인 정보를 직접 요구하거나 요청하지 않습니다. 기본적인 사이트 방문시 처리되는 처리 정보에 대해서는 '사이트 처리 방침'을 참고하십시오. 추가적인 기능의 제공을 위하여 쿠키 정보를 사용하고 있습니다. Whitmemit 에서 처리하는 정보는 식별 용도로 사용되며 기타 글꼴 및 폰트 라이브러리에서 쿠키 정보를 사용할 수 있습니다.
이 자료는 모두 필수 자료로 간주되며, 사이트 이용을 하거나, 탐색하는 경우 동의로 간주합니다.