2009年04月21日

BPTJ2009のVFXコンテスト

4月25日(土)18:00から、Blender Party @Tokyo,Japan 2009 が東京の神保町 ダイニングカフェ・エスペリアで開催されます。私も参加させていただく予定です。Blender Patyについての詳細はこちらをご参照ください。

これに合わせて行われているVFXコンテストに私も応募させていただきました。コンテストにエントリーされている全ての動画は、こちらで確認できます。

私が応募した動画はこちらになります。
動画の中で使用しているのは、Poser用フィギュアとして公開している「くるる」をBlender用に移植している途中段階のものです。まだ、色々と設定が詰まっていないので正式に公開していませんが、このブログでも以前サンプルデータとして使ったりしています。

作成した動画は16秒と短めです。内容は、机の上でフィギュアになりきっているつもりのくるるさんが、カメラに見つかって焦っているというシーンを作りました。
pic090421_16.jpg

ちなみにくるるさんのまわりにある本物のフィギュアですが、こちらはスペインのリヤドロという陶器のフィギュアです。ちょっと値段が高めですが、デパートの洋食器などの贈答品の売り場に置かれていることがあります。もし実物を見ていただけたら、その造型の素晴らしさに驚かれるのではないかと思います。機会があったら、探してみてください。

ということで、今回は少しプログラミングのことから離れて、応募した動画のことを書いてみようと思います。
このコンテストのテーマとなっているのが、実写映像と3DCGの合成です。私はカメラトラッキング(マッチムーブ)ソフトというものを初めて使用しました。カメラトラッキングのために使用したのはVoodooというソフトウェアです。
pic090421_01.jpg pic090421_04.jpg

カメラトラッキング自体が今回初めて体験するものだったのですが、少しだけ使ってみた範囲では、なかなか思い通りのカメラ設定を得るのは難しいように感じました。使用する素材の動画の内容によって状況がかなり変わってくると思いますが、
  1. エンコードによって画質が落ちている場合、得られるカメラデータの精度も落ちる。
  2. 短い時間ならきちんとしたカメラデータが得られる動画でも、ある程度以上の長さをまとめて解析しようとするとうまくいかない。
というようなことを、実際に作業した中で体験しました。

一度解析が終わった後で、さらにデータを修正することでカメラデータの精度を向上させることもできるようですが、今回はそこまでする時間の余裕がありませんでした。机の上を撮影した動画はいくつか試した中では比較的良好なカメラのデータが得られました。上の画像に映っている猫の動画では、映像とカメラの動きが今ひとつ一致しませんでした。


カメラトラッキングを使っていることというのが今回の動画で一番の重要項目ですが、それ以外にも何点か工夫している部分がありますので、ここからはその辺りについて書いてみたいと思います。

まず、キャラクターの髪、衣服にはクロスシミュレーションを使用していますが、メッシュの形状自体をシミュレーションするのではなく、より少ない頂点数のメッシュでシミュレーションを行い、実際の形状の変形はそれらのシミュレーション用のメッシュに追従させたアーマチュアによって行っています。
pic090421_15.jpg

このように実際にレンダリングするメッシュとシミュレーションのメッシュを分離するという方式は、そのままシミュレーションするよりもセットアップに手間はかかりますが、一度設定を完了してしまえば色々と応用ができる可能性があります。
  1. IPOカーブにベイクすることで自由に編集できる。
  2. 同じシミュレーション設定で全く別の形状を動かすことができる。
今回、衣服のシミュレーションを普通に行うとキャラクターがくしゃみをする動作の反動で激しく変形しすぎてしまい、パラメータの調整だけでは制御が難しい感じになりました。これに対して、シミュレーション用のメッシュで裾の部分を本来よりもかなり長めに伸ばすことで、変形を抑えるようにしています。
pic090421_06.jpg pic090421_07.jpg

髪についてはシミュレーション結果をそのまま使用していますが、服の方はキャラクターのボディーが貫通する部分がかなりあったため、シミュレーションした結果をIPOカーブで編集できるようにベイクし、手動でキーフレームの調整を行っています。

以前、Vimeoにアップした動画では一定の間隔でキーフレームを間引くようにして、残したキーフレームを調整するというような方法を行いました。
しかし、今回の動画では瞬間的にかなり大きな変動が起こるため、キーフレームを間引くことはせず、全フレームにキーフレームを打った状態のままで使用しています。この場合、問題の起こっている部分のキーフレームを全て手作業で修正するというのは困難なため、
  1. まず、ボディーが服を貫通しているフレーム位置を調べ、特定のボーンについてある程度の範囲にわたってキーフレームを削除する。
  2. ボディーが服を貫通しないようにボーンの回転を調整し、適当な位置にキーフレームを打つ。
というような形で修正しました。
pic090421_08.jpg

この辺りについては、NLAエディタを使用すれば変形を修正するためだけのアクションを作成することもできますし、もっとうまく修正する方法があるかもしれません。


そして、もう一つ工夫した点を上げるとすると、髪のレンダリングの部分でアンチエイリアスがうまく利かなかったのを修正していることです。これについては、もしかすると何かのスイッチで解消できるのを私が知らないだけだったのかもしれませんが、「Render」パネルのOSAの値を変えたり、マテリアルの「Links and Pipeline」パネルでFull Osaを使用してもうまく回避できませんでした。

下の画像を見ていただくと、影の暗い部分の形がフレームごとに全く違う位置、形状になっているのがわかると思います。動画として再生する場合、この部分はちらちらと明滅するように表示され、せっかくカメラトラッキングで実写映像と動きを合わせていても、映像的にとても違和感のあるものになってしまいます。
pic090421_09.jpg

これに対する解決策としては、一旦倍の解像度でレンダリングしたものをもとの解像度に縮小する、ということでかなり改善できました。
pic090421_10.jpg

ただし、画像全体に対してこれを行ってみたところ、髪以外の部分では元のレンダリングにくらべて画像がぶれているような感じになってしまい、これはこれでちょっと問題があるという状況になりました。最終的には、髪だけを部分レンダリングしたものをアニメーション出力し、元の画像と2倍にレンダリングしたものを合成しています。
pic090421_11.jpg pic090421_12.jpg

pic090421_13.jpg pic090421_14.jpg

本来ならば、髪の部分だけを2倍にレンダリング、縮小を行った画像をオリジナルに合成すればいいのですが、今回は試しに全体を2倍サイズでレンダリングしてみたものが既に作成済みだったため、上のNode Editorの画面では髪の部分レンダリングはアルファ値のみを使用しています。
posted by mato at 01:16| Comment(2) | Blender | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
本当にご無沙汰しております。お元気なようですね。
実写と3DCGの合成・・・結構違和感無いですね。一瞬全部CGだと思ってしまいました(笑)。
Blender Partyいかがでしたか?あるのは知ってたんですが、暇が無くて・・・。凄い方々が集まったんだろうなあ。
また時々お邪魔しますね。それでは。
Posted by t-nanase at 2009年04月26日 21:07
こんばんは。
お久しぶりです。
突然、ブログの更新を止めてしまって、そのまま何のご連絡もしなくて、すみませんでした。
健康に問題があったわけではないのでもう少し何とかできたかもしれないのですが、一時期は完全にネット上から引退するつもりになっていたこともあって、中途半端になってしまいました。

今回はレンダリング時間を短くするためにAOとかは使用していませんが、SSSを使っているだけでも質感的にそれらしくなってくれているようです。暗い部屋でデスクライト一灯というライティングの条件も、3D側でシーンを再現するのには比較的向いていたかもしれません。

Blender Partyについては、新しい記事を書きましたので、そちらに簡単に感想を書かせていただきました。

以前とは、全然方向性の違うブログになっていますが、これからもよろしくお願いします。
Posted by mato at 2009年04月26日 23:02
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。