Onoty3D

Unityに関するメモとか

距離感主義っぽいイメージエフェクトを作る

以前「距離感主義をオマージュしてみる」という記事を書きました。

当時は作成したShader等を公開しなかったのですが、あれから少しだけShaderと仲良くなってきた気がするので、あらためてShaderとそれを利用したイメージエフェクトを作ってみました。

DepthImageEffect

UnityPackageを任意のプロジェクトにインポートしたら、Onoty3D/Scriptsフォルダ内のDepthImageEffectスクリプトをカメラに適用してください。

また、Materialは自動セットされないので、手動でOnoty3D/Materialsフォルダ内のDepthImageEffectマテリアルを先のスクリプトMaterialパラメータにセットしてください。
こんな感じ↓
f:id:onoty3d:20160502173726j:plain

デフォルトではカメラ位置を0、カメラのClipping PlanesのFar値を深度のMAXとして計算するため、もし画面がまっ黒で何も写らない場合は、Far値を小さなものにして、そこから大きくしていく感じで調整してみてください。
f:id:onoty3d:20160502174047j:plain

こんな感じで表示されます。
f:id:onoty3d:20160502180015j:plain

パラメータ説明

Main Color:モデルのカラーを調整します。深度をベースにしたグレーのカラーに、Main Colorで指定した色を乗算します。

f:id:onoty3d:20160502174339g:plain

Contour Count:モデルはデフォルトでスムーズなグラデーションで表示されますが、Contour Countに0より大きな値を指定すると、そのカウント数分段階訳された等高線のようなグラデーションになります。使うなら、50~100あたりがいい感じ。
本家距離感主義さんは、この段階的なグラデーション表現をされています。

f:id:onoty3d:20160502175108j:plain

Y Direction:アンチエイリアスの設定などで描画のY軸方向が逆になってしまう場合があります。Y DirectionのForward/Reverseを切り替えることで、Y軸の天地を切り替えることが出来ます。

Depth Source:先述の通り、デフォルトではカメラ位置によるDepthの計算を行いますが、Depth SourceをCustomにすると、つづくパラメータのCustom Depth Fromを始点、Custom Depth Toを終点とした計算に変わります。カメラ位置等変えずに表示を調整したい場合に利用ください。終点はともかく、視点をカメラ位置とは別の位置にしたい、というのはあるかも。

f:id:onoty3d:20160502174826j:plain

本来From<Toとなるべきですが、From>Toにしたらちょっとおもしろくなったよね。

f:id:onoty3d:20160502175624j:plain

 

いろいろ遊んでみてください。

使用したモデルは例のごとくプロ生ちゃん。
ポーズはユニティちゃんのアセットに付属のものです。© UTJ/UCL

 

2016/05/31 追記
更にパラメータの追加等しました。

onoty3d.hatenablog.com