シェーダーグラフでオブジェクトを拡大・縮小

投稿者: | 2020-02-10


Transformでなく、シェーダーグラフを使ってオブジェクトを拡大・縮小してみます。

まずProject上で右クリックしてPBR Graphを作ります。

このシェーダーグラフを右クリックしてマテリアルを作ります。

するとこのシェーダーグラフが適用されたマテリアルが新規作成されます。このマテリアルをSphereオブジェクトなどにドラッグアンドドロップしておきます。

シェーダーグラフをダブルクリックして編集します。

まず、何もないところで右クリックしてCreate Nodeをクリックします。

作るノードの種類を選ぶウィンドウがでるので、検索窓を使って「Position」ノードを選択します。

Positionで今処理している部分の座標を得ます。

Spaceで座標空間を選べます。「Object」を選択します。

同様に、「Normal Vector」ノードを作ってSpaceで「Object」を選びます。

Normal Vectorはオブジェクトの表面の向きを出力します。

このノードのOutから何もないところへドラッグアンドドロップします。

すると、新しいノードを作るウィンドウが出るので、「Multiply: B」を選択します。

Bを選ぶと、Normal VectorのOutとMultiplyのBが接続された状態で、「Multiply」ノードが作られます。

Multiplyのもう一方の入力から何もないところへドラッグアンドドロップします。

「Integer」ノードを作ってみます。

これでNormal Vectorの座標と、Integerの値がかけあわせられます。

Integerの値で、オブジェクトの表面の向きを表すベクトルを伸縮させます。

これとPositionの座標を足すことで、オブジェクトを拡大・縮小させるために頂点を移動させたときの座標が得られます。
PositionのOutからドラッグアンドドロップして「Add」ノードを作ります。

MultiplyのOutをAddのもう一方の入力とつなげます。

これで伸び縮みしたNormal VectorとPositonの値が足し合わされます。

そして、AddのOutとマスターのVertex Positionを接続することで、オブジェクトの頂点を移動できるようにします。

Normal Vectorにかけあわせる値をインスペクタなどから変えられるようにするために、Integerを右クリックして、Convert To Propertyをクリックします。

これで左側のBlackboardにプロパティが表示されます。

左上のSave Assetでシェーダーグラフを保存します。

Blackboardが表示されないときは、右上の「Blackboard」をクリックしてオンにします。

一人称ステルスホラーゲームをitch.ioで公開しました。

https://nekoromorph.itch.io/hatch

コメントを残す

メールアドレスが公開されることはありません。