Language:
Page Info
Engine Version:

クリッピング

アンリアル エンジン 4.17 では、クリッピング システムを大幅に改善しました。一部のケースでは、後方互換性がなくなることがあります。こうした変更についての追加情報は、 スレートのクリッピング システムNEW! をご覧ください。

UMG のクリッピング システムでは、スレートのクリッピング システムNEW! を、ウィジェット (およびエディタの他の部分) でテキスト、画像、コンテンツをどのように表示するかを制御する フレームワークとして使用します。Clipping (クリッピング) は、レンダリングしたオブジェクト (グラフィックスとテキスト) をバウンディング ボックスを使用して領域に制限し、その外側にあるものは表示しないことで機能します。クリッピング システムは、現在、 座標軸に平行になりました。つまり、どの回転でもクリップすることができます。これはトランスフォームの処理の仕方により、以前は不可能でした。

ClippingExamples.png

この例では、各ボタンは表示されたテキストの親になります。これらの例は、ボタンまたはテキストがクリッピングされるかを示しています。

  • 左 - ボタン上またはテキスト上で有効なクリッピングはありません。

  • 中央 - テキスト上でクリッピングが有効になっています。

  • 右 - ボタン上でクリッピングが有効になっています。

キャンバス パネル (すなわちクリッピング ゾーン) はゲーム画面を表し、ゲームでこのエリア外にあるものを何でもクリッピングします。

UMGDesigner.png

UMG Designer グラフでは、キャンバス パネル (青) がゲーム画面のクリッピング ゾーンを表します。

アンリアル エンジン 4.16 以前は、ウィジェットのクリッピングはレイアウト空間を使って処理されており、キャンバス パネルの外側ではレンダリングしないようにしていたのです。そのため、ウィジェットのバウンディング ボックスの一部が キャンバス パネルの外側にあると、ウィジェットが回転してもレンダリングされなくなります。そのバウンディング ボックスは、キャンバス パネル内にあっても切り取られた グラフィックスやテキストの一部を残しません。

変更前後を比較した以下の例を見てみましょう。

Clipping1.png

Render Transform clipping | in 4.16 and earlier.

Render Transform clipping | in 4.17 and later.

Image Widget がキャンバス パネルの端に配置されて、バウンディング ボックスの一部が外側になっています。クリッピング システムは、レイアウト空間を使う代わりに座標軸に平行になったので、 アーティファクトや問題を解決したクリッピングになります。

クリッピングのプロパティ

UMG の [Details] パネルの [Clipping] で選択したウィジェットに基づき、クリッピングの処理方法を変更することができます。

ClippingProperties.png

プロパティ

説明

Inherit

子をクリッピングせず、親ウィジェットから渡されたクリッピング / カリングに従います。

Clip to Bounds

ウィジェットのバウンドにコンテンツをクリッピングします。以前にクリッピングされている領域のバウンドと交差します。

Clip to Bounds - Without Intersecting

ウィジェットのバウンドにクリッピングします。既存のクリッピング ジオメトリとは交差せず、新しいクリッピング状態になります。実際にクリッピングする階層のバウンド外部でレンダリングできるようにします。

Clip to Bounds - Always に設定されているクリッピング ゾーンは無視できません。

Clip to Bounds - Always

ウィジェットのバウンドにクリッピングします。以前にクリッピングされている領域のバウンドと交差します。

このクリッピング エリアは無視できません。常に子をクリップします。これはアニメーションや他のエフェクトによってこの領域を侵されたくない UI の境界で役立ちます。

On Demand

このウィジェットは、Desired Size (望ましいサイズ) がウィジェットに割り当てられたジオメトリよりも大きい場合に、その境界にバウンドします。これが起きると、[Clip to Bounds] のように機能します。

このモードは主に Text に追加されます。Text は多くの場合、コンテナに配置され、最終的にリサイズされてテキストの長さに対応できなくなります。テキストを含むすべてのコンテナに [YES] とタグ付けする必要なく (これはほぼバッチングなしの結果になります)、このモードは必要に応じてクリッピングを動的に調整するために追加されました。必ずしもすべてのものを On Demand に設定しないのは、レンダリングを計画したものと一致する Desired Size をすべてのパネルが戻すとは限らないからです。

その他の考慮事項

  • ほとんどの場合、テキストの長さを制御できず、クリッピングする必要がある場合を除いてクリッピング方法を調整する必要はありません。この例として、Scroll Box と Editable Text Widget があり、Inherit の代わりに [Clip to Bounds] に設定されています。

  • 様々なクリッピング空間のエレメントは、一緒にバッチングできません。そのため、クリッピングにはパフォーマンスの負荷を伴います。こうした理由から、パネルでバウンド外にコンテンツが表示されるのを防ぐ必要がない限り、クリッピングを有効にしないでください。