しゅみぷろスマートフォン用の表示で見るしゅみぷろプログラミングとかこの広告は、90日以上更新していないブログに表示しています。UTJ/UCL)複数色のテストesprog.hatenablog.comオブジェクト表面を液体が垂れる表現をさせる試みの続きです。前回の記事で基本的な部分を実装したのですが、複数の色をペイントすることが出来ないという問題がありました。複数色置けなかった理由は、白黒で液体の付着量を表すペイントマップを参照して色付けしていたことが原因です。今回はペイントマップに書き込むデータを変更して複数色対応したよというお話です。リポジトリは以下で公開しているのでそっち参考にした方がいいかもしれません。github.com前回と大枠は変わらないのですが、順に説明していきます。オブジェクトのメインテクスチャ、ノーマルマップ、ハイトマップをそれぞれコピーしたRenderTextureを用意するこれは、UnityTexturePaintのDynamicCanvasでUse...項目をチェックすれば自動で行われます。用意したRenderTextureを描画に利用するため、Materialのテクスチャと差し替える上画像のようなイメージです。これもDynamicCanvas付けてれば勝手にやってくれます。これでブラシのカラー情報がテクスチャのRBGに、高さ情報がAに書き込まれます。ペイントマップのA(高さのデータで、オブジェクト表面の液体の付着量を表すことになる)を参照してノーマルマップを生成するesprog.hatenablog.com基本的には上記記事そのままです。参照する情報をペイントマップのAに変更するだけ。}}で、これを使ってOnWillRenderObjectでBlitしてやれば、法線が更新されていきます。}height2Normalが先程のシェーダーを適用したマテリアルです。ペイントマップのRGBをメインテクスチャに書き込むペイントマップのRGBをそのままメインテクスチャに書き込みます。シェーダーは以下の様な感じでシンプルです。}}で、これを使ってOnWillRenderObjectでBlitしてやります。}height2Colorが先程のシェーダーを適用したマテリアルです。ペイントマップを指定した方向に広げるペイントマップをダラーっと垂らす部分です。この部分がまだ色々未完成で試行錯誤しています(まだ色々問題あり)。仮組みですが、シェーダーは以下の様な感じ。//TODO:VITIATEにちっちゃいノイズ入れたい。0.3;//どのくらい横の液体を考慮するかの係数。}}で、これを使ってOnWillRenderObjectでBlitしてやります。}heightFluidが先程のシェーダーを適用したマテリアルです。いった感じになります。液垂れ表現についてです。UnityでMatcapシェーダー書いたのでメモ。)はてなブログをはじめよう!es_programさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。