Blender のシェーダでオブジェクトの基底ベクトルを取得する
カテゴリ:blender
matrix_world から取得する。拡縮に対応させるには各要素を拡縮の対応する要素で割る必要がある。
X
X軸の(x, y, z)は matrix_world[0][0]、matrix_world[1][0]、matrix_world[2][0] だ。
ノード
X軸の x を取得するドライバー
Y
Y軸の(x, y, z)は matrix_world[0][1]、matrix_world[1][1]、matrix_world[2][1] だ。
Z
Z軸の(x, y, z)は matrix_world[0][2]、matrix_world[1][2]、matrix_world[2][2] だ。
拡縮対応版
拡縮の(x, y, z)はそれぞれ scale[0]、scale[1]、scale[2] で取得できる。
法線に直交する基底ベクトルを作成する
法線と(0, 0, 1)の外積で右側ベクトルを作成し、作成した右側ベクトルと法線とで残りの基底を作成する。法線が(0, 0, (-)1)の時は代わりに(0, 1, 0)を使う。以下のノードの Greater Than には 0.999999 を入力する。