본문 바로가기

레퍼런스/nDisplay

Switch Board Unreal

https://www.youtube.com/watch?v=lJcsB21vhJA&list=PLZlv_N0_O1gaXvxPtn8_THYN_Awx-VYeu&index=2

 

스위치보드로 하나의 애플리케이션에서 다수의 머신을 원격 제어합니다.

스위치보드(Switchboard) 는 다수의 원격 디바이스를 제어하는 Python 애플리케이션으로, 보조 애플리케이션인 스위치보드 리스너를 통해 디바이스와 커뮤니케이션합니다. 스위치보드 리스너(SwitchboardListener) 는 언리얼 엔진 C++ 애플리케이션이며 각 디바이스에서 TCP 소켓 서버를 실행하여 JSON 메시지를 스위치보드와 공유합니다.

스위치보드의 대표적인 기능은 다음과 같습니다.

  • 원격으로 디바이스에서 언리얼 엔진의 멀티 유저 세션을 시작합니다.
  • 다수의 디바이스에서 nDisplay를 실행합니다.
  • 임베드된 테이크 레코더(Take Recorder) 컨트롤로 녹화합니다.
  • 모든 디바이스를 특정 체인지리스트로 동기화하고 프로젝트와 언리얼 엔진을 소스로부터 빌드합니다.
  • 다음 디바이스에 연결하고 제어합니다. KiPro, Live Link Face, Shogun, SoundDevices.
  • 디바이스 플러그인을 추가하고 스위치보드(Switchboard)와 스위치보드 리스너(SwitchboardListener)를 커스텀 컨트롤로 확장합니다.

이 페이지에서는 스위치보드에서 이용 가능한 기능 중 일부를 다룹니다. 스위치보드를 처음 사용해 보려면 스위치보드 퀵스타트를 따라 하세요. 이용 가능한 모든 세팅의 구체적인 디테일은 스위치보드 세팅 레퍼런스를 참조하세요.

버추얼 프로덕션 역할

버추얼 프로덕션(Virtual Production) 플러그인에서 생성한 디바이스 역할을 스위치보드(Switchboard)에서 언리얼 디바이스에 할당할 수 있습니다. 디바이스 역할을 기반으로 언리얼 엔진에서 커스텀 로직을 실행할 수 있고, 커스텀 로직으로 스테이지 모니터의 이벤트에 필터를 적용할 수 있습니다. 역할은 프로젝트의 Config\Tags 폴더에 .ini 파일로 저장됩니다.

역할을 추가하려면 다음 단계에 따릅니다.

  1. 에디터 메인 메뉴에서 편집(Edit) > 프로젝트 세팅(Project Settings) 을 선택하여 프로젝트 세팅 창을 엽니다.
  2. 프로젝트 세팅  플러그인(Plugins) 섹션에서 버추얼 프로덕션(Virtual Production) 플러그인 세팅을 엽니다.
    이미지를 클릭하면 확대됩니다.
  3. 역할(Roles) 파라미터 옆의 편집(Edit) 을 선택하여 게임플레이 태그(Gameplay Tag) 드롭다운 창을 엽니다.
    이미지를 클릭하면 확대됩니다.
  4. 새 게임플레이 태그 추가(Add New Gameplay Tag) 를 펼치고 역할의 이름(Name)을 입력합니다. 새 태그 추가(Add New Tag) 를 선택하여 역할을 .ini 파일에 추가합니다.
    이미지를 클릭하면 확대됩니다.

역할은 디폴트로 DefaultGameplayTags.ini 에 저장됩니다. 프로젝트 세팅(Project Settings) 에서 새 .ini 파일을 생성하여 새 역할을 만들 때 소스(Source) 파일로 사용할 수 있습니다. 새 태그 소스 추가(Add New Tag Source) 를 펼쳐서 파일 이름을 입력한 다음, 새 소스 추가(Add New Source) 버튼을 눌러 새 파일을 만듭니다.

이미지를 클릭하면 확대됩니다.

기본적으로 스위치보드(Switchboard)는 VPRoles.ini 파일에서 역할을 찾습니다. 스위치보드 세팅에서 파일 이름을 설정하고 각 디바이스에 하나 이상의 역할을 할당할 수 있습니다. 역할은 언리얼 엔진 실행 시에 엔진으로 전달됩니다. 디바이스의 .ini 파일이 더 이상 유효하지 않는 등 역할이 지원되지 않는다면 스위치보드에 오류가 기록됩니다.

스위치보드에 어떤 역할이 있는지 보려면 디바이스에 연결된 스위치보드 리스너에 연결해야 합니다. 사용 가능한 역할은 스위치보드의 디바이스 세팅에서 확인할 수 있습니다.

이미지를 클릭하면 확대됩니다.

스위치보드에서 테이크 녹화

연결된 언리얼 디바이스에서 스위치보드(Switchboard)에 임베드된 테이크 레코더(Take Recorder) 기능을 사용하여 테이크를 녹화할 수 있습니다. 스위치보드는 녹화를 위해 OSC를 사용하여 언리얼 인스턴스(Unreal Instance)와 커뮤니케이션합니다. 스위치보드 플러그인은 이 연결을 생성하기 위한 디폴트 OSC 리스너(OSC Listener) 를 포함합니다.

다음 세팅이 적절하게 구성되었는지 확인하세요.

    • 버추얼 프로덕션 에디터(Virtual Production Editor) 플러그인에서 에디터 실행 시 OSC 서버 시작(Start an OSC Server when the editor launches) 을 활성화합니다.
    • 버추얼 프로덕션 에디터 플러그인의 OSC 서버 포트(OSC Server Port)  스위치보드 세팅 OSC 클라이언트 포트(OSC Client Port) 와 일치시킵니다.
    • 스위치보드(Switchboard)가 도달 가능한 OSC 서버 주소(OSC Server Address) 여야 합니다.
      이미지를 클릭하면 확대됩니다.OSC 연결에 성공하면 스위치보드(Switchboard)의 상태 아이콘이 녹색으로 변합니다.

OSC 연결에 실패하면 언리얼 시작 후 상태 아이콘이 주황색으로 변합니다.

      • 스위치보드(Switchboard) 상단에서 시퀀스(Sequence) 이름, 슬레이트(Slate) 이름, 테이크(Take) 번호를 설정할 수 있습니다.
      • 이름은 OSC 연결된 언리얼 디바이스의 테이크 레코더(Take Recorder) 에 즉시 반영됩니다.
      • 녹화를 시작하거나 중지하려면 우측의 붉은 버튼을 누릅니다.
      • 디바이스가 녹화 중이라면 스위치보드에서 테이크 레코더 배경이 붉게 변합니다.
      • 녹화가 끝날 때마다 테이크(Take) 번호가 증가합니다.

디바이스에 예상되는 상태 변화를 검증하려면 디버그 로그를 확인하세요.

    •  스위치보드로 nDisplay 실행
      nDisplay 디바이스를 추가할 수 있을 뿐 아니라, nDisplay 클러스터의 상태 정보가 nDisplay 모니터(nDisplay Monitor) 패널의 스위치보드 창 오른쪽에 표시됩니다. 다음 표에서는 모니터에 포함되는 정보를 설명합니다. 예상되지 않은 값이 있다면 경고 표시로 셀이 노랗게 변합니다.
      열설명

       

    • 노드(Node) nDisplay 씬 노드입니다.
      호스트(Host) 디바이스의 IP 주소입니다.
      연결됨(Connected) 예(Yes) 또는 아니오(No) 로 표시됩니다.
      드라이버(Driver) NVIDIA 드라이버 버전입니다.
      PresentMode 체인 교체 프레젠테이션 모드입니다.
      Gpus 탐지된 GPU가 Quadro Sync 카드로 동기화되고 있는지 표시합니다.
      디스플레이(Display) 탐지된 디스플레이가 동기화되고 있는지 표시합니다.
      주사율(SyncRate) 디스플레이의 주사율입니다.
      하우스 동기화(HouseSync) Quadro Sync 카드로 가는 외부 동기화 신호가 있는지 표시합니다.
      동기화 소스(SyncSource) 동기화 소스가 하우스 동기화인지 vsync인지 표시합니다.
      모자이크(Mosaics) 디스플레이 그리드 환경설정을 표시합니다.
      작업표시줄(Taskbar) 작업표시줄 자동 숨김이 설정되어 있는지 표시합니다.
      인 포커스(InFocus) nDisplay 인스턴스 창을 포커스 중인지 표시합니다. 포커스하는 것이 권장됩니다.
      실행 플래그(ExeFlags) 언리얼 엔진 실행파일의 플래그입니다. 전체 화면 최적화 비활성화(Disable Fullscreen Optimizations) 옵션 사용을 권장합니다.
      운영 체제 버전(OSVer) 운영 체제 버전입니다.
      CPU 활용(CPUUtilization) 평균 CPU 활용률입니다. 괄호 안에 오버로드된 코어의 개수가 표시됩니다.
      메모리 활용(MemUtilization) 물리적 메모리 활용률입니다
      GPU 활용(GpuUtilization) 평균 GPU 활용률입니다. 괄호 안에 클럭 속도가 표시됩니다.
      GPU 온도(GpuTemperature) 전체 센서에서 감지되는 GPU의 최고 온도입니다. 단위는 섭씨입니다.
    •  
      동기화 및 빌드다음 단계에 따라 소스 컨트롤 정보를 스위치보드에 추가합니다.
      1. 스위치보드 세팅(Switchboard Settings) 을 엽니다.
      2. 스위치보드 세팅 대화 상자에서 소스 컨트롤(Source Control) 옆의 박스에 체크합니다.
      3. 소스 컨트롤 아래의 섹션에서 다음 단계에 따릅니다.
        1. P4 프로젝트 경로(P4 Project Path) 를 프로젝트의 Perforce 스트림(Perforce Stream)으로 설정합니다.
        2. 소스로부터 엔진을 빌드하려면 P4 엔진 경로(P4 Engine Path) 를 엔진의 Perforce 스트림(Perforce Stream)으로 설정합니다. 프로젝트만 동기화하고 빌드할 계획이라면 이 경로를 설정하지 않아도 됩니다.
        3. 워크스페이스 이름(Workspace Name) 을 Perforce 워크스페이스(Perforce Workspace) 이름으로 설정합니다.
      4. 프로젝트 세팅(Project Settings) 아래의 섹션에서 다음 단계에 따릅니다.
        1. UProject 를 언리얼 엔진 프로젝트 위치로 설정합니다.
        2. 엔진 디렉터리(Engine Dir) 를 엔진의 바이너리 릴리스가 위치한 디렉터리로 설정합니다.
        3. 엔진을 소스로부터 빌드하려면 엔진 빌드(Build Engine) 체크박스에 체크합니다. 프로젝트만 빌드한다면 체크하지 않고 둡니다.
      소스 컨트롤 정보가 추가되면 스위치보드(Switchboard)의 디바이스 목록 위에 엔진 및 프로젝트 체인지리스트가 표시될 것입니다. 이는 모든 디바이스에 대해 현재의 체인지리스트가 지정되는 위치가 단 한 곳이란 의미입니다.이 스크린샷에는 프로젝트 체인지리스트와 엔진 체인지리스트가 나와 있습니다.소스 컨트롤 버튼

엔진 또는 프로젝트를 동기화하지 않으려면 체인지리스트 드롭다운에서 --없음(None)-- 엔트리를 선택하여 다음 동기화 및 빌드 작업에서 해당 엔진 또는 프로젝트를 무시합니다.

  •  
  • 아이콘동작설명
  • 또한 각 디바이스에 어떤 엔진 및 프로젝트 체인지리스트가 있는지 보여줍니다. 디바이스의 체인지리스트가 스위치보드 상단에서 선택된 것보다 뒤처져 있다면 텍스트가 붉게 변합니다. 
  • 소스 컨트롤을 스위치보드(Switchboard)에 연결한 다음 프로젝트와 엔진을 특정 체인지리스트에 따라 연결된 모든 디바이스에서 동기화 및 빌드할 수 있습니다. 각 연결된 디바이스에 어떤 체인지리스트가 있는지 보고 어떤 것을 업데이트할지 파악할 수 있습니다.
  • 콘솔(Console) 텍스트 박스에 명령("stat fps" 또는 "r.RayTracing.SceneCaptures 0" 등)을 입력하고 실행(Exec) 을 클릭하여 nDisplay 클러스터에 원격으로 명령을 실행할 수 있습니다.
  • 스위치보드(Switchboard)가 모든 nDisplay 디바이스와 커뮤니케이션하도록 설정할 수 있습니다. 스위치보드에 nDisplay 디바이스를 추가하려면 nDisplay 환경설정 파일의 위치를 추가합니다. 스위치보드는 환경설정 파일을 파싱하여 파일에 지정된 클러스터 노드를 스위치보드 디바이스로 변환합니다. 스위치보드에서 nDisplay 디바이스를 구성하는 방법에 대한 자세한 정보는 스위치보드 세팅을 참고하세요.
  •  스위치보드 상태 아이콘 비교.
  • python
  • beta
  • c++
  • virtual sets