Onoty3D

Unityに関するメモとか

ポストエフェクトっぽく世界を変える試みと、指定色を残すシェーダー

さて、コミックおきゅたんをやったなら、ワールドそのものもコミック風にしてみたい。

自前のワールドならメッシュのシェーダーをそれ用のにすればいいのだけれど、任意のワールドをコミック風ににするにはポストエフェクトでやってしまうのが手っ取り早いです。
以前コミック風にするポストエフェクトは作成済み。

ただVRChatで使えるポストエフェクトはPost Processing Stackしか許されていないようで、そもそもそれも自作ワールドにしか使えないということで、どうにも太刀打ち出来ません。
さぁ、どうしようかなぁ…と思った時に思いついたのが、カメラの前に板を置いてしまうこと。板の後ろの画をそのまま描画するシェーダーを書いて、その画を加工してしまえばいいじゃないかと。
この辺は以前遊ばせていただいたEsさんの水面シェーダー関連の記事が心に残っていました。

esprog.hatenablog.com

公式にもサンプルはあります。

docs.unity3d.com

で、コミック表現の前に、試しに以前作った色残しエフェクトを組み合わてみました。

onoty3d.hatenablog.com

実際にVRChat内で使ってみたところ。

カメラ全体を覆っても良かったのですが、それだと後から動画編集したのと区別がつかなそうだったので、若干アピールのためにメガネにしてみました。

メガネにしてみて思ったのですが、最初メガネをHeadの子にしていたんですが、Headの子はどうやってもカメラに映らないようでした。
変に顔とか髪とかのメッシュに視界が埋まっちゃうのを防ぐためですかね。
とりあえず苦肉の策でNeckの子にしていますが、例えばVRモードの場合は手にメガネを持って、眼前にかざす、とかでもいいかも。
あるいはうまくHeadに外からJointする方法もあるのかな?
体全体を大きな球で覆って、その球にシェーダーを適用してもいいかも。

シェーダーはBOOTHで無償公開しました。
BOOTHデビューです。
作成したマテリアルを板などにセットして使ってみてください。

onotchi.booth.pm

パラメータは3種類で、

Target Color: 残す色
Threshold: 同系色の許容範囲
Brightness: 灰色にした部分の明るさ

が調整できます。