dskjal
広告
広告

Blender で視点依存リグ(View Dependent Rig)

カテゴリ:blender
demo
動作デモ

セルルックのキャラクターを斜めから見たときの造形をシェイプキーで補正することはよくある。これはカメラのZ軸回転量とメッシュのZ軸回転量との差を計算して、シェイプキーの影響力に変換すればいい。シェイプキーは時計回り用と反時計回り用とふたつシェイプキーを用意する。

ワールドZ回転量をドライバーで取得する単純な方法ならば実装は簡単だ。しかしこの方法はオブジェクトにほかの軸の回転が含まれているとうまくいかない。メッシュとカメラとの相対的な回転量を計算するにはカメラの回転行列をメッシュの回転行列で変換する必要がある。

単純にワールドZ回転量をドライバーで取得する方法

easy driver
ドライバーの設定例(時計回り)

.blend ファイルダウンロード(2.81)

メッシュとカメラとの相対的な回転量を計算する方法

カメラのワールド回転行列にメッシュのワールド回転逆行列を掛けると、メッシュの回転の逆回転をカメラに掛けられる。あとはカメラの回転行列をオイラー回転に変換すれば、各軸の回転量を取得できる。

matrix driver
変数としてワールド行列を取得する

計算式

回転行列は逆行列と転置行列とが一致するので、計算負荷の低い転置行列を使っている。

時計回り

-(ow.to_3x3().transposed() @ cw.to_3x3()).to_euler()[2]

反時計回り

(ow.to_3x3().transposed() @ cw.to_3x3()).to_euler()[2]

.blend ファイルダウンロード(2.81)。このファイルには VRoid Studio で作成したメッシュとテクスチャとが含まれている。それらのライセンスについては VRoid Studioの商用利用は可能ですか? を参照。

シェーダで透過率を変える場合


上記の動画はおそらく不透明な目と髪とを描画した後で、透過の目を描画している。

camera dot node
カメラと法線との角度で透過率を変更するノード

外部リンク

関連記事

Blender 記事の目次


広告
広告

カテゴリ