Blenderで頂点ウェイトをシェーダーノードで使う。

頂点ウェイト(頂点グループ)の値は直接シェーダーで使うことができません。
ウェイト値をUV WarpモディファイアでUVに変換して、シェーダーノードではUV値を取得するようにします。

参考

こちらの手順を画像付きで紹介します。

手順

表示したい頂点ウェイト(頂点グループ)を用意します。

画像1


頂点ウェイトを変換するためのUVを新しく作成します。

画像2

編集モードでUV展開し、UV>Weld/Align>WeldですべてのUV頂点を1か所にまとめます。

画像3


すべてのUV頂点の位置を(0, 0)に移動させます。

画像4

UV Warpモディファイア用に2つのオブジェクト、基準となるオブジェクト(FROM)に対して、X軸方向に-1だけ移動させたオブジェクト(TO)を用意します。
(FROMが右側(0,0,0)でTOが左側(-1, 0, 0)になります。直感と違うので、いつも混乱します。)

画像5

UV Warpモディファイアを追加し、以下のように設定します。

画像6

これで、頂点ウェイト(頂点グループ)の値がUVに変換されました。
このモディファイアは2つのオブジェクトの差を使ってUVを変換します。
その際、影響を受けるものを頂点グループで制御しています。

シェーダーを用意します。X軸方向のオフセットなので、Separate XYZでX成分だけ抽出します。
ColorRampでHSV, Farにし、左を青色(0, 0, 1)、右を赤色(1, 0, 0)にすると、Weight Paintのようになります。

画像7

画像8


編集モードで頂点ウェイトを確認しながら設定する。

編集モードではウェイトを塗ることはできませんが、頂点を選択して、Vertex GroupsのWeightに値を入力してAssignを押すと、Weightを設定できます。

画像9


Armatureモディファイアの右にあるアイコン2つをONにすると、編集モードでもモディファイア変形後のメッシュが表示されます。(BoneはViewport DisplayでIn FrontをONにしています)

画像10

編集モードで頂点ウェイトを表示する機能は備わっていますがBoneが隠れます。

OverlaysのVertex Group Weightsをオンにすると頂点ウェイトが表示されます。
しかし、Boneが隠れます。

画像11

画像12

以上です。

この記事が気に入ったらサポートをしてみませんか?