よくアニメ系の3DCGで課題とされることです。
カメラの角度によってかなーり可愛くない・・・
特に下からキャラクターを見上げた時がヤバい!
この問題を解決していきましょう!
管理人がYouTubeで解説!
RBF補間で解決しよう!
RBFとは、Radial Baisis Functionの略となります。
放射基底関数と呼ばれるものです。
シンプルにいうと、「ある特定の状態になった時、ある条件を発動できる!」そんなものです。
本ブログでRBFの解説は省略しますが、詳しく知りたい方は以下のブログがが参考になります。
RBF 補間 (Radial Basis Function Interpolation) の概要と実装 | yuki-koyama’s blog
RBFを使うには?
自前で実装するのは大変です。
以下のような理由があげられます。
1.RBFの数学が難しい。(管理人が数学苦手なのもありますけど・・・)
2.Mayaのカスタムノード作るのが大変!
ただ、それでも自前で実装できるのは価値があります。
アーティストが自前で実装できるようになれば
「数学もMayaのカスタムノードも作れるのか!強い人だ!と思われる可能性はありますね。
プログラマだったら「ふーん・・・そう。」かもしれませんけど…。
brave rabbitのweightDriverを使おう!
リガーならお世話になっているかも?brave rabbitからRBFが使えるweightDriverを使いましょう。
こちらは無料でダウンロードでき、ソースコードも紹介されています。
まずは動きをweightDriverで確認し、自前で実装する…といった流れが良いかもしれませんね。
ドライバーの計算方法
顔の変形を行う場合に、顔の空間で処理を行うことが多いです。
LocalActorPosition(Transform)を顔の骨と仮定すると、その値はローカルとなるのでワールド空間の値に変形します。
pointMatrixMultノードを使ってワールドに変換しています。
最後にその2つのベクトルの差のベクトル情報を利用したものをドライバーとして利用します。
まとめ
カメラ位置で補正よりも、注目すべき技術はRBFですね。
RBFはかなり汎用的に使えます。Pose Space DeformationするならRBF!ってくらいです。
是非、使い方をマスターして最高のデフォーメーションを目指しましょう!
コメント