scriptAdvertisementShaderで波動方程式を用いて波紋をシミュレートしてみました。上記の方程式のままではshaderで処理することはできません。この式を用いて波紋をシミュレートします。Shader波紋計算用shader波紋をシミュレートするためのShaderはこちらです。色は0~1の値をとります。波の上下を表すにはマイナスの値も必要です。そこで、2を掛けたのちに1を引くことで0~1を-1~1へ変更し、計算しています。テクスチャの赤色に計算結果を、緑色に一つ前の状態を書き込んでいます。0);}ENDCG}}}画像合成用shader以前、記事にした画像合成用shaderを利用しています。詳しくはこちらに掲載しています。このshaderで任意の画像を合成することで、水面に外力を加えることができます。そのため、そこから新たな波紋が発生します。col;}ENDCG}}}初期化用shaderレンダーテクスチャを初期化する際に使用するshaderです。col;}ENDCG}}}ScriptこのScriptを平面のオブジェクトにアタッチすることで、その平面に波紋を発生させることができます。waveMatには波紋計算用のshaderを選択したMaterialを、matPaintには画像合成用のshaderを選択したMaterialを、mat_gray_texにはレンダーテクスチャの初期化用shaderを選択したMaterialを割り当てます。texBlushには外力を与えるための画像を割り当てます。ここでは、Default-Particleを使用しました。左クリックをした場所のUV座標を検出しています。その場所へGraphics.BlitでtexBlushを画像合成用のMaterialで波紋用のRenderTextureに合成しています。次に、このRenderTextureを、Graphics.Blitによって波紋を計算するためのMaterialへ渡します。これによって得られたRenderTextureをオブジェクトに設定されたMaterialへ渡し、波紋を表示しています。波紋の表示には、渡されたテクスチャの赤色を白黒に表示するshaderを作成し、使用しています。rTex);RenderTexture.ReleaseTemporary(buf);}}波紋が広がるエリアの設定このままでは、四角い領域でしか波紋が作成できません。そこで、自由な領域で波紋を発生させるために波紋計算用shaderへ新たに処理を追加しました。波紋を発生させたい場所を白色、発生させたくない場所を黒色としたテクスチャを新たに作成し、このテクスチャによって波紋が発生する領域を変更できるようにしました。0);}ENDCG}}}実行結果BlushSizeで力を加えるための画像の大きさを変更できます。Phasevelocityは波紋が伝わる速さ、Attenuationは減衰率を調整できます。WaveAreaで波紋が発生する領域を変更することができます。Initializeボタンを押すと、波紋の発生していない状態に戻すことができます。2018.09.16ゲージをImageのFilledを用いて作成すると、端が直線になってしまいます。2018.09.18前回の記事では、両端の形状を維持したまま動くゲージをImageのMaskやFilledを用いて作成しました。コメントをキャンセルメールアドレスが公開されることはありません。WordPress.。