Obra Dinn の真似っこをして遊ぶ・2
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

Obra Dinn の真似っこをして遊ぶ・2

2020-08-14 19:57
    ■背景オブジェクトの2値化の仕様について

     いろいろ見回っていて気がついた。

     残留思念内で空を見上げると、マストの向こうに、ノイズの渦の中心がある。そして、中心から離れるごとに、ドットサイズが大きくなっていく。常に一定かと思ったら、そんなことはなかったのであった。ぎゃふん。

     とにかくこれで、手法はだいぶ絞られる。

    絞られた! 残りはどちらも中国の檣楼員だ!

     とりあえず思いついた処理としては、

    ・ワールド座標系に大きな球体を置く(プリミティブオブジェクトの Sphere でよい)
    ・フィルタをかけるシェーダを設定する
     ・Transparent にして Cull Front, ZWrite Off, ZTest Always にする
     ・GrabPass を利用してオブジェクト描画済みのテクスチャをもらう
     ・グレースケール→ノイズ→2値化のフィルタをかける

     これで、似たような仕様になる。背景オブジェクトのグレー部分は、これで表現しているものと思われる。

    ■キャラクターのアウトライン

     アウトラインを表示するにはさまざま方法がある。とりあえず負荷のことは考えず、独自の方法でやってみた。

     1.アウトラインを表示したいオブジェクトを "Characters" レイヤーに所属させる。
     2.アウトラインを描画するためのオブジェクトを "Outline" レイヤーに所属させる。
      ・上記例と同様の全天球でよい
     3.別カメラを用意する。
      ・背景はマゼンタの Solid Color
      ・Culling Mask を設定し、Characters, Outline のみ表示する。
     4.Characters は本来のマテリアルでそのまま描画。
       ただし、マゼンタが含まれていてはダメ。
     5.こちらも GrabPass を利用する。
       描画するピクセルと隣接ピクセルの色をチェックして、
       マゼンタとキャラクター色の境界を白く塗る。
       境界以外のマゼンタ部分、キャラクター色の部分は100%透過する。
     6.以上の描画内容を RenderTexture に書き込み、Canvas か何かでオーバレイ表示する
       ただし、解像度を適度に下げる(よって、アウトラインが太くなる)

    ■適用例

    うむ

     次はキャラクターの周囲をぼんやり光らせよう。
     あと、ちゃんと真似っこできてるか比較しやすいよう、シンプルな背景を用意しよう。
    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。