Clear Flagsとは【Unity】


はじめに

みなさん、こんにちは。涼海と申します。
今回は、Unityのカメラコンポーネントの中や、Visual Compositorの各ノード内にあるClear Flagsとは何かについてのメモとなります。

間違っていること等ございましたら、ご連絡いただけると嬉しく思います。

では、今回もよろしくお願いいたします。

Clear Flagsとは

Clear Flags(クリアフラグ)の言葉をそのまま考えると、フラグをクリア(削除)すると読めます。

では、フラグとは何なのでしょうか。
調べてみました。

フラグとは、「旗」という意味の英単語で、ITの分野では、コンピュータプログラムが条件判定などの命令を実行する際に結果を保存しておく領域などのことをこのように呼ぶ。一般の外来語としては「フラッグ」と表記するが、コンピュータ用語としては「フラグ」と詰めて表記・発音する慣習が定着している。

IT用語辞典 e-Words より

上記引用や引用元のサイトを読むと、フラグというのは、何らかの処理を実行した際に出た結果データを格納しておく領域のこと、だとわかりました。

では、この「何らかの処理」とは何になるでしょうか。

今回の場合は、Unityのカメラコンポーネントにあるため、カメラに関する処理であることがわかります。
そして、カメラが主に行うことはレンダリングとなるわけです。
そのため、今回の「何らかの処理」とはレンダリングであることが考えられます。

より具体的な内容は以下の引用からわかります。

各カメラは、そのビューを描画する際に、色と深度に関する情報を格納します。画面の描画されない部分は空っぽで、デフォルトではスカイボックスが表示されます。

Unity マニュアル より

上記引用含めて考えると、Clear Flagsとは、

各カメラが格納している色と深度に関する情報の領域(Flags)をクリア(削除)する

ことであると考えられます。

Clear Flagsで何ができるのか

次は、このClear Flagsとは何ができるものなのかについてとなります。
色や深度情報をクリアすることで、何ができるのでしょうか。

オブジェクトがない部分のレンダリングを設定できる

オブジェクトがない部分、DCCツールではAlphaで抜かれるような部分(以後、空白の部分)のレンダリング結果を変更できます。
以下オプションの内容で変更可能です。

描画順番を変更できる

複数カメラを使ってUIをオブジェクトの前に表示したいなど、以下オプションのDepth Onlyという設定を活用することで描画順番の変更が可能となります。

Clear Flagsのオプション

Clear Flagsは、以下のオプションがあります。

  • SkyBox
    デフォルトの設定。空白の部分にカメラのSkyboxを表示します。
    設定されていない場合はLightingウィンドウで選択されているSkyboxとなります。
    それも設定されていない場合にはBackgroundで設定されている色となります。

  • Solid Color
    空白の部分に現在のカメラのBackground Colorが表示されます。

  • Depth Only
    カメラコンポーネント内のDepthで設定した数値を使って、描画順番を変更できます。
    この設定にしたカメラは、空白の部分の描画がないため、Depth数値の大きいカメラに設定することで、Depth数値の小さいカメラの上にDepth数値の大きいカメラでレンダリングしたオブジェクトを描画することができます。

Depthについて

Clear Flagsで使用される設定として、カメラコンポーネント内にあるDepthがあります。

今回使用されているDepthとは、

レンダリングの描画順番を決めることができる設定

だと理解しております。
数値の小さい方から大きい方へ向かって、順番に描画されます。

Clear Flags > Depth OnlyやDepthの設定を使うことでできることは以下サイトを見るとよくわかるかと思います。

おまけ : Clear Flagsが見つからない

カメラのコンポーネント内に、Clear Flagsという項目が見つからないというときがありました。

そのようなことが起こるのは、URPを使用している場合です。

URPでは、Clear FlagsやDepthの代わりにカメラスタッキングというものを使うそうです。

参考

さいごに

今回はClear Flagsについてメモをしました。
いまいちわからなかったことについてわかってよかったです。
こちらはURPでは使用されないものではありますが、Visual Compositorのノード内に設定がありますため、今後使うためにも知っておいた方が良いでしょう。

ここまで読んでくださり、ありがとうございました。

では、また会う日まで。

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