Unity++blog.

UnityやC#とかについて学習したことを書いてます

Unityでホログラム風のオブジェクトをシェーダグラフで作成する

今回はシェーダグラフでホログラム風のオブジェクトを作成する学習です。

最終的には下GIFのようになります。

f:id:nabesi777:20181024173951g:plain

 

 

 

準備するものは好きな3Dオブジェクトと下のようなテクスチャです。

f:id:nabesi777:20181024174123p:plain

 

この縞模様のテクスチャの線の幅などを変えるとまた違う雰囲気のホログラムとなります!

 

それでは作り方です。シェーダグラフの基本的な設定はこちらです。 

nabesi777.hatenablog.com

 

一回すでに作成したシェーダを使ってまして、プロパティ欄を消すのは面倒なので、この状態からスタートします。一番右の家は右クリック>CustomMeshで選択しました。(オブジェクトは好きなものを選んで表示させます。)

f:id:nabesi777:20181024175505j:plain

 

まずはプロパティ欄にColorを作成して基本となる色を決めて、Albedoへ繋げます。

そしてプロパティへTexture2Dを作成して縞々模様のテクスチャを入れ、これをemissionへ繋げます。また、このままではメインノードへ繋げない為、図のようにします。

 

 

こんな感じです。

f:id:nabesi777:20181024180158j:plain

 (メインノード、sample Texture2D,color,縞々texture)

 

 次に縞々テクスチャをスクロールさせます。

Vecter2とVector1をプロパティへ作成して図のようにそれぞれのノードへ繋げます。

 TilingAndOffsetへ繋げるVecter2からは縞々の幅を、MultiplyにつなげたVector1はスクロールスピードをコントロールします。そしてできたものをAlphaへ繋げます。上図では誤って他のところへ繋げています。また、その際にメインノードの歯車からSurfaceをTransparentへ変えます。

 これで縞々が動くようになりました。色などをうまく設定できればもうそれっぽくなりました。

f:id:nabesi777:20181024181942j:plain

 (Tiling And offset,ScreenPosition,time,vector2,vector1,multiply)

 

しかしまだ単調なので、もっとリアルなホログラムに近づけていきます。

プロパティへColorを作成して任意の色を付けます。これを図のようにFresnelEffectノードと掛け合わせてEmissionへ繋ぎます。

f:id:nabesi777:20181024182251j:plain

(FresnelEffect,color,Multiply)

 

良い感じになってきました!

しかしもっと質感を高めるのにOneMinusというノード(値の反転)を使用して、図のように繫ぎ直します。

f:id:nabesi777:20181024182903j:plain

(OneMinus,multiply,Add,color) 

 

 そして最後にノイズを入れてさらにリアリティを出します!

f:id:nabesi777:20181024183328j:plain

 (Time,RandomRange,Comparison,Branch,Multiply)

 

完成しました。作っていて楽しいですし、便利なのでシェーダグラフの正式な実装が楽しみです!