[nDisplay] Configuration 파일

·2021년 12월 9일

Unreal Engine

목록 보기
1/1

nDisplay를 적용하기 위해서는 Configuration File을 작성해야함

각각 포함해야 하는 Config 정보
Cluster Node > Window > Viewport > Projection > Screen

1. Cluster Node Configurations

  • Cluster는 nDisplay 네트워크에서 하용하는 각각의 언리얼 어플리케이션 인스턴스에 필요한 것
  • Window Configuration의 레퍼런스를 지녀야 함
  • 어플리케이션 인스턴스를 실행할 컴퓨터에 대한 정보 선언 (hostname, IP주소)
    - 여러개의 클러스터 노드에 각각 다른 컴퓨터 배정 가능
    - 같은 호스트상에 실행되는 여러개의 클러스터 노드 가능
  • master 클러스터는 master=true 선언 필수, sound도 마스터에서만 true 하는 것이 일반적인듯
  • GPU 여러개 사용하는 경우 클러스터 별 GPU 배정 가능

2. Window Configurations

  • 프로그램 메인 윈도우에 대한 설정 사항 지정 (크기, 창 위치, 전체화면)
  • 1개 이상의 Viewport Config 넘겨줘야 함 (윈도우 하나에 여러 뷰포트 넘기기 가능)
  • Postprocess Config 여기서 넘겨줄 수 있음, 여러개 넘길시 순서대로 적용
  • fullscreen false 지정하면 크기 지정해주어야 함

3. Viewport Configurations

  • Window당 그려야할 사각형 공간에 대한 설정
  • Projection Config, Camera Config 필수적으로 지정해줘야함
  • Offset 지정 해줘야 하는 경우 : 출력 화면 프로젝터가 겹칠 경우, 하나의 윈도우에 여러개의 뷰포트를 각각 다른 위치에 그려야 하는 경우
  • Buffer Ratio : 최종 출력 화면 렌더 타겟의 해상도 조절
    - 0.0~1.0 사이의 값, 1.0이 가장 많은 사양을 요구함(최고품질)
    - 유튜브 튜토리얼에서는 0.8을 가장 추천하였음, 프로젝션 컴퓨터의 사양에 따라 조절
  • 사용할 GPU 사용 가능, default 값은 0번째 GPU
  • 다른 어플리케이션에 텍스쳐를 전송해야 할 시 share 옵션으로 Texture Sharing 켜야함

4. Projection Configurations

  • Viewport Config에서 이거 하나씩 지정해야함
  • 일반적으로 simple projection type 사용
    - mpcdi, easyblend, vioso, domeprojection 타입이 있는데 이건 함께 사용하는 소프트웨어에 따라 지정해주는것으로 보임
    - 이 다른 타입들은 곡면에 프로젝션 할때 이미지 왜곡하거나 변형시켜줘야 할 때 사용함
    - Projection Blend는 겹치는 부분에 대한 처리를 의미하는것으로 보임
    - MPCDI는 Multiple Projection Common Data Interchange의 약자 (뭔가 공연장에서 쓰이는듯)
  • 우리의 경우에는 그냥 simple projection을 사용하도록 하자
  • [projection] id=proj_simple_LT type=simple screen=scr_LT
    - scr_LT라는 screen config에서 정의된 절두체 사용시 simple projection의 예시 선언
    - 아무런 왜곡도 변형도 없이 그냥 그리는 방법임
  • simple projection 사용하면 screen config 무조건 지정해줘야 함

5. Screen Configurations

  • simple projection 타입으로 그릴때 사용할 절두체에 대한 정보 정의
  • 절두체의 각 면을 screen config으로 정의해줘야함
  • 화면 피봇 포인트는 절두체의 중점
  • 오브젝트 부모로 사용할 Scene Node Config 여기에서 지정
    - 이거 지정하면 loc, rot 파라미터 부모에게 relative됨
  • VR tracker도 여기에서 지정해줘야함

6. PostProcess Configurations

  • Unreal Engine Instance Window에다가 포스트 프로세싱 어떻게 먹일지
  • OutputRemap, TextureShare 두가지를 지원
    - OutputRemap : uv 매핑된 obj파일 지정해주면 그거에 맞게 nDispay로 생성된 화면을 변형시켜줌
    - TextureShare : 다른 프로그램에서 텍스쳐 받아서 특정 뷰포트에 그릴 수 있음

7. Camera Configurations

  • 클러스터들은 모두 같은 지점에서의 장면을 그림 > 이 지점에서 각각의 장면으로의 뷰포인트 정의 해주는 부분
  • 런타임 시 이 뷰포트들 끼리 바꿔치기 가능
  • 뷰포인트 VR Tracker로부터 받아올 수 있도록 설정 가능
  • loc, rot으로 부모로부터의 offset 지정 가능한 것으로 보임 (직접 해보자)

8. Scene Node Configurations

  • 3D에서 변환 하나하나를 내포하는 씬 노드 hierarchy 정의
  • 다른 Configuration 파일에서 정의한 3D상에서 회전 이동 하는 모든 것들 (카메라, 스크린)의 부모로 사용 가능
  • 각각 요소들 간의 공간적 관계성 표현
  • 얘도 VR 트래킹으로 할 수 있음 (카메라 처럼)
  • [scene_node] id=vr_space_root loc="X=0.Y=0,Z=0" rot="P=0,Y=0,R=0"
    [scene_node] id=walls_front_group loc="X=2.Y=0,Z=0" rot="P=0,Y=0,R=0" parent= vr_space_root
    - child node가 2 미터씩 오프셋 가지게 하는 예시

9. Input Configurations

  • Unreal Engine Input System에 이벤트 넘길 디바이스, 블루프린트에 input event 실행할 디바이스 정의
  • Input Setup Configuration 연결 할 수 있음
  • [input] id=ControlKeyboard type=keyboard addr=Keyboard0@192.168.0.1 reflect=ue4
    - 키보드 연결 예시
  • type : tracker (VR tracker), analog (Axis), button (boolean), keyboard
  • addr Format : DEVICENAME@SERVER_ADDRESS:SERVER_PORT
    - VRPN 서버 주소, VRPN 서버 리슨 포트 (지정 안할시 3883)

10. Input Setup Configurations

  • nDisplay 블루프린트 input node에 채널이나 키 바인딩할 수 있음
  • [input_setup] id=keyboard0 key=Space bind="nDisplay Button 3"
    - 키보드 바인딩 예시

11. General Configurations

  • Optional으로 나와있음, 클러스터 전반적인 구동에 관한 옵션 지정
  • swap sync policy : 결과 동기화 방식 (대체로 1 사용하는것으로 보임, Default 0)
    - 0: no synchronization (VSync=0)
    - 1: Software swap synchronization (VSync=1)
    - 2: NVIDIA swap lock (only for NVIDIA cards rendering with DirectX11 and DirectX12)
  • ue4 input sync policy : 언리얼 입력을 nDisplay에 replicate 하는 방식 (Default 1)
    - 0: Native UE4 input is processed only by the primary node. No replication is done to other cluster nodes
    - 1: All native input that the primary node receives is replicated to all other cluster nodes as well

12. 그 외

  • Network Configuration : Timeout 설정 가능
  • Info Configuration : nDisplay와 언리얼 엔진과 호환 가능한 버전 지정
    - 이거 손으로 하지 말래 nDisplay 런처가 자동으로 지정해줌
  • Custom Configuration Parameters : 클러스터 노드에게 배정할 key-value pair 지정 가능
    - 블프나 C++에서 런타임 시 필요하면 받아올 수 있는 식별 값 지정하는 것으로 보임
profile
🍒ɢᴀᴍᴇ ᴘʀᴏɢʀᴀᴍᴍᴇʀ

0개의 댓글