Level Snapshot

レベル スナップショットを使用すると、レベルのアクタの具体的なレイアウトを保存、復元できます。

Windows
MacOS
Linux

レべル スナップショット を使用すると、レベルの [World Outliner (アウトライナ)]アクタ の具体的な構成を保存して、後でシーンをその状態にすばやく復元することができます。これにより、複雑なセットアップを劇的に合理化したり、さまざまなシナリオで同じレベルの複数のバリエーションの重複を予防したり、管理を回避したりできます。レベル スナップショットは、特にバーチャル プロダクションに有用です。レベル スナップショットを利用すると、テイク間で仮想環境を最初の状態にリセットすることや、ベースとなるレベルの開始点を維持しながら、ショット間で加えられた変更をショットごとに追跡することができるからです。

また、レベル スナップショットには、状況ごとに異なる固有のニーズを考慮して、特定のアクタやプロパティを選択的に復元できる柔軟性があります。例えば、レベル スナップショットからライティングだけ、または 1 つのアクタの位置だけを選んで復元できます。知識豊富なユーザーであれば、 ブループリント を使用してカスタム フィルタを作成し、非常に複雑なレベル セットアップのアクタ/プロパティの復元を管理し、一般的なプロジェクト固有のリクエストを自動化できます。

使用を開始する

レベル スナップショット機能を有効にするには、Level Snapshots プラグインをインストールする必要があります。

  1. Unreal Editor のメインメニュから [Project Settings] を選択します。

  2. [Project Settings] ウィンドウで、 [Plugins (プラグイン)] > [LevelSnapshots] に移動します。

  3. [LevelSnapshots] プラグインを有効にします。

  4. (オプション) [nDisplay Support For Level Snapshots (レベル スナップショット用 nDisplay サポート)] プラグインを有効にします。
    5.Unreal Editor の再起動を求められます。

Level Snapshot plugin in the Plugins window

レベル スナップショットにおける nDisplay のサポートは、個別のプラグインを通じて提供されます。これは、インカメラ VFX を使用する場合に重要です。プロジェクトで nDisplay を使用していない場合は、[nDisplay Support for Level Snapshots] プラグインを有効にする必要はありません。

エンジンの再起動が完了したら、レベル スナップショットを作成できます。 メイン ツールバー のレベル スナップショット メニューにアクセスして、 [Level Snapshots (レベル スナップショット)] ウィンドウを開きます。

Level Snapshots button and menu in the main toolbar

スナップショットを撮る

レベル スナップショットを作成する方法は 3 つあります。

  1. メイン ツールバーの [Level Snapshot] ボタンをクリックします。

    Level Snapshots main toolbar button

  2. [Level Snapshot] ウィンドウで [Take Snapshot (スナップショットを撮る)] ボタンをクリックします。

    拡大表示するには、画像をクリック。

  3. リモート コントロール Web アプリケーション を使用して [Take Snapshot] をアクティブ化します。

これら 3 つの方法いずれを行う場合も、 [Create Level Snapshot (レベル スナップショットを作成)] ウィンドウが開きます。

デフォルトで、[Create Level Snapshot] ウィンドウに表示される新しいレベル スナップショットには、 という形式で名前が設定されますが、レベル スナップショットの名前は好きなように変更できます。また、保存したレベル スナップショットの目的に関する詳細な情報を示す説明を追加することもできます。

Create Level Snapshot default name Create Level Snapshot renamed with description

レベル スナップショットは [Create Level Snapshot] ウィンドウの ルート ディレクトリ の下のディレクトリ (デフォルトでは LevelSnapshots という名前) にアセットとして保存されます。特定のレベル スナップショットのサブディレクトリの場所は、 マップ (レベル) 名と、そのレベル スナップショットが作成された 日付 (年-月-日) に基づきます。ルート ディレクトリと、特定のレベル スナップショットのサブディレクトリの両方を変更できます。また、新しいレベル スナップショットのデフォルトの命名パターンも変更できます。

保存前にレベル スナップショットの名前を変更する場合、他のレベル スナップショットを上書きしないように注意してください。変更するか元に戻さない限り、変更後の名前が新しいデフォルトになるからです。

レベル スナップショットを操作する

レベル スナップショットには、アウトライナに含まれるすべてのアクタのレコードと、レベル スナップショットが作成された時点のアクタのコンポーネントとプロパティの状態が含まれます。レベル スナップショットの作成時にアウトライナに表示されているかどうかにかかわらず、すべてのアクタが記録されます。そのため、レベル スナップショットを使用してレベルのシーンをセットアップする際には、アクタの可視性の確認が必要な可能性があります。同様に、アセット (マテリアルなど) の状態は記録されないので、アセットに対する変更は ソース コントロール を使用して個別に追跡する必要があります。

以下に示すアクタとアクタのコンポーネントは、レベル スナップショットでは追跡されません。これらをレベルで使用する場合は、手動で追跡する必要があります。

  • フォリッジ

  • ランドスケープ

  • USD アクタ

  • コンソール変数

  • アクタに追加されたコンポーネント ([Add Component (コンポーネントを追加)] を使用して手動で追加された、インスタンス化されたコンポーネントまたはコンストラクション スクリプトによって追加されたコンポーネント)

レベル スナップショットを 1 つ以上作成したら、そのレベル スナップショットを選択して [Restore Level Snapshot (レベル スナップショットを復元)] ボタンを選択することで、すべてのアクタを保存時の状態にリセットすることができます。

レベル スナップショットを復元すると、レベル スナップショット作成後にアクタに加えられた変更は、レベル スナップショット保存時の状態に戻ります。

  • スナップショット作成後に追加された新しいアクタは、レベルから削除されます。

  • スナップショット作成後に削除されたアクタは、レベルに追加されます。

  • すべてのアクタのトランスフォームは、保存時の状態に戻ります。

  • アクタのプロパティに対する変更は、保存時の状態に戻ります。

拡大表示するには、画像をクリック。

[Restore Level Snapshot (レベル スナップショットを復元)] 操作は、取り消すことができます。

レベル スナップショットをクリックすると、[Level Snapshot] ウィンドウの右側に、レベル スナップショット保存時の状態に戻るすべてのアクタと、アクタのコンポーネントとプロパティのリストが表示されます。

チェックボックスを使用して特定の変更を手動で適用または無視することや、カスタム フィルタを使用して適用または無視する変更を指定することができます。カスタム フィルタに関する詳細は、「カスタム フィルタの作成」を参照してください。

プロジェクトに複数のレベルが含まれる場合は、現在開いているレベルに関連付けられたレベル スナップショットのみが [Level Snapshot] ウィンドウに表示されます。他のレベルに関連付けられているレベル スナップショットは、そのレベルをエディタで開いているときにのみ表示されます。

既知の制約事項

このセクションでは、レベル スナップショットを使用する際の既知の制約事項を説明します。

  • 以下に示すアクタとアクタのコンポーネントは、レベル スナップショットでは追跡されません。これらをレベルで使用する場合は、手動で追跡する必要があります。

    • フォリッジ

    • ランドスケープ

    • USD アクタ

    • コンソル変数

    • アクタに追加されたコンポーネント ([Add Component (コンポーネントを追加)] を使用して手動で追加された、インスタンス化されたコンポーネントまたはコンストラクション スクリプトによって追加されたコンポーネント)

  • スナップショットを作成した後にサブレベルの名前を変更した場合、レベル スナップショット システムは、既存の変更されたアクタではなく、名前が変更されたサブレベルのすべてのアクタを新規とみなします。元の状態に戻すためにアクタの削除をレベル スナップショット システムが推奨している場合に起こります。

カスタム フィルタを作成する

[Level Snapshot] ウィンドウの中央に、カスタム フィルタがあります。1 つのフィルタを使用することも、フィルタ グループを使用して AND と OR のブーリアン演算子を含んだより複雑なフィルタを作成することもできます。お気に入りのフィルタを設定したり、後で使用できるようにフィルタを保存し、ロードしたりすることもできます。

フィルタの上にマウス カーソルを置くと、左側に緑色または赤色のバー、チェックボックス、ゴミ箱が表示されます。

  • 緑色のバーをクリックするとバーが赤色に変わります。これでそのフィルタが反転し、機能が逆になります。例えば、特定のタグを持つアクタだけを含めるフィルタがあった場合、そのフィルタをクリックすると、該当するアクタが除外され、それ以外のものが含まれるようになります。逆に、赤色のバーをクリックするとバーが緑色になり、フィルタの機能が元に戻ります。詳細については、「レベル スナップショット フィルタの反転」を参照してください。

  • チェックボックスをクリックするとフィルタが無効になります。フィルタがグレーアウトされ、使用されていないことが示されます。

  • ゴミ箱アイコンをクリックするとフィルタが削除されます。

Level Snapshot filters

フィルタの反転、反転の取り消し、フィルタの有効化と無効化は、フィルタのプロパティから行うこともできます。詳細については、「レベル スナップショット フィルタのリファレンス」を参照してください。

カスタム フィルタの基本

基本的なカスタム フィルタを作成するには、以下の手順に従います。

  1. まず、 [+Filter Group (+フィルタ グループ)] ボタンをクリックして、新しい フィルタ グループ を追加します。

    The Add Filter Group button

  2. [Add Filter (フィルタの追加)] ドロップダウンをクリックして、一般的なフィルタのいずれかを選択するか、 [C++ Filters (C++ フィルタ)] サブメニューを展開してフィルタを選択します。ブループリントを使用したカスタム フィルタ を作成済みの場合は、 [Blueprint Filters (ブループリント フィルタ)] サブメニューからフィルタを選択できます。また、 [Search (検索)] テキスト ボックスを使用して、特定のフィルタを検索し、追加することもできます。

    • 特定のフィルタを、フィルタ グループにすばやくドラッグできるお気に入りとして設定できます。

      Favorite filters

    • 最も一般的に使用されるフィルタは、 [Common Filters (一般的なフィルタ)] という見出しのメニューの下に含まれています。ここには、 [Actor Changed Transform (トランスフォームを変更したアクタ)][Actor Has Tag (タグを持つアクタ)][Property Has Name (名前を持つプロパティ)] があります。

      Common filters in the Add filter menu

  3. フィルタを追加したら、プロパティを変更するためにそのフィルタを選択します。ほとんどの場合、フィルタを機能させるためには、1 つ以上のプロパティを設定する必要があります。例えば、 [Actor Has Tag Filter] は、レベル スナップショットをフィルタリングするために使用するアクタ タグを指定する必要があります。詳細については、レベル スナップショット フィルタのリファレンスを参照してください。

    拡大表示するには、画像をクリック。

  4. 保存したレベル スナップショットを選択して、 [Refresh Results (結果を更新)] をクリックします。レベル スナップショットに保存されたアクタは、構成したフィルタに応じてフィルタリングされます。

    拡大表示するには、画像をクリック。

  5. 新しいフィルタを保存するには、 [Load/Save Filter (フィルタのロード/保存)] ドロップダウンを開いて、 [Save As (名前を付けて保存)] を選択します。新しいウィンドウが開き、フィルタの名前の指定と、フィルタをアセットとして保存する先のディレクトリの選択ができます。

    Load and save filter menu

    拡大表示するには、画像をクリック。

  6. [Load/Save Filter] ドロップダウンを開き、表示されたリストからロードするフィルタ アセットを選択して [Load filter (フィルタをロード)] をクリックすることでも、保存したフィルタをロードできます。保存したフィルタ数が多い場合は、 検索 バーを使用して特定のフィルタを検索できます。

高度なカスタム フィルタ

レベル スナップショット フィルタには、フィルタを複雑に組み合わせて特定の結果を実現できる高度な機能があります。この機能は、多くのアクタを含み、複数のレベル スナップショットを保存している大規模なレベルを処理するときに役立ちます。

  • 複数のフィルタを同じフィルタ グループに追加し、AND 演算子 (& で表される) を使用してフィルタを組み合わせることができます。これにより、両方のフィルタをレベル スナップショットに適用し、すべてのフィルタ条件を満たすアクタだけを表示できます。

  • [+ Filter Group] ボタンを使用してフィルタ グループを追加すると、OR 演算子を使用してフィルタを組み合わせることができます。これにより、フィルタ グループのいずれかの条件を満たすアクタが表示されます。

    • フィルタ グループを無視するには、チェックボックスをクリックして無効にします。無視したフィルタ グループを含めるには、チェックボックスをクリックして有効にします。

    • フィルタ グループを削除するには、ゴミ箱アイコンをクリックします。

    Boolean operators for Level Snapshot filters

  • ほとんどのフィルタは Default Result フィルタ プロパティを使用します。このプロパティには以下の値を設定できます。

    • Include: フィルタの結果を含め、それ以外をすべて除外します。

    • Exclude: フィルタの結果を除外し、それ以外をすべて含めます。

    • Do Not Care: 反転設定に従ってフィルタによって直接影響を受けるアクタを含めるか除外しますが、他のアクタの状態は考慮しません。

    詳細については、「レベル スナップショット フィルタのリファレンス」を参照してください。

    Default Result property dropdown

Default Result プロパティで Exclude に設定されたフィルタを反転すると、フィルタの結果が含まれるようになります。明確に定義されたロジックをできる限り使用するようにして、フィルタの機能で混乱することがないように注意してください。詳細については、「レベル スナップショット フィルタの反転」を参照してください。

フィルタ間の相互作用は複雑になる可能性があるため、フィルタにはその機能を明確に示す名前を慎重に付けることを強くお勧めします。他のユーザーも使用するフィルタを作成する場合には特に、名前に気を遣うようにしてください。

レベル スナップショット フィルタのロジック

C++ を使用して作成されたデフォルト フィルタおよびブループリントを使用して作成されたカスタム フィルタはすべて、次の 4 つの検証チェックのいずれかに基本的に基づいています。

  • Is Actor Valid: アクタを復元可能かどうかを決定します。

  • Is Property Valid: プロパティを復元可能かどうかを決定します。

  • Is Deleted Actor Valid: (レベル スナップショット作成以降に) レベルから削除されたアクタが再スポーンすべきかどうかを決定します。

  • Is Added Actor Valid: (レベル スナップショット作成以降に) レベルに追加されたアクタが消滅すべきかどうかを決定します。

ほとんどの場合、Is Actor Valid フィルタと Is Property Valid フィルタの両方を同時に使用することはお勧めしません。有用ではない結果になることが多いからです。特に、以下に留意してください。

  • [Level Snapshot] ウィンドウで同じフィルタ グループで 2 つをミックスしないようにします。

  • フィルタを作成するときに複数の関数 (IsActorValid など) を実装しないようにします。

複数のフィルタ グループで C++ フィルタを使用して、またはカスタム ブループリント フィルタとしてこのようなフィルタを慎重に構築した方がいいユース ケースがあります。フィルタを慎重に構築すると、あるフィルタをあるレベル スナップショットの一部の設定に適用しつつ、別のフィルタを別のレベル スナップショットの別の設定に適用できます。

例えば、2 つのライト オプションと 2 つのセット ドレッシング オプションが設定されたバーチャル プロダクション セットアップを考えてください。ライトはオプション 1、セット ドレッシングはオプション 2 にしたいとします。レベル スナップショット フィルタ ブループリントを使用すると、さまざまなレベル スナップショットから適切な設定を指定して適用できるインターフェースを作成できます。このセットアップに必要なロジック全体は、[Apply Snapshot to World (ワールドにスナップショットを適用します)] ボタンを使用するだけでは構成できないので、この場合は複雑なフィルタを構築する必要があります。

レベル スナップショット フィルタを反転する

レベル スナップショット フィルタを使用するとき、1 つのフィルタに複数の目的を果たさせる方法として、フィルタの反転が便利です。一般的に、フィルタの反転には以下の効果があります。

  • Include が Exclude になる。

  • Exclude が Include になる。

  • Do Not Care は Do Not Care のまま。

例えば、ActorHasTag フィルタを使用して、「RestoreMe」というタグを持つアクタだけを復元したとします。このフィルタの IsActorValid 関数は、そのタグを持つアクタを返し、タグを持たないアクタは除外します。UI でこのフィルタを反転すると、フィルタの動作は逆になり、「RestoreMe」タグを持つアクタは除外され、それ以外のすべてのアクタが返されるようになります。

また、一部のデフォルト C++ フィルタには、フィルタの関数に影響する追加のプロパティがあります。それらのフィルタをレベル スナップショットに適用する際には、目的の結果を達成できるよう、慎重に反転を使用するようにしてください。

ブループリント フィルタを作成する

このセクションは、ブループリントについて既に理解していることを前提としています。詳細については、 ブループリント のドキュメントを参照してください。

新しいレベル スナップショット ブループリント フィルタを作成するには、以下の手順に従います。

  1. レベル スナップショット ブループリント フィルタ基本クラスを使用して、新しいブループリントを作成します。

    拡大表示するには、画像をクリック。

  2. 該当するオプションで [Override Function (オーバーライド関数)] を選択します。

    • Is Actor Valid: アクタを復元可能かどうかを決定します。

    • Is Added Actor Valid: (レベル スナップショット作成以降に) レベルに追加されたアクタが消滅すべきかどうかを決定します。

    • Is Deleted Actor Valid: (レベル スナップショット作成以降に) レベルから削除されたアクタが再スポーンすべきかどうかを決定します。

    • Is Property Valid: プロパティを復元可能かどうかを決定します。

    拡大表示するには、画像をクリック。

  3. 選択したオーバーライド関数 (以下の例では [Is Actor Valid]) が新しいグラフで開きます。関数には、いくつかのデフォルト ノードが設定されています。

    拡大表示するには、画像をクリック。

  4. Is Actor Valid ノードの Parameters 出力ピンをドラッグし、Break ノードを追加します。

    拡大表示するには、画像をクリック。

    これで、Snapshot Actor 出力または Level Actor 出力から分岐した新しいフィルタのロジックを定義できます。これは、どちらをフィルタの条件に照らし合わせて検証するのかを決定します。

    この例の残りでは、Snapshot Actor がスカイライトかどうかを確認するフィルタを作成します。

  5. デフォルトの親を削除して、検証に適切なノードを追加し、Break ノードに接続します。以下の例では、 Cast to Skylight ノードを選択し、 Object 入力ピンを Break ノードの Snapshot Actor 出力ピンに接続しました。

    拡大表示するには、画像をクリック。

  6. Is Actor Valid ノードの出力ピンを Cast To Skylight ノードの入力ピンに接続します。Return ノードを複製し、一方のノードを Cast To Skylight のメイン出力ピンに、もう一方のノードを Cast Failed 出力ピンに接続します。

  7. Cast To Skylight ノードのメイン出力ピンに接続された Return ノードの Return Value に対して Include を選択し、 Cast Failed 出力ピンに接続されたノードの Return Value に対して Exclude を選択します。

    拡大表示するには、画像をクリック。

  8. ブループリントを 保存 して コンパイル します。最終的なフィルタは、レベル スナップショットで使用した場合、レベル スナップショット内のスカイライト アクタのみを返します。

ブループリント フィルタにインスタンス編集可能として公開している変数 ([My Blueprint (マイ ブループリント)] パネルで変数の横に開いた目のアイコンで表示) が含まれる場合、使用する際にそのレベル スナップショット フィルタのプロパティに表示されます。

Adding a visible variable to your Blueprint filter

レベル スナップショット エディタの設定

レベルでレベル スナップショットを作成すると、多数の レファレンス が作成されます。レベル スナップショットの数が増えると、レファレンスもすぐに増大します。多数のレベル スナップショットを持つレベル内のアクタを削除する際には、レファレンスを確認するプロセスに長い時間がかかる可能性があります (数分以上)。この時間を減らすには、 [Level Editor - Miscellaneous (レベル エディタ - その他)][Check References on Delete (削除時にレファレンスを確認)] という 高度なエディタ設定 を無効にします。

このオプションを無効にすると、削除時にレファレンスを確認する必要がある場合でも確認されなくなるので、レベル スクリーンショット使用時にエラーが発生する可能性があります。このオプションを使用する際には注意してください。そのため、レベルでの作業時にワークフローを加速する必要がある場合にはこの設定を無効にし、作業の最終パスではエラーを回避するために再度有効にすることをお勧めします。

Check References on Delete Editor setting for Level Snapshots

レベル スナップショット プラグインの設定

レベル スナップショット プラグインの設定には、[Level Snapshot] ウィンドウの右上隅にある歯車アイコンをクリックして直接アクセスできます。

Gears button in the Level Snapshot window

[Plugin Settings (プラグイン設定)] ウィンドウが開き、レベル スナップショット プラグインの設定が表示されます。

Level Snapshot plugin settings

設定

説明

Behavior (動作)

Blacklist - Actor Classes (ブラックリスト - アクタ クラス)

キャプチャおよび復元の対象にしないアクタ クラスとプロパティを指定します。プロパティは、複数の要素を含むセットで、ドロップダウン メニューから選択します。

Blacklist - Component Classes (ブラックリスト - コンポーネント クラス)

キャプチャおよび復元の対象にしないコンポーネント クラスとプロパティを指定します。プロパティは、複数の要素を含むセットで、ドロップダウン メニューから選択します。

Editor (エディタ)

Enable Level Snapshots Toolbar Button ([Level Snapshots] ツールバー ボタンを有効にする)

デフォルトで有効です。

Use Creation Form (作成フォームを使用)

デフォルトで有効です。

Click Actor Group to Select Actor in Scene (シーン内のアクタ グループをクリックしてアクタを選択)

これが有効の場合、[Modified Actors (変更したアクタ)] の下でアクタ グループを選択すると、シーン内のアクタが選択されます。その前の選択は解除されます。デフォルトで無効です。

Preferred Creation Form Window Width (優先する作成フォームのウィンドウ幅)

デフォルト値が 1,000 のスライダ。

Preferred Creation Form Window Height (優先する作成フォームのウィンドウ高さ)

デフォルト値が 1,000 のスライダ。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる