しっぽを追いかけて

ぐるぐるしながら考えています

Unity と猫の話題が中心   掲載内容は個人の私見であり、所属組織の見解ではありません

Unity のシェーダーグラフで描画する軌跡をアニメーションさせる

※ これは 2018/12/07 Unity 2018.3.0b12 時点の情報です

最新版では動作が異なる可能性がありますのでご注意ください

前回インストールした軽量レンダリングパイプライン、ただ描画負荷をおさえるだけでなく、UI 操作でグラフィック処理が作成できるシェーダーグラフというものが使えるようになります

そこで、今回はこのシェーダーグラフを利用して、運動軌跡の予測線をアニメーションさせてみたいと思います

スポンサードリンク

まずは Unity Editor のメニュー [Window]-[Package Manager] から Package Manager を開きます

f:id:matatabi_ux:20181207221154p:plain
Package Manager

表示されるパッケージライブラリ一覧の中から、「Shadergraph」を選び、インストール

f:id:matatabi_ux:20181207221317p:plain
Shader Graph

インストールが終わったら、Project ビュー上で、Assets 直下に右クリックメニューからライティング付与なしの 「Unlit Graph」を選んで Shader を追加

f:id:matatabi_ux:20181207222042p:plain
シェーダーグラフの作成

名前は UV Scroll にしました

この UV Scroll を選んで Inspector ビューから「Open Sahder Editor」ボタンを押下し編集ウィンドウを開きます

f:id:matatabi_ux:20181207222224p:plain
Shader Editor を開く

この編集ウィンドウで作るシェーダーグラフは下記のようなグラフ状のノード構成になります

f:id:matatabi_ux:20181207222427p:plain
作成するシェーダーグラフ

左から右へ向かって作っていきます

まずは 右クリックメニュー [Create Node] を選んだのち、[Input] - [Basic] - [Time] と選び、Time ノードを追加

f:id:matatabi_ux:20181207222953p:plain
Time、Combine、Tiling And Offset ノード

同様に、[Create Node]、[Channel] - [Combine] で Combine ノード、[Create Node]、[UV] - [Tiling And Offset] で Tiling And Offsetノードを作成します

Time ノードの Time(1) を Combine ノードの R(1)、Combine ノードの RG(2) を Tiling And Offset ノードの Offset(2) にドラッグで接続し、 Tiling And Offset ノードの Tiling(2) に接続されている x を -1 にします

ここまでで、1秒間(Time(1))に左から右へ一周スクロールさせる(x: -1)という処理になります

次に [Create Node]、[Input] - [Texture] - [Sample Texture 2D] で Sample Texture 2D ノードを追加したのち、UV Scroll のヘッダのあるパネル右上の「+」ボタンより、Texture2D を選択してプロパティとして追加、Default の画像として dashline を選択します

f:id:matatabi_ux:20181207223446p:plain
Texture2D プロパティ

この Texture2D の角丸部分をマウスでつかんでドラッグドロップすれば入力ノードとして追加できるので、これを Sample Texture 2D ノードの Texture(T2) にドラッグ接続します

さらに、Tiling And Offset ノードの Out(2) を Sample Texture 2D ノードの UV(2) へ、Sample Texture 2D ノードの RGBA(4)、A(1) を Unlit Master ノードの Color(3)、Alpha(1) にそれぞれドラッグ接続します

f:id:matatabi_ux:20181207224403p:plain
Tiling And Offset、Sample Texture 2D、Unlit Master ノード

これで、dashline の点線画像が左から右へスクロールする処理ができるはず

最後に、予測線を描画するのに利用していた Simulation マテリアルを選択、Shader を作成した UV Scroll に切り替えて、Texture2D は dashline の画像が選択されるようにします

f:id:matatabi_ux:20181207225420p:plain
Simulation マテリアル

ここまでできたら動作確認!

f:id:matatabi_ux:20181207225453g:plain
予測線アニメーション

できました!Shader でスクロールさせているので、CPU ではなくグラフィックボードをうまく活用できるし、予測線がどんなに曲がってもしっかりスクロールできていますね

スポンサードリンク