原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【アセット紹介】綺麗なエッジ検出が可能なカメラエフェクトアセット-MK Edge Detection-

ネットミーム

「ミーム」という言葉の意味が分からないけど周りの調子に合わせて分かった振りをしている長いものに巻かれた皆さんこんにちは。最近、知らない言葉が急に一般常識のように使われだす事が多くて世間のスピードについていけません。怖い、怖い。

 

アウトライン検出

例えば前回の記事で紹介した「Schim」もそうですが「Chants of Sennaar」や「Sable」のように、ここ最近のインディゲーム(主に海外)の中にはフォトリアルを目指すのではなく、色数を絞りエッジを強調してバンド・デシネのような絵作りでアピールするゲームが出てくるようになりました。

Sableのゲーム画面

Unityで上のようなビジュアルを実現するためにオブジェクトのアウトラインを検出・強調したい場合には主に二つの方法があります。

  • オブジェクト側のシェーダでアウトラインを表示する
  • カメラのエフェクト処理でアウトラインを表示する

このうち、オブジェクト側のシェーダで表現する手法はアウトラインを表示したいオブジェクトを限定できる、という利点はありますが、エッジの角度がきつい所謂ハードエッジの箇所ではどうしても線が途切れてしまう、カメラから見て線の太さが一定にならずアウトラインが汚く見える等の欠点があり、どちらかというとカメラエフェクトを使用した手法の方が多く利用されているように思います(私見)

 

とは言え、カメラのエフェクトを使う手法にもそこそこ欠点はあって、特にモデルが重なった部分のアウトラインを綺麗に表示するためにはアウトライン検出のパラメータの調整が必要となってきます。
Unityでのアウトライン検出の手法については以下の記事に詳しく書かれています。

light11.hatenadiary.com

 

MK Edge Detection - Screen Space Lines Shader

アウトライン検出用のアセットとしては比較的高額の部類ですが、それ相応の価値があるアセットを最近導入しました。

Built-InとURP,HDRPのいずれにも対応しており、Built-InとURPではPostPorcessing(PPSV2)と併用する方法とPPSV2を使わない方法を選ぶことが出来ます。

アウトラインの検出法については以下の3つが用意されており、各それぞれでパラメータ調整可能で全ての手法を適用する事もできますし、選択して組み合わせることもできます。

  • Depth:カメラの深度バッファを利用してオブジェクトのシルエットを検出します。
  • Normal:カメラの法線に基づいて内側のエッジを強調します。
  • Scene Color:カメラのレンダリングされた画像に基づいてエッジが表示されます。

 

下の比較画像を見れば分かると思いますが、これらの検出法を組み合わせることで詳細なエッジが検出され、綺麗なアウトラインを描画する事が出来ています。

比較画像1

比較画像2

特に階段の箇所や、建物内部の細かい柱の箇所など、他のカメラエフェクトアセットではあまり綺麗に描けなかったような箇所でもアウトラインが綺麗に描かれていて驚嘆に値します。

 

導入手順

上記のようにこのアセットはBuilt-InとURP,HDRPのいずれにも対応していますが、今回は一番利用者が多いであろうBuilt-InでPostPorcessing(PPSV2)と併用するケースでの導入手順を説明したいと思います。

最初にPostPorcessing(PPSV2)を使うためにメインカメラにPostProcess Layerコンポーネントをアタッチ、Triggerにメインカメラを指定してLayerにPostProcess用のLayerを指定します。

 

次にシーン内に空のオブジェクトを生成して、オブジェクトのLayerにPostProcess Layerで指定したLayerを指定、そこにPostProcess Volumeコンポーネントをアタッチします。

 

PostProcess VolumeのInspectorから「Add effect...」ボタンを押し、「MK→MK Edge Detection」を選択します。

 

Mk Edge Detectionコンポーネントが追加されるのでここでパラメータの調整を行います。

 

アウトライン検出法

前述のようにこのアセットでは3つのアウトライン検出法が採用されています。
それぞれの検出法はInputDataの項目で採否を選択することが出来ます。

 

各検出法の効果を個別に検証するために下のモデルを利用します。

 

Depthのみを適用した場合

オブジェクトの外観部分のエッジが検出されていることが分かります。

 

Normalのみを適用した場合

各オブジェクトの形状が変化する部分のエッジが検出されています。

 

Scene Colorのみを適用した場合

オブジェクト内で色合いの変化が大きい部分がエッジとして検出されています。

 

全ての処理を適用した場合

半透明の箇所を除き、アウトラインとして欲しい部分が検出されているのがわかると思います。

 

エッジ検出専用で結構高額なんですがそれなりに有用なので個性的な絵作りには役立つアセットではないでしょうか。

 

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。