ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 240506~240510 화면 분할 (렌더 타겟,UMG) (1)
    기록 2024. 5. 12. 17:00

    목표

    • 화면을 분리하여 플레이어1과 플레이어2의 플레이 화면을 띄우기
    • 특정 화면에 포스트프로세싱 효과 적용하기
    • 렌더링 최적화 하기

     

    > 작업내용 한판정리

    더보기
    1. 플레이어1의 화면을 가져오는 방법 (진행) 
      1. SceneCaputreComponents2D를 SpringArm에 달아 현재 카메라에서 캡쳐하는 내용을 그대로 가져올 수 있도록 (진행)
      2. SceneCaputreComponents2D의 씬캡쳐 결과를 정해놓은 렌더타겟에 복사할 수 있도록 (진행)
    2. 화면에 띄우는 방법
      1. 렌더타겟을 바탕으로 머티리얼과 머티리얼 인스턴스를 생성 (진행)
      2. 머티리얼 인스턴스를 이미지로 사용하는 UMG를 제작한다.
    3. 동시에 렌더링
      1. 플레이어1과 플레이어2가 역할에 빙의한 후 이벤트를 발생시켜 렌더타겟을 명확히 지정해준다.
    4. 루멘 적용
      1. SceneCaputreComponents2D가 캡쳐할 때 주변 머티리얼 색상(빛)이 적용받지 않는 문제
    5. 블러 효과
      1. 캐릭터가 hp가 0이 된다면 화면에 블러효과가 적용되고 respawn UI를 띄워야한다.
      2. SceneCaputreComponents2D에서 제공하는 MakePostProcessSettings기능을 사용하여 블러효과를 적용할 수 있도록 하였다.
    6. UMG렌더링 순서
      1. 생성된 순서대로 draw call을 하기 때문에 '플레이어 생성 → 렌더타겟 설정 → 분할화면 생성' 시 플레이어에 달려있는 위치 UI, 몬스터의 상호작용 ui 등이 보이지 않는 문제가 발생한다.
    7. tick이 적용되지 않아도 되는 UMG이미지
      1. 위젯 캔버스 중 hp퍼센트와 위치위젯, 상호작용 위젯과 같이 상황에 따라 다르게 적용되는 이미지가 있는 반면, 플레이어 초상, 고정된 노이즈 배경같이 변화가 없는 이미지가 있다. 이러한 이미지에 대해 최적화 처리가 필요하다고 생각한다.

    아이디어

    게임에서 화면에 렌더링 하는 방법이

     

    카메라를 이용하여 near, far, fov를 이용한 절두체를 만들고 해당 범위 안에 있는 오브젝트를 컬링하고

     

    컬링된 오브젝트들에 대해 프로젝션 뷰를 곱하면 한페이지짜리 이미지(렌더더타겟)가 나오고

     

    이것을 화면에 띠우는 방식이기 때문에 렌더 타겟을 가져오면 되겠다 라는 가지게 되었다


    참고

    https://www.youtube.com/watch?v=c4YCMK9L9qI

     

    다음과 같이 SceneCaputreComponents2D를 사용하여 거울에 반사되는 화면을 띄우는 방법이 있다는 것을 알게되었다.


     

    적용

    플레이어1의 화면을 가져오기 - SceneCaputreComponents2D, 렌더 타겟 

     

    1. 플레이어가 가지고있는 SpringArm아래에 (카메라와 같은 위치) SceneCaputreComponents2D를 추가하였다.

     

    2. 씬캡쳐 내용을 저장할 수 있는 렌더 타겟을 만든다.

     

     

    3. 씬 캡쳐의 텍스처 타깃에 방금 생성한 렌더 타겟을 설정한다.


    플레이어1의 화면을 가져오기 - 머티리얼, 머티리얼 인스턴스

     

    4. 렌더타겟을 메시 또는 이미지로 적용할 수 있도록 머티리얼을 생성한다. (UserInterFace 설정)

     

    5. RenderTarget을 텍스처로 사용하는 TextureSample로 연결한다.

     

    6. 해당하는 머티리얼 인스턴스를 생성하여 UMG에서 사용할 수 있도록 해둔다.

    댓글

Designed by Tistory.