[Unity]レイマーチングでナッシー(アローラのすがた)を描画してみた

無題
Pocket

クリエイティブコーディングもくもく会に参加してきました。

openFrameworks, Processing, WebGL, vvvv, Touch Designer, Max/Msp, Arduinoなどを触りたい人が集まり、かっこいい映像とか作ってワイワイする感じのイベントで、めちゃんこ楽しかったです。

第二回クリエイティブコーディングもくもく会 – connpass

作ったもの

こんなものを作りました。
無題

6時間で作ったので色々ガバガバなのは許してください。(顔とか)

最初はGLSL Sandboxでただ眺めるだけの物を作っていましたが、時間が余ったのでUnityに移植して遊べる感じにしてみました。

 

GLSL Sandboxのアドレスも貼っておきます。

http://glslsandbox.com/e#34598.0

 

 

Unity版の遊び方

下記のコードをアセット内に突っ込み、Quadを作って適当にシェーダーをアタッチしたマテリアルを渡せば動きます。

Sキー、Aキーに反応して動くのでVJイベントとかに持ち込みましょう。

無題

無題

 

仕組み

レイマーチングを用いてナッシーを描画しています。

レイマーチングの仕組みについては以下のページなどで軽く紹介しているので、そちらを参照して下さい。

GLSL Sandboxで遊ぼう

 

レイを飛ばして衝突判定を行う処理

レイマーチング処理は至って普通に書いています。

 

距離関数

こちらも至って普通だと思います。

他の関数で定義されている距離関数をminで合成しています。

若干マジックナンバー気味なoffsetとnoiseに関しては、最後に1時間でプレイアブルにするために無理やり突っ込みました。

 

各パーツごとの距離関数

かなりゴリ押ししている部分です。

特に、尻尾と頭についている草部分の表現は苦労した上若干発散してしまっているので、もっと良い方法があると思います。

 

 

コード全文

 

シェーダー

 

C#コード

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

(Required)

Proudly powered by WordPress   Premium Style Theme by www.gopiplus.com