Epicでは、GoogleがWebRTCのバージョンにおける脆弱性を公開 (詳細はこちら)したことを認識しており、EOS SDKに対する影響および次のステップを調査しています。
以下に説明する各機能は、Epic Games が Pixel Streaming に実装した優れた新ツールです。これらの機能は新しい可能性をもたらすものの、動作が安定していないため、注意して使用する必要があります。 これらの機能は今後の Unreal Engine のリリースで変更されたり削除されたりする可能性があるため、製品の重要なコンポーネントのビルドにはこれらの機能を使用しないことを推奨します。
Pixel Streaming Player
Pixel Streaming Player を使用すると、Unreal Engine プロジェクト内のアクティブな Pixel Streaming を、3D 空間内のディスプレイとして表示することができます。これにより、クラウドでホストされているコンテンツを、ローカル アプリケーション内のメディア ソースとして表示できます。
5.2 の時点では、Pixel Streaming Player は機能しません。当社では、新しい AVCodecs ビデオ コーディング モジュールを使用できるように Pixel Streaming Player を更新中ですが、これらの変更は 5.3 まで反映されません。
Pixel Streaming Player を設定する
-
Pixel Streaming プラグインおよび Pixel Streaming Player プラグインを有効にします。
-
新しい ブループリント クラス (アクタ) を作成します。これを保存して希望の名前を付けます。
-
新しいブループリント クラスを開き、PixelStreamingSignalling と PixelStreamingPeer の 2 つのコンポーネントを追加します。
-
PixelStreamingSignalling コンポーネントをイベント グラフにドラッグします。このノードからドラッグして Connect ノードを作成します。BeginPlay を新しいノードの入力につなげて、URL の値として「ws://localhost」と入力します。
-
PixelStreamingSignalling コンポーネントを選択し、[Details (詳細)] パネルから On Config イベント、On Offer イベント、On Ice Candidate イベントをそれぞれ追加します。PixelStreamingPeer ノードから On Ice Candidate イベントも追加します。

-
On Config (PixelStreamingSignalling) ノードからドラッグして Set Config (Pixel Streaming Peer) ノードを作成します。Set Config と On Config の Config 値をつなげます。
-
On Offer (PixelStreamingSignalling) ノードからドラッグして Create Answer ノードを作成します。On Offer ノードの Offer 出力を Create Answer ノードの Offer 入力につなげます。Create Answer ノードの Return Value 出力からドラッグして Send Answer ノードを作成します。それを Send Answer ノードの Answer 入力につなげます。
-
On Ice Candidate (PixelStreamingSignalling) ノードの Candidate 出力からドラッグして Receive Ice Candidate ノードを作成します。それを Receive Ice Candidate ノードの Candidate 入力につなげます。
-
On Ice Candidate (PixelStreamingPeer) ノードの Candidate 出力からドラッグして Send Ice Candidate (PixelStreamingSignalling) ノードを作成します。それを Send Ice Candidate (PixelStreamingSignalling) ノードの Candidate 入力につなげます。
-
上記を正しく実行すると、次のようなブループリントが完成します。
-
ブループリントで PixelStreamingPeer コンポーネントを選択します。[Details] ウィンドウの [Properties (プロパティ)] に [Pixel Streaming Video Sink] が表示されます。そのドロップダウンをクリックして [Media Texture (メディア テクスチャ)] を選択します。名前を付けて保存します。
-
プロンプトが表示された場合はその Video Output Media アセット を選択して保存します。
-
ブループリント アクタ をシーンにドラッグします。シンプルな平面オブジェクトを作成し、適切な表示になるようにサイズと形状を変更します。
-
保存した
NewMediaPlayer_Video
をコンテンツ ブラウザからシーンの平面に直接ドラッグします。この操作によってマテリアルが自動的に作成され、オブジェクトに適用されます。 -
このプロジェクトの外部で、基本的なローカル Pixel Stream を開始します。Signalling サーバーを起動して、関連する Pixel Streaming 引数を指定してアプリケーションを実行します。
-
シーンを再生します。これで、外部の Pixel Stream がシーンの平面に表示されます。
VCam
VCam は、シーン内のアクタに VCam コンポーネントをアタッチし、レベルのビューポートのビデオ コンテンツを出力プロバイダにストリーミングすることができる新機能です。
現段階では、VCam は主にバーチャル プロダクションのユース ケースを想定しています。VCam を Live Link VCam iOS アプリケーションとペアリングして、ARKit トラッキングに使用することができます。これは、Unreal Engine でバーチャル カメラを操作するうえで役立ちます。Pixel Streaming により、タッチ イベントが処理されて、レベル ビューポートがリアルタイムのビデオ フィードとして iOS デバイスにストリーミングされます。Live Link VCam の詳細については、「iOS Live Link VCam」のサイトを参照してください。
VCam の使用方法
-
Virtual Camera プラグインが有効になっていることを確認します。
-
VCam コンポーネントをシーンのアクタに追加します (以下の例では、上記のガイドで作成した Pixel Streaming Player ブループリントにアタッチされています)。
-
VCam コンポーネントで、[Output Providers (出力プロバイダ)] に移動し、ドロップダウンに [Pixel Streaming Provider] を追加します。新しい [Output (出力)] セクションを展開します。
-
ストリーミングを開始/停止するには、[Output] の [Is Active] チェックボックスを切り替えます。
-
開始したら、ローカル ブラウザを開いて「127.0.0.1」に移動し、ストリーミングされたディスプレイを確認するか、Live Link iOS アプリケーションを開いて「127.0.0.1」に移動し、[Connect (接続)] ボタンをクリックします。
ブラウザでストリーミングを操作したい場合は、ブラウザでコントロール パネルを開いて、コントロール スキーム を Hovering (ホバーリング) に変更する必要があります。
マイクロフォンを使用する
Pixel Streaming により、Web ブラウザを介した WebRTC オーディオを使用して、特定のピア/プレイヤー マイクロフォンをエンジン内で再生できるようになりました。
プロジェクト内でマイクロフォンの使用を設定する
マイクロフォンをプロジェクトで使用するための設定は非常に簡単で、プロジェクトに単一のコンポーネントを加えるだけです。
-
Pixel Streaming プラグインを有効にします。
-
シーン内の任意のアクタに
PixelStreamingAudio
コンポーネントを加えます。その設定をデフォルトとして残しておくことができます。
それぞれのオーディオ コンポーネントでは、(Pixel Streaming プレイヤー ID を使って) 特定の Pixel Streaming プレイヤー/ピアと自身を関連付けます。
マイクロフォンをストリームで使用する
-
PixelStreamingAudio
コンポーネントを使ってプロジェクトを設定したら、Pixel Streaming に向けてアプリケーションを通常どおりに (Pixel Streaming 起動引数を使ってパッケージ化またはスタンドアローンのアプリケーションとして) 実行し、Signalling サーバーを起動します。 -
Web ブラウザを介して Signalling サーバーに接続します。
-
フロントエンドの設定パネルを開き、
Use Mic
(マイクを使用) をtrue
に設定します。下部の [Restart (再起動)] をクリックして接続し直します。 -
ブラウザによってマイクロフォンを使用するための許可を求められた場合は、アクセスを許可します。
-
マイクロフォンに向かってしゃべってみてください。ストリームを介して再生される自分の声が聴こえるはずです。
VR の Pixel Streaming
VR (仮想現実) Pixel Streaming は、Pixel Streaming を使って VR 対応アプリケーションに接続するための新機能です。この機能により、ユーザーはローカル アプリケーションを実行することなく、ヘッドセットを使って VR 体験を楽しむことができます。
プロジェクトを設定する
この例では、VR テンプレート プロジェクトを使用します。
-
VR テンプレートを使って新しいプロジェクトを作成します。
-
Pixel Streaming プラグインを有効にして、OpenXR プラグインを無効にします。エディタを再起動します。
-
コンテンツ ブラウザで「Asset_Guideline」を検索して、「B_AssetGuideline_VRTemplate」を削除します。プロンプトが表示されたら [Force Delete (強制削除)] をクリックします。
-
次に、コンテンツ ブラウザで「VRPawn」を検索します。VRPawn をダブルクリックして開き、そのブループリントをコンパイルします。正しく機能する場合はコンパイルに成功するはずです。このブループリントを保存して閉じます。
-
[Editor Preferences (エディタの環境設定)] > [Level Editor (レベル エディタ)] > [Play (プレイ)] をクリックして、「
-PixelStreamingURL=ws://127.0.0.1:8888 -PixelStreamingEnableHMD
」を追加します。
必須の証明書を作成する
Pixel Streaming で VR を使用するには HTTPS 証明書が必要になります。これは、「API は安全な接続 (HTTPS) を介してロードされたサイトのみで利用可能」とする WebXR の標準に準拠するためのものです。プロダクションで使用する場合は、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 キーを数回押します。完了すると、「certificates」フォルダ内に 2 つの
.pem
ファイルが作成されます。 -
「
SignallingWebServer
」フォルダにある「config.json
」ファイルを開き、UseHTTPS
の値をtrue
に設定します。
これで VR アプリケーションを実行してテストする準備が整いました。
上記で作成した証明書はテスティング目的のみのものです。クラウドへの完全なデプロイに向けては、適切な証明書を準備する必要があります。
VR ストリームに参加する
この例では Meta Quest 2 を使用します。
-
「
\SignallingWebServer\platform_scripts\cmd
」にあるStart_Signalling.ps1
スクリプトを起動します。 -
エディタに戻り、アプリケーションをスタンドアローンで実行します。以前のステップで起動引数を追加してあるので、アプリケーションが完全に起動すると Signalling サーバーに接続されるはずです。
-
次に VR ヘッドセットを使用して、Web ブラウザを起動してコンピュータの IP アドレスを入力します。「Connection not secure (接続が安全ではありません)」のページが表示されます。「Advanced (詳細設定)」タブを開いて「Proceed to IP (IP に進む)」をクリックします。
-
アプリケーションがブラウザ ウィンドウの 2 つのビューにストリーミングされるはずです。左側の XR ボタンをクリックして VR に切り替えます。
-
これで完了です。Pixel Streaming を使った VR プロジェクトをお楽しみください!