観てきました.
The Curious Case of Benjamin Button
約一年,この作品に関わりました.無事に出来上がってとりあえずメデタシ.クレジットも貰えたし.
作品を全部通して観たのは初めてだったのですが,とてもいい映画でした.巷の評価は最高!とは言えないようですが,自分は気に入りました.今まで製作に関わった作品の中では一番だと思います.
さて,VFXに関する記事がちらほらメディアに出始めましたね.そろそろ書いてもいいかと思うので少しだけ.以下,ネタバレに繋がる恐れもあるので気をつけて下さい.
幼少の頃,つまり老人の姿をしているBenjaminは,首から上が全てCGで出来ています.Brad Pittの顔の動きをキャプチャーして,CGで出来たBenjaminの顔にアサインしています.撮影では体の小さな別の役者さんが演技をしました.
自分は主に毛のレンダリングを担当しましたが,顔のlookdevも少しやりました.あとはショット毎のone-offな改善が多かったかな.あんまり役に立ってません(笑).
うちの会社(Digital Domain)はメディアに対して「この作品で我々は”不気味の谷”を越えた」と豪語しているようですが,どんなもんでしょう.作った側からは客観視できませんので,判断は観ていただく皆さんに委ねようと思います.
見つけた記事をいくつか張っておきます.
fxguide – vfx knowledge – The Curious Case of Aging Visual Effects
….. >> VFXWorld / Feature Articles << .....
….. >> VFXWorld / Feature Articles << …..
CGSociety – Curious Case of Benjamin Button
CBSで流れたビデオ(広告の後に始まります)がここで観られます.
どうやら米アカデミー賞のVFX部門にノミネートされた模様.
7 in Running for 2008 Visual Effects Oscar® | Press Release | AMPAS
でも,今年は”IRON MAN”じゃないかなー.

7 Comments
えっ!あれって顔は実写じゃなかったのですか!
特殊メイクで実現しているのかと思ってました…
最近の CG ってすごいっすねー…
さて、masuo さんは毛のレンダリングを担当されたそうで、ちょうどいま私のほうでも、自作レンダラで毛 + GI レンダリングをするにはどうしたものかと悩んでいたので、質問させてください.
毛レンダリングの GI 化はまずはさておき、毛データをモデラ -> レンダラへ出すときのデータ構造はなにがいいでしょうか?
- control point
- モデラ側でポリゴンに変換
- control point でレンダラに渡し、レンダラでは DSO でジオメトリ復元
あたりが、あり得る選択肢かなと.
control point ベースは軽いのでモデラとの統合はしやすい. しかしレンダリング結果はレンダラごとによって補間のしかたの違いで変化するかもしれないという欠点がある.
ポリゴンに変換は、モデラでの見た目でそのままレンダリングできるけど、データ量が膨大に.
DSO は、データ量は軽いし形状復元もコントロールできる、が、 DSO が使えるレンダラでないとレンダリングできない.
という感じで、それぞれ一長一短があるように思えます.
もしくは上記以外で、これがいい!これが毛データ構造のデファクトスタンダードだ!みたいなのがあればご教示ください.
驚いていただいて,ありがとうございます.
できる限りバレないようにするのが今回の目標だったので,嬉しいです.
さて,hairのデータをどうレンダラに渡すか,ですが,実際に製作をする観点からすると,hairをどようモデリングしてどう動かすか,という事にも絡んでくるので,これ!というやり方は決められないように思います.
が,自分が今まで関わってきた中では,全てsyoyoさんの挙げた三番目の方法でした.つまり,hair simulationを行うアプリケーションの自作プラグインを介してcontrol point及びその他のattributeデータを独自フォーマットで書き出し,レンダラ側の自作dsoで読み込んで実際のhairを生成する方法です(Benjaminでも同じです).
ただ,いくつかのパイプラインを見てきましたが,書き出すデータやフォーマットはそれぞれ違いましたし,レンダラのdso側にどこまでのコントロールを持たせるか,というのも,それぞれのシステムによって特徴がありました.大きな物では,control pointの生成すらもdsoでやってしまうものがありましたね.
個人的には,dso側はシンプルな方がいいように思います.複雑なコントロールはモデリングプログラム側でやった方が,いろいろと小回りも効くんじゃないでしょうか.
いや、ホントに今回のは 2009 年の年初めで現在一番びっくりした VFX です.
(ちなみに 2008 年は the day the earth stood still のスタジアム崩壊シーン)
そうですね、モデラともからんでくるので、レンダラ側だけでなんとかできるというわけにもいかないのが難しいところです.
とはいえ、control point + DSO がよく使われる方法なのですね.
参考になりました.
(そろそろ自作レンダラにも DSO サポートを取り入れる予定だったので、hair を DSO でやるというのが、ちょうどよいテストサンプルになりそうです)
DSO は、control point から形状を復元するときのプリミティブ型はどうしているでしょう?
ポリゴンでしょうか?曲面(シリンダ、チューブなど)形状でしょうか?
もしくは、なにか他におすすめのプリミティブ型があったりするでしょうか?
Wetaのトラックとスタジアム崩壊は凄かったですねー.
Benjaminもアメリカでは昨年末公開だったので,2008年の映画って事になってます.来月の米アカデミー賞にも出てくるでしょう.
hairをサポートしているレンダラの多くは(少なくともPRManとmental rayは),hair primitiveをサポートしていると思います.これはcontrol pointに沿って作られるリボン状のジオメトリで,面は常にカメラ,若しくはintersection testが行われるrayの方向を向いています.このリボンはポリゴンとしてメモリ状に作られるわけではなくて,intersection testの時にだけ使われるprimitiveです.
intersection testにtubeを使う物も見た事がありますが,hairは量が半端なく増えることがある(動物とか)ので,速度とanti-aliasを考えるとリボンの方が良いように思います.
スタジアム崩壊シーンは CG world によれば weta の Dual core の 800 CPUs レンダーファームを 2 日以上ぶん回してレンダリングしたそうです. 私もそれくらいの大規模なレンダリング処理を扱ってみたいものです :)
ribbon 形状は renderman では昔から使われている手法のようですね.
自作レンダラはレイトレなので、ribbon 形状をどう効率的にレイトレするかになりそうです.
まずは control point から復元される曲線の交差判定からですかね.
アドバイスありがとうございました.
横からお邪魔します。
先週、↓のメイキングページが公開になりましたね。
The Science Behind The Curious Case of Benjamin Button
http://www.benjaminbuttonfx.com/
ちょうど、次号のCinefex 日本版の記事を編集しているところなので、とっても役立ちます。
akirasさん,コメントありがとうございます.
そのサイトは最近公開されたもので,このブログでも紹介しようと思っていました.
Cinefex日本語版を編集されているんですね.
自分は英語版をチラ読みしただけですが,結構きちんと書いてあったと思います.翻訳作業は大変だと感じますが,がんばってください.
今後ともよろしくお願いします.