はじめに
前回の記事では、1 つの関節の回転角度に応じて 2 つの normal map を混ぜ合わせました。
今回は動く関節が 2 つです。
ちなみに本記事の手法で動く関節が 3 つ以上でも対応可能です。
前回は、normal map を全体的に混ぜ合わせていましたが、今回(通常)は局所的に混ぜ合わせます。

準備するもの
まずは、下図のような 3つの Bone からなる Armature と 円柱を紐づけてください。

そして前回同様、normal map を 2 つ作成してください。

group map の導入
「group map」は私が考えた造語です。
2つの normal map を局所的に混ぜ合わせるために group map を導入します。
画像のR値に index+1 が書き込まれ、GとBに 0 が書き込まれるものとします。
要するに (index + 1, 0, 0) が書き込まれます。
(0, 0, 0) が書き込まれている箇所は src のみ反映されます。係数が 0 ということです。
この画像はほぼ黒色なので見やすくするために (1, 0 ,0) を (128, 0, 0) で、(2, 0, 0) を (255, 0, 0) で置き換えたのが、以下です。
下側の薄い赤色が index#0 に対応した箇所で、上側の濃い赤色が index#1 に対応した箇所です。

一応、そのままの画像も貼り付けておきます。ほぼ黒です。

この index map を見やすくしたり、編集可能なアプリケーションは作ろうと思っています。
Material の設定
あとは group map から値を拾って、それに応じた係数を混ぜ合わせればOKです。
はじめに全体の Material をお見せします。前回の Material と係数の取得箇所以外全く同じです。

係数の Group Node をお見せします。
group map から色を取得し、それを index に変換したものを参照して係数を取得しています。
通常のプログラムなら簡単なことでも難しく見えてしまいます。
この箇所は自身のプログラムではまだ書いていませんが、index が 係数配列の添え字になるだけなので多分簡単です。

Image Texture の Texture interpolation は Closest にしてください。group map には 文字通り index が格納されているためです。

実際に動かしてみる
思った感じになりました。もうちょっと皺大きくした方がよかったですね。
