rn.log

備忘録など

【Unityシェーダーグラフ+Processing その1】線をたくさん出して色を付けてみた

はじめに

最近、Processingを触りはじめました。

https://processing.org/


「Processingを使って何か面白いことはできないだろうか?」と考えていたところ、

「Unityのシェーダーグラフと組み合わせれば面白いことできそうじゃない?」

と思いつきました。  

Processingで作った絵をシェーダーグラフで加工してみた

そこで、Processingで描画した以下の絵を引っ張り出してきて、

f:id:r-ngtm:20190104233418p:plain:w320
 
Unityシェーダーグラフに取り込み、SampleGradientで色を付けてみました。
 

そして出来上がった絵が以下になります。
f:id:r-ngtm:20190104233731p:plain:w320

お、いろいろ遊べそう。

 

前置きが長くなってしまいましたが、今回の記事ではこの絵を作る方法を解説します。

 

作り方解説

STEP1 Processingで絵を描く

以下のコードをProcessingで実行します。

final int N = 15000; // line number
final int alpha = 15;

String getFileName()
{
  return "lines" + "_N_" + N + "_alpha_" + alpha +".png";
}

void setup()
{
  size(1024, 1024);
  background(255);
  stroke(0, alpha);
  for (int i = 0; i < N; i++)
  {
    drawLine();
  }
  
  save(getFileName());
}

void drawLine()
{
  line(random(0, width), random(0, height), random(0, width), random(0, height));
}

やっていることはシンプルで、
「キャンバス上でランダムな位置の点を2か所とり、2点を結ぶ線を描画する」
これを15000回繰り返しているだけです

上記のコードをProcessing上で実行すると以下のような絵が出力され、pdeファイルと同じ場所にpngとして保存されます
f:id:r-ngtm:20190104233418p:plain:w320


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


出力されたpngをUnityプロジェクトに取り込んだら、次にUnity上でのシェーダーグラフ上での作業に入ります。

STEP2 : シェーダーグラフで加工する(完成)

SampleTexture2Dノードでテクスチャを取り込み、Smoothstepで色味を補正。
最後にSampleGradientノードで色をつけて完成です。
f:id:r-ngtm:20190104235327p:plain

f:id:r-ngtm:20190104233731p:plain:w320

色を変えて遊んでみた。

SampleGradientの色を変更すると絵の色も変化します。
色を弄っているだけでもいろいろ遊べそうです。

f:id:r-ngtm:20190105000637p:plain:w300
f:id:r-ngtm:20190105000145p:plain:w320


f:id:r-ngtm:20190105000239p:plain:w280
f:id:r-ngtm:20190105000347p:plain:w280
f:id:r-ngtm:20190105001153p:plain:w280
f:id:r-ngtm:20190105001431p:plain:w280
f:id:r-ngtm:20190105001553p:plain:w280