この記事の3行まとめ
サムザップは、『ファンパレ「夢幻廻楼」技術の裏側 ~ UI表現編~』と題した記事を、自社エンジニアブログ「Sumzap Engineering Blog」にて公開しました。
同記事では、スマートフォン向けゲーム『呪術廻戦 ファントムパレード』内のコンテンツ「夢幻廻楼」を主題に、Unityを用いた「選択中・選択可能な階層オブジェクトを分かりやすく光らせる表現」について解説しています。
「夢幻廻楼」は、塔の各階層で発生する戦闘をクリアし、上層を目指すコンテンツ。定期的な階層追加も予定されており、「無限に登れる塔」と表現されるシステムが特徴です。
また、本システムのために、塔や空、エフェクトの一部をひとまとまりのブロックとして制作し、積み上げることで塔が出来上がるといった手法を採用。複雑な形状の階層オブジェクトになっています。
こちらについての解説は「Sumzap Engineering Blog」の『ファンパレ「夢幻廻楼」技術の裏側 ~ 天候変化編~』をご覧ください。
複雑な形状をした階層オブジェクトは、ユーザーにとって「現在選択中の階層が分かりづらくなる」「選択可能な階層はどこまでかの判断も難しくなる」という問題があったとのこと。
オブジェクトの色調整やBloomで光らせるだけでは、画面手前のエフェクトと馴染んでしまい、とても見づらくなってしまったそうです。そのため、エフェクトの描画後に、階層オブジェクトの形に合わせて光を乗せるという専用機能を作ることで解決しています。
この機能では、画面内の選択可能な階層オブジェクトのシルエット画像を作成した後、それを小さくぼかしたものと大きくぼかしたものを用意。それぞれの画像をアウトラインやグロー範囲として設定し、光らせる部分を作っています。
本作品にはUniversal Render Pipeline(URP)が用いられており、シルエット画像撮影には、ポストエフェクトを適用する直前にScriptableRenderPassを使用しました。
撮影したシルエットが白黒のシルエットとなるような加工をした上で、光の色を乗せて重ねて実装しています。
記事では、パフォーマンス担保のために、アウトラインおよびグローに施した工夫や、ぼかしたシルエット画像を使ってグローを付ける方法についても、シェーダーコードの例とともに解説しています。
内容の詳細は、Sumzap Engineering Blogのブログ記事をご確認ください。
Sumzap Engineering Blog『ファンパレ「夢幻廻楼」技術の裏側 ~ UI表現編~』『呪術廻戦 ファントムパレード』公式サイト