UEでデュアルモニタ間のアクティブなディスプレイへ自動切換えして録画する[UE5][OBS]

恐らく需要があまりないですが、ネットで検索してもあまり出てこないような方法なので記事に残しておきます。

UEで、デュアルモニタでの操作を画面ごとに自動切換えして録画・配信する方法です。
主に講座類の動画作成や、UEでの作業配信をしたい人など向けです。

厳密には自動切換えといっても、該当のウィンドウをクリックしてアクティブになった状態を検知するため、マウスカーソルをホバーさせただけでは切り替わらないのでそこはご容赦ください。
あと、あまりいないとは思うのですが、UnrealEditor(コンテンツブラウザなどがある本体)の配置しているウィンドウを作業中に移動させたりする人もこの方法ではできません。

使用するソフトウェアはUE5とOBS Studio(筆者のバージョンは29.0.2)です。

やることはOBS側の設定のみです。
まず、シーンを最低2つ作成します。わかりやすくDisplayLeftとDisplayRightとしました。
配信などをして、画面を一時的に隠したい場合のために、BackScreenModeという画面隠しシーンも追加しました。これは移したくないウィンドウがアクティブになった時に自動で隠すのに使用します。

名前は日本語で好きな名前にしてもかまいません

DisplayLeftとDisplayRightのソースを設定します。
ソースタブの中の+ボタンを押し、画面キャプチャを選びます。
本当はウィンドウキャプチャでやりたかったのですが、後述する理由でうまくできなかったので画面キャプチャを使用します。

名前は自由ですが、DisplayLeftとRightでは違う名前にしてください。

作成したら設定画面が開くので、DisplayLeftならば左側のディスプレイの型番・名前を指定してください。
そして、「カーソルをキャプチャする」は特に理由がなければ付けたほうが良いでしょう。カーソル映っていない講座動画などはほぼないと思うので・・・

ディスプレイ名が分からない場合は、デスクトップの何もないところで右クリック、ディスプレイ設定を開くとディスプレイ1番、2番の配置がどうなっているかが表示され、一番下のほうのディスプレイの詳細設定を開くと、ディスプレイ1とディスプレイ2の名前が書いてあります

DisplayLeft、DisplayRightの設定が終わったら、シーンを切り替えて対象のディスプレイがちゃんとキャプチャーされているか確認してください。

できていたら、自動切換えの設定に移ります。
左上のメニューのなかから、ツール、自動シーンスイッチャーを選びます。

AdvancedSceneSwitcerは筆者が入れて試したプラグインですが、なんかよくわからなかったので放置してます。説明見る限りではこのプラグインでもできそうです。

開いたウィンドウで、上のプルダウンメニューでまず「プロジェクト名 - Unreal Editor」と書かれているものを選びます。
ここにいない場合は、一覧は現在開いているウィンドウの一覧なので、UnrealEngineのプロジェクトを開いてから、再度自動シーンスイッチャーの設定ウィンドウを開きなおしてください。

自分はcraftescape_01というプロジェクトを開いているため、この表示になっています。各自でプロジェクト名が違うと思うので - Unreal Editorとなっているものを探してください。

キャプチャーしたいプロジェクトが変わった場合、再度この設定をし直す必要があります。自動シーンスイッチャーはアプリケーションで判定しているわけではなく、「ウィンドウの名前」で判定しているからかと思われます。
アプリケーションで指定できるようになってほしいけど、ニッチな機能なのでアップデートの望みは薄そうです。

Unrealのプロジェクトを指定したら、今度は右のシーン名が書かれたプルダウンメニューを選び、自分が普段メインのエディタ画面を配置しているディスプレイ側のシーンを選びます。筆者の場合は右側のディスプレイに配置しているので、DisplayRightを選びます。

ここでどっちのシーン名がどっちのディスプレイか分かりにくくなるのを避けるため、
シーン名はきちんと名前を付けましょう。

設定したら、画面中央左にある+ボタンを押して登録します。
これで、UnrealEditorにウィンドウのフォーカスがあった場合、対応したシーンに切り替わるという設定ができました。

そして今度は、「どのウィンドウにも一致しない場合:」を切り替える
にチェックを入れ、先ほどのUnrealEditorで指定したシーンとは”違う方”のシーンを指定します。
これで、UnrealEditor(メイン側)以外のウィンドウにフォーカスがあった場合、違う方のシーンに切り替えるように設定しました。

アクティブウィンドウタイトルを確認する間隔は、たぶんOBSの負荷に関わるのでお好みの値を探してください。最小は50msのようです。

シーンスイッチャーは:非アクティブ になっていると思うので、下の開始ボタンを押すとアクティブに切り替わります。

あとはUnrealEditorを開き、サブのディスプレイにウィンドウを増やした状態で挙動を確認して、問題が無ければ設定終了です。
シーン間のトランジションはOBS設定でフェード間隔や切り替わりを変更できます。

録画・配信共にOBSの機能を使用して行います。基本的には設定で録画設定と出力パスを指定し手録画ボタンを押すだけか、各種配信サイトのストリームキーを設定し、配信開始ボタンで配信できます。(配信に関してはもっと詳しい設定があるので、別途調べたほうが良いです。)

序盤に記載した、ウィンドウキャプチャが使用できない理由は、ウィンドウキャプチャでUEの拡張したウィンドウを指定しても、別のBPを開いてウィンドウ名が変更されると検知できないため、キャプチャーが更新されないためです。
「タイトルに一致、そうでなければ同じ実行ファイルのウィンドウを見つける」の項目に設定しても検知してくれません。
そのため、ディスプレイを指定してキャプチャするしかありませんでした。
良い方法があれば教えてください。


作業配信する場合の映ってはいけないもの対策(気休め)

これを利用すれば、配信サイトなどでの作業配信で2PC環境の操作を写すことが可能になります。が、人によってはいろいろ事情があって配信などに載せられない画像がある人もいるかと思います。
完全ではないですが気休め対策を載せておきます。

まず、新規でシーンを一つ追加します。自分はBackScreenModeとしました。このシーンの中身はキャプチャー類が入っていなければ大丈夫だとおもいます。適当に画像やテキストで、裏画面や見せられない旨を書くと良いかと思います。

参考程度にこんな感じです

そして、映ると良くないフォルダや、photoshop、illustratorのホーム画面などをいったんPCで開いた状態にしてから、再度ツールの自動シーンスイッチャーを開きます。

そうすると、プルダウンメニューにフォルダ名やphotoshopの項目が増えているので選び、さらにシーンをBackScreenModeに指定します。
これで、見えちゃいけないフォルダ、photoshopのホーム画面などを開いているときにそのウィンドウがアクティブになると検知して裏画面シーンに切り替わります。

しかし、自動シーンスイッチャーの登録はウィンドウ名での一致しか見ていないため、さらに1階層深いフォルダに移動したり、具体的にphotoshopのデータを開いてしまうと、ウィンドウ名が変わってしまい、検知しなくなります。
なので気休め程度としてください。

具体的には、プレビュー画面がでるホーム画面や、エクスプローラーのクイックアクセス状態を登録しておくと、意図せずプレビュー画像が映ることは避けられるかもしれません。

また、表示しているウィンドウ側のディスプレイ全体をキャプチャしていることを忘れないでおいてください。
意図せず全画面をウィンドウサイズにしたり、ウィンドウの上に別のウィンドウを配置した場合バッチリ映ってしまいます。


以上がデュアルモニタ環境でのディスプレイ自動切換え録画の方法でした。
完璧ではない方法ですが、参考になる人がいたら幸いです。

この記事が気に入ったらサポートをしてみませんか?