この記事の3行まとめ
- ロジカルビート、「【UE5】インスタンシングを考慮した背景アルファディザ」と題したブログ記事を公開
- ディザリングで疑似的にオブジェクトを透過させ、物陰のキャラクターを可視化する処理の実装方法を解説している
- Foliageで配置した複数のモデルが一斉に透過してしまう不具合の解決策も紹介している
ロジカルビートは2025年12月10日(水)、「【UE5】インスタンシングを考慮した背景アルファディザ」と題した記事を公開しました。
記事では、キャラクターの姿がオブジェクトで遮られている際に、オブジェクトを疑似的に透過させることで視認可能とする処理(※)の実装手法を解説しています。
※ 記事中では「背景アルファディザ」と呼称。いわゆる「ディザリング透過」「ディザ抜き」のこと
(画像はブログ記事より引用)
3Dゲームなどでは多くの場合、壁や木といった障害物の裏側にキャラクターの全身または一部分が隠れて見えなくなっている際に、ディザリング(※)によって疑似的にオブジェクトを透過させる処理が施されます。
※ 異なる色をばらつかせて配置することで、少ない色数で別の色調を描く手法。グラデーションを作る用途などで用いられる
この「背景アルファディザ」は深度値を利用して実装される処理で、実際に半透明化する描画と比較して処理負荷が軽く、描画順による不具合を抑制できるといったメリットがあると語られています。
記事では、Unreal Engine 5.5.4における「背景アルファディザ」の実装方法を解説。専用マテリアルを作成し、モデルの座標とカメラの距離に応じてディザリング処理を適用できるようにノードを組む過程を紹介しています。
(画像はブログ記事より引用)
また、Foliage(※)で配置されたオブジェクトに背景アルファディザを施す際に、複数のオブジェクトが一斉に透過してしまう不具合を解消する方法も解説。
※ アンリアルエンジンの機能のひとつ。小石や植物などの大量かつ小さなオブジェクトを、一定のランダム性を持たせながら地表に配置するなどの用途で用いられる
この不具合は、Object Position (Absolute)ノードで座標を取得した場合、インスタンシングされた全モデルで座標が共有されることが原因で発生します。
Foliageでインスタンシングされた3つのオブジェクトが全て同時に透過している(画像はブログ記事より引用)
解決手法として、Object Position (Absolute)ノードをTransformPositionノードに差し替えて、各オブジェクトの座標を個別に取得する実装手順を紹介しています。
モデルとカメラの距離を算出する処理をTransformPositionで実装(画像はブログ記事より引用)
座標の取得方法を変更したことで、カメラに最も近い位置のオブジェクトだけを透過させることが可能に(画像はブログ記事より引用)
詳細はロジカルビートのブログ記事をご確認ください。
【UE5】インスタンシングを考慮した背景アルファディザ