rn.log

備忘録など

【シェーダーグラフメモ その34】液晶モニターのノイズのようなエフェクト

モニターのノイズのようなエフェクトをかけるシェーダーグラフです。
 f:id:r-ngtm:20181231211426g:plain

 

作り方解説

STEP1 : テクスチャ表示

SampleTexture2Dノードを使い、テクスチャを表示します。

f:id:r-ngtm:20181231180239p:plain

f:id:r-ngtm:20181231180245p:plain

 

STEP2 : ノイズを加える

UVのY座標を使って横じまのようなノイズを作り、これをUVのx座標に足します。

f:id:r-ngtm:20181231181422p:plain

f:id:r-ngtm:20181231181454p:plain



STEP3 : ランダムな点滅とノイズを乗算(完成)

時間にSimpleNoiseを適用し、Stepを適用することで0 or 1のランダムな点滅を作ることができます。

これとノイズを乗算することでランダムなタイミングで一瞬だけノイズが混ざるようになります。

f:id:r-ngtm:20181231185037p:plain

 

f:id:r-ngtm:20181231211426g:plain

 

補足 : ノイズを使った点滅について

横軸を時間、縦軸をノイズの値、現在時刻のノイズ値を赤い丸で可視化すると

以下のようになります。

ノイズ<0.3の時は1.0(白色)、0.3<ノイズの場合は0.0(黒色)になります。

f:id:r-ngtm:20181231210212g:plain

 

【シェーダーグラフメモ その33】波紋を利用して、テクスチャをスタイリッシュに切り替える

テクスチャをスタイリッシュに切り替えるシェーダーグラフです。

f:id:r-ngtm:20181227223642g:plain

 

作り方解説

STEP1 波紋を作る

距離にPosterizeをかけて波紋を作ります。

f:id:r-ngtm:20181227220034p:plain

 

STEP2 波紋を動かす

距離に数値を足すと波紋が動きます。

f:id:r-ngtm:20181227220110p:plain

f:id:r-ngtm:20181227220203g:plain

 

STEP3 テクスチャを混ぜる(完成)

距離<0.0の部分にテクスチャ1、距離>1.0の部分にテクスチャ2を表示させます。

f:id:r-ngtm:20181227222834p:plain

 

波紋を動かすと以下のようになります。

f:id:r-ngtm:20181227223642g:plain

 

【シェーダーグラフメモ その32】ゆらゆら揺れる感じのエフェクト

テクスチャにゆらゆら揺れる感じのエフェクトをかけるシェーダーグラフです。

f:id:r-ngtm:20181225213756g:plain


ノード全体

縦にスクロールするノイズをテクスチャのUVに足してゆらゆらせてています。

f:id:r-ngtm:20181225215128p:plain

作り方解説

STEP1 : テクスチャを表示

Sample Texture 2Dノードを使い、テクスチャを表示します。

f:id:r-ngtm:20181225213915p:plain

 

STEP2 : ノイズで歪ませる

テクスチャのUVのy座標にノイズを加算し、テクスチャを歪ませます。

f:id:r-ngtm:20181225214031p:plain

f:id:r-ngtm:20181225214201p:plain

STEP3 : ノイズをスクロールさせる

ノイズのUV座標に時間を加算し、ノイズをスクロールさせます。

f:id:r-ngtm:20181225214739p:plain

 

完成

f:id:r-ngtm:20181225214916g:plain

 

2018年でアウトプットしたもの

はじめに

2018年も残すことあと1週間。 あっという間に過ぎ去った1年だったような気がします。
本記事では、私が2018年にアウトプットしたものをまとめたいと思います。

アウトプットしたもの

2018年にアウトプットしたものは以下の4つです。
・シェーダーグラフ
・記事の執筆
GitHubでツールを配布
・Unity1Weekに参加してゲームを2つ作る

アウトプット1 : シェーダーグラフ

2018年の10月中旬あたりから、シェーダーグラフを触り始めました。
そして作ったものをツイートにまとめたり、Twitterのモーメントやはてなブログに作例をまとめるというアウトプットを行いました。

Twitterモーメント

シェーダーグラフの作例をTwitterのモーメントにまとめていました。
twitter.com
twitter.com


恐れ多くも、Unity公式さんにモーメントをご紹介いただきました。


はてなブログ

Twitterのモーメントに不自由さを感じ、Hatenaブログにシェーダーグラフの記事を書くようになりました。
r-ngtm.hatenablog.com

現時点では約30個の記事を書いています。

GitHubでシェーダーグラフ配布

はてなブログ記事で紹介しているシェーダーグラフをGitHubにて配布しています。
github.com

余談 : シェーダーグラフを発信するモチベーション

シェーダーグラフはUnity2018から入った機能で、登場してからまだ1年も経っていない、比較的日の浅いものです。

そのため、シェーダーグラフの 日本語の情報も少ない
「自分のような凡人でも、シェーダーグラフについて発信すればUnityコミュニティに貢献できるのではないか。」
ここに自分のモチベーションがあります。

自分のような凡人でも活躍できるかもしれない、という希望を感じています。

アウトプット2 : STYLYサンプル

以前、PsychicVRLabさんに遊びに行く機会があり、
その時のご縁でSTYLYのUnityサンプルプロジェクトを作成したり、サンプルの解説記事を書く機会をいただきました。

書いた記事たち

Unityを利用した空間スキャンライン表現 | STYLY
Unityを利用した2D画像の回転マスク表現 | STYLY
Unityを利用して画像にモザイクエフェクトをかける | STYLY
Unity+Playmakerでスーパーボールを大量に出す | STYLY
Unityで雨を作り、STYLYへアップロードする | STYLY

STYLYサンプルリポジトリ

github.com

アウトプット3 : GitHub

Unity上で動作するツール(Unityエディタ拡張)を作成してGitHubで公開する、というアウトプットを行いました。
公開したツールは以下の5つです。
・Unity-ArtTool
・WebBookmarker
・GoogleDriveViewer
・Unity-LayoutExporter
・Unity-AssetStoreImporter

Unity-ArtTool

テクスチャの色を変更して遊ぶためのツールを作りました。
Photoshopのグラデーションマップのようなエフェクトをかけることができます。
github.com
f:id:r-ngtm:20181224103859g:plain

余談ですが、このツールを作ったことによってシェーダーで絵を加工する面白さに目覚め、
シェーダーグラフに手を出すきっかけになりました。

WebBookmarker

ウェブサイトのURLをUnity上でブックマーク登録できるツールです。
勉強用にWebサイトをブックマーク登録出来たら便利そうだと思って作りました。
github.com
初学者向けにWebサイトのURLを登録したものを渡す、という使い方もよさそうな気がします。

GoogleDriveViewer

Googleドライブのファイルを一覧表示できるツールです。
github.com

Viewerという名前なのに、ファイルダウンロードやファイル削除もできます。

余談

2018年の9月あたりにゲームデザインの効率化ツールを作ろうという野望がありました。
GoogleDriveViewerはゲームデザイン効率化ツールとGoogleドライブを連携させる過程でできたものです。


Unity-LayoutExporter

Unityのレイアウトファイル(.wlt)をプロジェクトファイルへ取り込んだり、プロジェクト上のwltをUnityに登録するツールです
別のPCでUnityを使うとき、普段と同じレイアウトが使えないのがストレスフルで作りました。
github.com
f:id:r-ngtm:20181224110314p:plain:w320

Unity-AssetStoreImporter

アセットストアからダウンロードしたUnitypackageをインポートできるようにするツールです。
github.com

アウトプット4: Unity1Weekに参加してゲームを作る

アツリス

アツリスという、数字の書かれたブロックを落とすゲームを作りました。
youtu.be

テトリスにインスピレーションを受けています。 同じ色を一列そろえると消えるところとか、名前が○○リスなところとか。
アツリス | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

音あて

ほかには「音あて」という、音を聞いてその音階を当てるミニゲームも作りました。
youtu.be

音当て | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

おわりに

2018年になんとなく触り始めたシェーダーグラフ、気が付いたら12月末までずっと遊んでいました。
10月から12月までの2か月の間、シェーダーグラフに絞って情報発信したおかげか、 Twitterあたりで 「シェーダーグラフの人」 というポジションが得られたような、そんな感触を感じました。

今まで「自分は何者にもなれない」「自分は何の人なんだろう」
というもどかしさが募っていましたが、
シェーダーグラフに関する情報を発信をつづけることで「シェーダーグラフの人」と認知されるようになってくれれば良いかもなぁ、とか思ったり。

2019年には勉強会やLTに登壇してシェーダーグラフの発表をしようと考えています。

 【シェーダーグラフメモ その31】ドット絵風の炎の玉

以下のような、炎の玉っぽいエフェクトを作成する方法を解説します。

f:id:r-ngtm:20181222153814g:plain

 

作り方解説

STEP1 : 中心からの距離をとる

f:id:r-ngtm:20181222145048p:plain

 

 

f:id:r-ngtm:20181222144943p:plain

 

STEP2 : ノイズを距離で割る

f:id:r-ngtm:20181222145427p:plain

 

f:id:r-ngtm:20181222145510p:plain

 

STEP3 : ノイズをスクロールさせる

f:id:r-ngtm:20181222150543p:plain

 

f:id:r-ngtm:20181222151307g:plain

 

STEP4 : 炎っぽくする

Divide, Power, Sample Gradientを組み合わせて炎っぽい見た目にします。

f:id:r-ngtm:20181222151847p:plain

f:id:r-ngtm:20181222152240g:plain

 

STEP5: モザイクエフェクトをかける(完成)

UVにPosterizeをかけ、UVを24段階にします
f:id:r-ngtm:20181222153205p:plain

 

ドット絵風の炎の玉の完成です。

f:id:r-ngtm:20181222153814g:plain

 

 

 【シェーダーグラフメモ その30】ドット絵風の爆発エフェクト

 以下のようなドット絵風の爆発を作る方法を解説します。

f:id:r-ngtm:20181222140654g:plain

 

作り方解説

STEP1 : 中心からの距離をとる

f:id:r-ngtm:20181222123959p:plain

f:id:r-ngtm:20181222124010p:plain

 

STEP2: 時間を引いて広がる波紋を作る

f:id:r-ngtm:20181222124156p:plain

 

波紋が広がるような見た目になりました。

f:id:r-ngtm:20181222124259g:plain

 

STEP3: 解像度を24x24にする

Posterizeノードを使ってUVの解像度を24段階にします。 

f:id:r-ngtm:20181222124813p:plain

 

ドット絵っぽくなりました。

f:id:r-ngtm:20181222125111g:plain

 

STEP4: 色付きのリングを作る

広がる波紋に対してStepをかけ、広がるリングを作ります。

これとカラーグラデーションを乗算します。

f:id:r-ngtm:20181222131757p:plain

 

f:id:r-ngtm:20181222132030g:plain



STEP5: 中心から離れているところを暗くする

(1.0 - 距離)と波紋を乗算し、中心から離れているところを暗くします。

f:id:r-ngtm:20181222133327p:plain

 

爆発っぽい見た目になりました。

f:id:r-ngtm:20181222133558g:plain



STEP6 : 爆発を速くする

動きが遅すぎるように感じるので、時間に1.0より大きい数を乗算して速く動くようにします。
今回は4.0を乗算しました。

f:id:r-ngtm:20181222133931p:plain

 

爆発らしさが増したように感じます。

f:id:r-ngtm:20181222134145g:plain



STEP7 : 爆発の間隔を長くする(完成)

爆発が頻繁に再生されてうるさいので、爆発を再生してから次の爆発を再生するまでに間隔を設けます。

f:id:r-ngtm:20181222140441p:plain

f:id:r-ngtm:20181222140654g:plain

 

 【シェーダーグラフメモ その29】ランダム頂点数の多角形を飛ばすパーティクルを作る

はじめに

今回は、シェーダーグラフとParticleSystemを組み合わせて頂点数がランダムな多角形を飛ばすパーティクルの作り方を解説します。

f:id:r-ngtm:20181222105451g:plain

 

バージョン

Unity2018.3.0f1

ShaderGraph Version4.1.0

 

作り方解説

STEP1 : ParticleSystem作成

まずはParticleSystemを作成します

f:id:r-ngtm:20181222115049p:plain

 

見やすさのため、Start Sizeを3、1秒当たりの生成数を5に設定します。

f:id:r-ngtm:20181222110017p:plain

f:id:r-ngtm:20181222110626p:plain

 

STEP2 : シェーダーグラフを作成

以下のようなシェーダーグラフを作成します

f:id:r-ngtm:20181222110149p:plain



STEP3 : シェーダーグラフをパーティクルに適用

シェーダーグラフから作成したマテリアルをParticleSystemに登録します。

f:id:r-ngtm:20181222110209p:plain

 

登録すると以下のような、灰色の四角形パーティクルになります。

f:id:r-ngtm:20181222110626p:plain

 

UnlitマスターノードのColorで設定した色がそのままパーティクルに反映されています

f:id:r-ngtm:20181222110837p:plain

 

STEP4 : パーティクルを三角形にしてみる

Polygonノードを以下のように接続すると、パーティクルが三角形になります。

UnlitマスターノードはTransparentに設定しておきます。

f:id:r-ngtm:20181222111026p:plain

f:id:r-ngtm:20181222111049p:plain

 

STEP5 : パーティクルの頂点数をランダムにする

パーティクルからランダムな値をシェーダーへ渡す

ParticleSystemのCustom Vertex StreamsRandom/Stable.xを登録すると、TEXCOORD0.zにランダムな値(0~1)が渡るようになります。

f:id:r-ngtm:20181222111152p:plain

 

シェーダーグラフからランダムな数値を利用する

シェーダーグラフでは、UVノードがTEXCOORD0に相当しており、B成分を取り出すことでTEXCOORD0.zを利用することができます。

TEXCOORD0.zには0~1のランダムな値が入っています。

 

 

f:id:r-ngtm:20181222111233p:plain

 

パーティクルの頂点数が3,4,5のいずれかでランダムで設定されるようになり、以下のようになります。

f:id:r-ngtm:20181222111358p:plain

 

Random/Stable.xの追加方法

f:id:r-ngtm:20181222111942p:plain

f:id:r-ngtm:20181222111929p:plain

f:id:r-ngtm:20181222111934p:plain

 

 

色を変えたり、重力を付けてバウンドさせてみたりするのも面白いかもしれません。

f:id:r-ngtm:20181222120503g:plain