この記事は海洋大の技術系サークルのアドベントカレンダーの18日目です
はじめに
ここ最近はずっとUnityで個人開発をしていたのですがたまには息抜きでblenderで遊んでいきます。
今回作っていくもの
以下のような線が下から上に動いていくようなアニメーションを作っていきます
Step1 線の描画
まずは上の画像のような線をShaderでPlaneに描画します。
Planeを作成し新規マテリアルを作成したら以下のようにノードを接続してください
SeparateXYZでPlaneのYの値を取得して0.5以上0.6以下の部分を描画しています。これは僕のイメージなのですがMultiplyで2つの値を接続するとその共通部分が現れる、という感じです。
Step2 フレームで線が移動するようにする、線の太さの調節をできるようにする
Step1からの変更点は黄色で囲んだ部分です。Thresholdから線の位置が変更でき、Thicknessから線の太さが変えられます。
ここでThresholdに"#frame"と打ちこみます。こうすると現在のフレーム数に応じて値が変化するようになります。
ただこのまま再生するとあまりにも動きが速すぎて一瞬でいなくなってしまうのでThresholdにmathノードのdivideを接続して下の値を100くらいに設定してください(下図)
ここで一度再生してみると下のようになります
Step3 線をぐちゃぐちゃにする
黄色い線で囲んだ部分がStep2からの変更点です。SeparateXYZとLess than/Greater thanの間にミックスカラーノードを挟みノイズテクスチャとミックスさせることで線がぐちゃぐちゃになっていい感じになります。
冒頭の動画の物はこれのThicknessを0.010に設定したものになります
終わりに
線を動かす表現は色々なところで使えます。個人的に気に入ってる表現です。Z座標を取得して3Dモデルにこのシェーダーを適用すれば下の動画のようなものも作れます
シェーダ―はUnityの方でも気になっている部分で、ちゃんとゲームエンジン内部のとこまで理解して自分の思っている画を自由に出力できるようになりたいなあなんて思ってます。