頂点カラー シェーダーを備えた Unity Polybrush

 

  今年の初めに、ProBuilder と Polybrush が正式に Unity の一部になることを発表しました。高速レベルのモデリングのための ProBuilder について詳しく説明しましたが、Polybrush は、ラフなスカルプト、テクスチャ ブレンディング、オブジェクトの散乱、頂点カラーのペイントに役立ちます。

   

  通常、頂点カラーを処理するには、3D プログラミングを実行し、最終結果を推定する必要があります。しかし、Polybrush を使用すると、エディターで直接描画し、処理後の効果を確認できます。

  この記事では、頂点カラーを使用するシェーダーの例と、頂点カラーでポリブラシを使用する方法をいくつか紹介します。

  ポリブラシを入手

  アセット ストアにアクセスして Polybrush をダウンロードできます。

  https://www.assetstore.unity3d.com/cn/?stay#!/content/111427

  ダウンロードが完了したら、リソース パックをインポートし、メニュー バーをクリックして、[ツール] > [ポリブラシ] > [ポリブラシ ウィンドウ] を選択します。

  

  以下の図に示すように、Polybrush ウィンドウを開くと、4 つの機能オプションが表示されます。

  彫刻

  頂点カラーペイント

  オブジェクトの散乱

  テクスチャブレンド

  

  特徴

  1

  彫刻

  この機能には 2 つのタブ ページがあり、最初のタブ ページは頂点位置の上下に使用され、2 番目のタブ ページは頂点位置のスムージングに使用されます。

  

  2

  オブジェクトの散乱

  関数のこの部分を使用する前に、まずパレットにいくつかのプレハブを追加する必要があります。プレハブは、Procore > PolybrushPrefab Palettes > Default ディレクトリにあります。

  

  描画したいプレハブをここにドラッグします。プレハブを削除する場合は、プレハブを選択して Backspace キーを押します。

  

  オブジェクトをクリックして配置できるようになり、ブラシの [強度] プロパティによってオブジェクトの密度が制御されます。

  

  3

  テクスチャブレンディング

  テクスチャ ブレンディング機能には、3 つの UV セットを使用する特定のシェーダ セットアップが必要です。リソース パックには、セットアップ方法を示すいくつかの例が含まれています。

  以下にPolybrushのTriPlanar Blend機能を示します。

  

  マテリアルに希望のテクスチャを追加し、テクスチャ ペイント設定でテクスチャを選択します。塗りつぶしオプションはメッシュ全体を選択した色でペイントし、塗りつぶしオプションはプレビュー画像の頂点のみをペイントし、ブラシオプションはカーソルを中心として特定の半径の円形領域を描画します。

  頂点カラーペイント

  次に、頂点カラーのペイントについて詳しく説明します。

  1

  シェーダーで頂点カラーを読み取る

  シェーダーの頂点カラーにアクセスするには、Input Struct (サーフェス シェーダーで使用される構造) または Appdata Struct (頂点/フラグメント シェーダーで使用される構造) にコード行を追加するだけです。

  頂点/フラグメントシェーダ

  次のコードは、Appdata 構造体の色を読み取り、v2F 構造体で色を宣言し、2 つの構造体間で色を渡します。フラグメントシェーダー内の「i.color」を使用して色を読み取ることができます。

  

  サーフェスシェーダ

   頂点カラーは「IN.vertexColor」で読み取ることができます。

  

  コードを書きたくない場合は、次のリンクにアクセスしてください。これは最も基本的な頂点シェーダーです。

  https://pastebin.com/6wwsnJgY

  

  頂点カラーをペイントできるようになったので、いくつかの興味深い例を見てみましょう。

  例

  1

  ハイライト

  以下のリンクにアクセスしてください。これは Toon Specular シェーダ (Toon Specular) です。

  https://www.patreon.com/posts/quick-game-art-13059579

  

  このシェーダは静的マスクなしでさらに効果的に機能し、このシェーダを使用して任意の場所にペイントし、オブジェクトを濡れたように見せたり、ガラスのように見せたりすることができます。

  この部分を実現するには、擬似ハイライト値に IN.vertexColor.r を乗算し、o.Emission チャンネルのリム ライトにも IN.vertexColor.r を乗算します。そのため、ペイントされた領域にもグロー効果が与えられます。

   float3 spec = (step(_SpecSize, rampS.r) * IN.vertexColor.r;

   o.Emission = pow(rim, _RimPower) * IN.vertexColor.r;

  これは、赤が描かれた場所がどこでも光ることを意味し、光を目立ちすぎたくない場合は、より暗い赤を使用できます。

  

  鏡面頂点カラー シェーダー コード: https://pastebin.com/xBMNuySz

  漫画のカラー スケールを次の図に示します。

  

  ハイライト カラー スケールを次の図に示します。

  

  2

  スイングアニメーション

  アニメーションは動的な草に似ています。フラグ、葉、チェーンなどの一部の静的オブジェクトに布地/物理シミュレーション エフェクトを使用したくない場合は、頂点アニメーションを処理するシェーダーを使用できます。

  

  ほとんどのグローバル ソリューションではクリッピングの問題が発生します。頂点カラー パレット ソリューションを使用する利点は、許可される移動量を設定できることです。以下の例では、旗の上部は動かさないようにしますが、ポールの中央は少しだけ動かします。

  

  赤の頂点カラー チャネルを乗算して、エフェクトの位置を制御できます。

   v.vertex.yz += sin(_Time.y * 動き計算 ) * v.vertexColor.r;

  

  スイング頂点カラー シェーダー コード: https://pastebin.com/SsDaBEgy

  3

  3プレーンマルチテクスチャ

  この記事の前半で示したテクスチャ ブレンディング ツールは、非常に滑らかな効果やぼやけた効果を提供します。一部のアート スタイルではこれで問題ありませんが、ノイズを使用してエッジをよりシャープにすることもできます。

  

  このシェーダは、トリプレーンと同じベース カラーを使用しますが、ワールド法線で「草」を使用する代わりに、赤と青の頂点チャネルを使用して新しいテクスチャを追加します。

  float Primary = step(0.6* ノイズテクスチャ,IN.vertexColor.r );

  これを赤いチャンネルに表示されているテクスチャと掛け合わせ、テクスチャの周囲のエッジについては、元の部分より少し大きい領域に、小さな部分だけを残して反転した元の部分を掛け合わせます。

  float PrimaryEdge = (step(0.5* ノイズテクスチャ,IN.vertexColor.r )) * (1-primary);

  頂点カラーは非常にぼやけていますが、Step 関数とノイズ テクスチャのおかげで、結果は非常にきれいです。複数の UV セットによりさらに多くのテクスチャが生成されるため、テクスチャ ブレンディング シェーダを再加工して同様の効果を実現することもできます。

  

  トライプレーン頂点カラー シェーダー コード: https://pastebin.com/r9EcWvgH

  まとめ

  ここではポリブラシについて共有します。このツールを使用して記事内の例を試していただければ幸いです。ただし、処理中のメッシュのインポート設定を変更すると、ジオメトリが破壊され、再作成が必要になる可能性があることに注意してください。それ。

  Polybrush はまだベータ段階ですが、今年中に Unity に直接統合される予定ですので、関連情報は Unity の中国公式フォーラム (UnityChina.cn) に注目してください。

  推奨読書

  Unity Shader シェーダーの最適化

  Shader Graph シェーダービュー サンプルプロジェクトの紹介

  Unity シェーダー トレーニング キャンプ (1): はじめに

  Unity シェーダー ブートキャンプ (2) - MVP 変換と法線マッピング

  ProBuilder クイック レベル モデリング演習

  Unity を使用してリアルな VR 視覚体験を作成する

  Unity VR/AR プロジェクトの最適化手法とツール

  Unity UI パフォーマンス最適化のヒント

  Made with Unity 短編アニメーション「ダバイの羊を数える夢」

  公式活動

  Unity の公式教師トレーニングの登録が本格化しています

  Unity は、10 月 22 日から 26 日まで、5 日間のプロフェッショナルな Unity 公式教師トレーニング コースを開催します。Unity で最新のテクノロジーを学び、共有する教師の皆様を心から歓迎します。[もっと詳しく知る...]

 

おすすめ

転載: blog.csdn.net/jiergio/article/details/103622453