에픽게임즈는 Google이 WebRTC 버전에서 공개한 취약성을 알고 있으며, EOS SDK에 미치는 영향과 향후 단계에 대해 조사하고 있습니다. 자세한 내용은 여기를 참고하세요.
아래 기능들은 픽셀 스트리밍에 구현된 새롭고 흥미로운 도구입니다. 새로운 가능성을 제공하지만 불안정하므로 주의해서 사용해야 합니다. 후속 언리얼 엔진 출시 버전에서 변경되거나 제거될 수 있는 기능이므로, 제품의 필수 컴포넌트는 이 기능으로 빌드하지 않는 것을 권장합니다.
VCam
VCam은 새 VCam 액터를 사용하여 레벨 뷰포트의 비디오 콘텐츠를 출력 제공자로 스트리밍할 수 있도록 허용하는 새 기능입니다.
현재 단계에서 VCam은 대체로 버추얼 프로덕션 사용 사례용으로 의도되었습니다. Live Link VCam iOS 애플리케이션에 페어링하거나 ARKit 트래킹에 사용할 수 있습니다. 픽셀 스트리밍이 터치 이벤트를 처리하고 레벨 뷰포트를 iOS 디바이스에 리얼타임 비디오 피드로 스트리밍하므로 언리얼 엔진에서 버추얼 카메라를 파일럿하는 데 유용합니다. Live Link VCam에 관한 자세한 내용은 다음 사이트를 참고하세요. iOS Live Link VCam
VCam 사용 방법
-
Virtual Camera 플러그인이 활성화되었는지 확인합니다.
-
버추얼 프로덕션(Virtual Production)에서 VCam 액터를 찾습니다.
-
액터를 추가하면 아래와 같이 VCam이 표시됩니다.
-
액터가 추가되면 스트리밍을 시작합니다. 픽셀 스트리밍 툴바를 통해 스트리밍을 시작하고 정지할 수 있습니다.
-
스트리밍이 시작되면 로컬 브라우저를 열고 127.0.0.1으로 이동하여 스트리밍되는 디스플레이를 보거나, Live Link iOS 애플리케이션을 열고 컴퓨터의 IP 주소로 이동하여 연결을 누릅니다.
브라우저를 통해 스트리밍과 상호작용하고자 하는 경우 브라우저에서 컨트롤 패널을 열고 컨트롤 체계(Control Scheme)를 호버링(Hovering)으로 변경합니다.
마이크 사용
이제 픽셀 스트리밍을 통해 웹 브라우저에서 WebRTC 오디오로 엔진 내에서 특정 피어/플레이어 마이크를 재생할 수 있습니다.
프로젝트 내 마이크 사용 구성하기
프로젝트가 마이크와 호환되도록 하는 방법은 놀라울 정도로 간단합니다. 프로젝트에 딱 하나의 요소만 추가하면 됩니다.
-
픽셀 스트리밍 플러그인을 활성화합니다.
-
씬의 아무 액터에
PixelStreamingAudio
컴포넌트를 추가합니다. 기본 세팅을 그대로 사용하면 됩니다.
각 오디오 컴포넌트는 픽셀 스트리밍 플레이어 ID를 사용하여 특정 픽셀 스트리밍 플레이어/피어와 연결됩니다.
스트림에서 마이크 사용하기
-
프로젝트에
PixelStreamingAudio
컴포넌트가 구성되면 평소처럼 픽셀 스트리밍을 위해 픽셀 스트리밍 실행 실행인자로 패키징된 또는 독립형 애플리케이션을 실행하고 시그널링 서버를 실행합니다. -
웹 브라우저를 통해 시그널링 서버에 접속합니다.
-
프론트엔드 세팅 패널을 열고
Use Mic
를true
로 설정합니다. 하단의 재시작(Restart) 을 클릭하여 다시 연결합니다. -
브라우저가 마이크 사용 권한을 요청할 수 있으며, 이때 액세스를 허용합니다.
-
마이크에 대고 말하면 스트림에서 본인의 목소리가 재생되는 것을 들을 수 있습니다!
가상현실의 픽셀 스트리밍
가상현실(VR) 픽셀 스트리밍은 사용자에게 픽셀 스트리밍을 통해 VR 호환 애플리케이션에 접속할 수단을 제공하는 새로운 기능입니다. 이를 통해 사용자는 로컬 애플리케이션을 실행하지 않아도 자신의 헤드셋으로 VR 경험을 즐길 수 있습니다.
버전 5.4 기준으로 픽셀 스트리밍 가상현실 구현은 현재 작동하지 않습니다. 이 기능이 언제 다시 제공될지는 예정되지 않았습니다.
프로젝트 구성하기
이 예시에서는 가상현실 템플릿 프로젝트를 사용합니다.
-
가상현실 템플릿을 사용하여 새 프로젝트를 생성합니다.
-
픽셀 스트리밍 플러그인을 활성화하고 OpenXR 플러그인을 비활성화합니다. 에디터를 재시작합니다.
-
콘텐츠 브라우저에서 'Asset_Guideline'을 검색하여 'B_AssetGuideline_VRTemplate'을 삭제합니다. 메시지가 나타나면 강제 삭제(Force Delete) 를 클릭합니다.
-
이제 콘텐츠 브라우저에서 'VRPawn'을 검색합니다. VRPawn을 더블클릭하여 연 후 블루프린트를 컴파일합니다. 제대로 작동하는 경우 컴파일이 성공적으로 이루어질 것입니다. 이 블루프린트를 저장한 후 닫습니다.
-
에디터 개인설정(Editor Preferences) > 레벨 에디터(Level Editor) > 재생(Play) 을 열고
-PixelStreamingURL=ws://127.0.0.1:8888 -PixelStreamingEnableHMD
를 추가합니다.
필수 인증서 생성하기
VR과 픽셀 스트리밍을 함께 사용하려면 HTTPS 인증서가 필요합니다. WebXR 표준의 경우 API를 안전한 연결(HTTPS)을 통해 로드된 사이트에서만 사용할 수 있어야 하기 때문입니다. 프로덕션 용도로는 WebXR을 지원하는 안전한 출처를 사용해야 합니다. 이러한 요구사항에 대한 추가 정보는 https://developer.oculus.com/documentation/web/port-vr-xr/#https-is-required에서 찾을 수 있습니다.
이 예시에서는 Gitbash를 사용하여 기본 인증서를 구성하겠습니다. 이전에 Gitbash를 설치하지 않은 경우, https://www.atlassian.com/git/tutorials/git-bash 페이지에서 단계별 Gitbash 설치 방법을 확인하실 수 있습니다.
-
아래와 같이
SignallingWebServer
디렉터리 내에certificates
폴더를 생성합니다. -
certificates
디렉터리 내에서 우클릭하여 Gitbash를 엽니다.openssl req -x509 -newkey rsa:4096 -keyout client-key.pem -out client-cert.pem -sha256 -nodes
를 입력합니다. -
명령이 완료될 때까지 Enter를 여러 번 누릅니다. 인증서 폴더에
.pem
파일 2개가 생성되면 명령이 완료되었다는 의미입니다. -
SignallingWebServer
폴더에서config.json
파일을 열고UseHTTPS
값을true
로 설정합니다.
이제 VR 애플리케이션을 실행하고 테스트할 준비가 완료되었습니다!
위 과정에서 생성된 인증서는 테스트 전용입니다. 완전한 클라우드 디플로이를 위해서는 그에 맞는 인증서를 구성해야 합니다.
VR 스트림 참가하기
이 예시에서는 Meta Quest 2를 사용합니다.
-
\SignallingWebServer\platform_scripts\cmd
의Start_Signalling.ps1
스크립트를 시작합니다. -
에디터로 돌아가 애플리케이션을 독립형으로 실행합니다. 이전 단계에서 실행 실행인자를 추가했기 때문에, 애플리케이션이 완전히 시작되면 시그널링 서버에 접속할 것입니다.
-
이제 VR 헤드셋을 사용하여 웹 브라우저를 열고 컴퓨터 IP 주소를 입력합니다. '연결이 안전하지 않습니다(Connection not secure)' 페이지가 나타나면 '고급(Advanced)' 탭을 열고 'IP(으)로 이동(Proceed to IP)'을 클릭합니다.
-
애플리케이션이 브라우저 창의 2개 뷰에서 스트리밍되는 것을 볼 수 있습니다. 왼쪽의 XR 버튼을 클릭하여 VR로 전환합니다.
-
완료! 이제 픽셀 스트리밍되는 VR 프로젝트가 열렸을 것입니다.
픽셀 스트리밍 플레이어
픽셀 스트리밍 플레이어를 사용하면 언리얼 엔진 프로젝트에서 활성화된 픽셀 스트리밍을 3D 공간 내에 표시할 수 있습니다. 이를 통해 클라우드로 호스팅되는 콘텐츠를 로컬 애플리케이션 내 미디어 소스로 표시할 수 있습니다.
픽셀 스트리밍 플레이어는 실험단계 기능으로 API는 현재 개발 중입니다. 버전 5.4 기준으로 픽셀 스트리밍 플레이어는 H264, VPX, AV1 인코더와 호환됩니다.
픽셀 스트리밍 플레이어 구성하기
-
Pixel Streaming 및 Pixel Streaming Player 플러그인을 활성화합니다.
-
새 블루프린트(Blueprint) 클래스(액터)를 생성합니다. 저장하고 원하는 이름을 짓습니다.
-
새 블루프린트 클래스를 열고 PixelStreamingSignalling 및 PixelStreamingPeer 라는 2개의 컴포넌트를 추가합니다.
-
PixelStreamingSignalling 컴포넌트를 이벤트 그래프로 드래그합니다. 이 노드에서 드래그하여 Connect 노드를 생성합니다. BeginPlay 를 새 노드의 입력에 연결하고 URL 값으로 'ws://127.0.0.1:80'을 입력합니다. 픽셀 스트리밍 플레이어에서 자동으로 올바른 포트에 연결할 수 없으므로 URL 필드에 포트를 추가하면 임포트됩니다. Windows의 경우 포트는 80, Linux의 경우 8080입니다.
-
PixelStreamingSignalling 컴포넌트를 선택하고 디테일(Details) 창에서 On Connected, On Config, On Offer, On Ice Candidate 이벤트를 추가합니다. PixelStreamingPeer 노드에서 On Ice Candidate 이벤트를 추가합니다.
-
On Connected 에서 Get Streamer ID List 노드를 드래그하여 생성하고, 출력에서 다시 드래그하여 Subscribe 노드를 생성합니다. 아래와 같이 Pixel Streaming Signalling 이 Signalling Component 및 Target 입력에 연결되어야 합니다. Streamer List 출력에서 드래그하여 Get (a ref) 노드를 생성하고 이를 Streamer ID 입력에 연결합니다.
-
On Config (PixelStreamingSignalling) 노드에서 드래그하여 Set Config (Pixel Streaming Peer) 를 생성합니다. Set Config 와 On Config 의 Config 값이 연결되어야 합니다.
-
On Offer (PixelStreamingSignalling) 에서 드래그하여 Create Answer 를 생성합니다. Offer 와 Create Answer 의 Offer 값이 연결되어야 합니다. Create Answer 의 출력 노드에서 드래그하여 Send Answer 노드를 생성합니다. Create Answer 의 Return Value 를 Send Answer 의 Answer 값에 연결합니다.
-
On Ice Candidate (PixelStreamingSignalling) 에서 드래그하여 Receive Ice Candidate 를 생성하고 Candidate 값을 연결합니다.
-
On Ice Candidate (PixelStreamingPeer) 에서 드래그하여 Send Ice Candidate 노드를 생성합니다. Candidate 값을 연결합니다.
-
위 과정을 정확히 마친다면 최종 블루프린트는 다음과 같은 모습입니다.
-
왼쪽의 컴포넌트(Components) 창에서 PixelStreamingPeer 컴포넌트를 선택합니다. 디테일 창의 프로퍼티 에 픽셀 스트리밍 비디오 싱크(Pixel Streaming Video Sink) 가 표시되어야 합니다. 드롭다운을 클릭하고 픽셀 스트리밍 미디어 텍스처(Pixel Streaming Media Texture) 를 선택합니다. 적절한 이름을 지정하고 저장합니다.
-
블루프린트 액터를 씬 안으로 드래그합니다. 간단한 평면 오브젝트를 생성하고 크기와 모양이 적절히 표시되도록 조절합니다.
-
저장한 픽셀 스트리밍 미디어 텍스처를 콘텐츠 브라우저 에서 씬의 평면으로 직접 드래그합니다. 그러면 자동으로 머티리얼이 생성되고 오브젝트에 적용됩니다.
-
씬을 플레이합니다. 이제 외부 픽셀 스트리밍이 씬의 평면에 표시됩니다.