CG駄文

仕事が落ち着きました・・・
なんとも感慨深いです。。

終わってすぐにこんなん書いてるおれ乙、ってところですが、せっかく書いたので載せます。
 
今回の仕事を終えて、次の時代の絵作りを考えると、既存の方法ではそろそろ追いつかなくなってきそうだと思い、HDRI(OpenEXR)とGIを用いたレンダリングワークフローに想いを馳せてみました。
そろそろこの辺に目を向ける必要があるのは明白ですし、いろいろな面でぼちぼち現実的になって来たようにも思ったからです。

ただ、実現するにはいろいろ問題がありそうです。

ざっくり思いつくのは、

・レンダラ
・コンポジットソフト
・マルチレイヤーEXR
・リニアワークフロー
・ビューワー

ってところでしょうか。
結局全部ってことなんですがwwwwww

順に考えてみます。 

まずレンダラはGIが出来てEXRが出せるレンダラである必要があります。
まぁこれはmental rayでもV-RayでもRenderMan系でも大体問題ないでしょう。
レンダラのクオリティや速度、価格や政治的な問題などで好きなのを決めればいいんじゃないでしょうか。
現状僕はmental ray濃厚と考えています。次点で3Delight。PRManは価格的にOUTです。
V-Rayは未知数なのでSiggraph待ちということで。
そういえばリリースまでのカウントダウンが始まったみたいですねー。

コンポジットソフトはおそらく問題アリです。
ご存知のとおり日本ではAfter Effectsが主流であり、Shake、Nuke、Fusionといったユーザーは、全部あわせてもAEの1/10以下とかそんなもんでしょう、多くても。
AEでEXRを扱うためにはプラグインが必要なようです。
CS4からは付属された模様ですが、まだ試していないので分かりません。
読み込みとレイヤーの分割はそのプラグインを使うことで可能なようです。
そのプラグインが変なことをしなければ、色情報自体はAEの32bitモードで扱うことが可能だと思われます。
ただエフェクトが32bit対応していなかったりすると、ブラーをかけてもぼんやりボケちゃったりとかする可能性があるので、
その辺の対応も調べる必要ありです。
DOFかけたはいいけどぼんやりボケる、では意味ないですからね・・・。
せっかくHDR使えるなら明るいところはスパーンとシャープにボケて欲しいです。

扱えるとしても速度の問題というのはあります。
現状AEを32bitモードにすると、個人的な体感ではありますが、まぁえらい遅さです。
今後AEが新バージョンで64bit&マルチコア対応を行って劇的な速度改善が行われるなら話は別かもしれませんが、
このままでは使えるかどうか不安です僕は。

NukeやShake、Fusioinあたりは海外での実績があるようですし、おそらく問題ないでしょう。
が、それに乗り換えるという選択肢は安易に決めることは出来ません。
市場に使い手がいない、価格が高いなどなどの問題もあるけれども、それでも乗り換えるだけの理由がないことには無理です。

個人的にはAEなんて早く捨ててしまいたいところですが:P

そしてOpenEXRを使用するならやはりマルチレイヤーを使用したいところです。
データ管理などの面でもうれしい理由は多々思いつきます。
ただこれはまだ全く分からない領域です。
どうやってマルチレイヤーに出力するのか、計算量はどうなるのか、などなど。
mental rayに限定して言えば、おそらくframebuffer作ってOutputShaderでEXRにゴリゴリ書き込むんだと思われます。
となると自作になる・・・?
うーん、、、それは結構冗談じゃない感じですね、、。まぁ要調査ということで。
再計算の際のコストなども考えておきたいです。
おそらくこれは普通のframebufferやAOV使用の際にも関係あるトピックだと思われます。
どこに出すかが違うだけで、計算内容は同じはずですからね。
なのでここは最悪マルチレイヤーが使えなくても問題無しと考えておきます。

さらにGIを使うとなるとワークフローをリニア空間でのレンダリングを前提にするべきだと思われます。
以前ますおさんから詳しくご指摘いただいたので、概要は把握しているつもりなのですが、
GIだとなぜリニアにする必要があるのか、というところの理解が若干怪しいです。

今の僕の理解だとこんな感じです↓
ガンマ値と言うのは色の補正を行うための(?)指数であり、従来それは0-1の間で行われていた。
0-1の間での計算ならば、指数にいくつを持ってこようが結果は0-1に確実に収まるが、HDRの情報を扱うことにより、0-1から外れた数字を扱わないと行けなくなった際、本来あるべき値との差がどんどん大きくなる。
これは目で合わせれば良いや、というレベルではなく、完全にデータのロス、または破損として扱えるレベル。
なのでHDRIを扱う機会の多いGIを用いたワークフローではリニア空間による計算が必要。

という理解です。むっちゃくちゃ自信ないので鵜呑みにはしないでください。

わからないのは例えばHDRIの値を内部で扱う際、正規化したりとかしていたらどうなるのか、という点。
それならガンマでいくら掛けてもずれないじゃないか、と。
でもこれはシーケンスを扱うことを考えるとなさそう。つまりシーケンス画像においては、毎フレ最大値が変わる可能性があるわけで、となるとそこは行っちゃいかんと思われます。

それに例えば0-100の情報を0-1に正規化し、それに対してガンマ2.0を適応した際の、本来の値と差を考えると、
それは果たして有効な操作なのか、という点も疑問です。

なのでHDRIを扱う際はよりリニアワークフローによる恩恵の大きさ、というのはなんとなく分かる気もするんですが、
具体的な理解に結びついてないです、まだ。

なので今度一旦実践してみようかと思います。
結果や如何に。

あとはこれも地味に大きな問題だと思うのですが、画像ビューワの問題。
例えば上記の問題が無事解決して、リニアワークフローを採用してレンダリングを行うことにしたとします。
つまりレンダリングされた画像はリニアスペースで出力されます。
現在リニアスペースが広く普及していない理由は一つです。人間の目がリニアではないからです。
人間の目のガンマ値はおよそ2.2とされていて、我々が目で見たものというのは2.2の補正がかかっているものなのです。
リニアワークフローにおいては最後の最後、フィルムに焼く直前で2.2ないしは出力形態にあった適切なガンマ補正を行うわけなのですが、それはつまり、それまでデータは全てリニアである必要があります。
どういうことかといえば、目で見て適切に判断出来る画像ではないということです。

じゃあどうするか、というところで思いつくのが、表示側で補正してしまう方法。
つまりビューワーが、受けたデータにガンマ補正を行って表示してあげればOKなんじゃないの、ということです。
おそらくハリウッド大手が自前でビューワーを作っている背景には、この問題も少なからず関与しているのでしょう。
(もちろん速度だとか使い勝手だとかもあると思いますが。)

で、Mayaのレンダリングの際にそれを行うとすればどうするか。
残念ながらデフォルトでは出来ません。
AEにもありません。でもAEは最悪調整レイヤー1枚はさめばいいのでなんとかなりそうです。
問題はMaya。Mayaで特にMayaのプラグインレンダラを使用する際です。
mental rayならレンズシェーダでトーンマッピングしてやればいいじゃん、という話もありますが、
本番レンダリングの際に外し忘れたら最悪です。
やはりビューワーで対応しておいてもらいたいところです。

ちなみに3Delightのi-displayやHoudiniのmplay、Nukeなどではビューワーでの補正が行える様です。
RMSのitでも同様のことは可能でしょう。

僕はmental rayでのレンダリングワークフローを組むなら、本番レンダリング以外はmental ray for mayaを使ってMayaの中だけで諸々作業が出来るようにと考えていたので、MayaのRender Viewが改善されないことには別の方法を考えるしかなさそうですが、現実的かどうかは怪しいです。
RenderMan for Mayaなど、その他のプラグインレンダラでも同じことです。

次期バージョンに期待出来るような内容でもないですし、微妙です。
Mayaでのレンダリングの結果を別のウィンドウに投げられるならまた話は別ですが:P

 
とこんな風に、ざっと考えただけでもこれだけの問題が出てきました。
もっと突き詰めて考えたらさらにたくさん細かい問題が出てくるでしょう。

しかしCG表現として新しい時代の絵を求めるなら、ここは避けて通れない道でしょう。
メーカーが用意してくれた後では全く意味がないので、もう少しあれこれ調べてみることにします。
 

と、これだけ書きましたが、諸々間違っている可能性は多々あります。。。
見つけたら是非突っ込んでください。。

これらは多少時間かかっても自分の中でしっかり消化させて行きたいと思っています。
さらにこれに絡めてあれこれやりたいこともあるので、かなり時間はかかりそうですが、まぁ仕方ない。

わー大変ーー。
時間は有限。がんばります。

「CG駄文」への8件のフィードバック

  1. 読んでるだけで気分悪くなってきた。
    中小企業向けのワークフローって、なんだか確立されてないよねぇ。
    あっちを取るとこっちが立たず。
    んじゃ開発するか!ってなると買った方が安いぐらいの時間が必要。

    …あれ?商機?w

  2. >hajimeさん
    気分悪くwwwwww
    僕のせいではないですよwwwww
    中小はどうやっても個人レベルのパワーでなんとかしてね、っていう感じになっていますよね、、
    おそらくCGが少人数向けのものとして作られてないことに起因するんだと思うんですが、これだけ時間がたってもまだなんとなくぼんやりしているのはやはりやりづらいからなんでしょうねー。
    時間かかる以前に開発出来る人がいない。

    となるとやはり商機wwwwwww
    これはもしやwwwwwwwwwww

    そういえば最近こんなのありますね。興味はあるんですがどうなんでしょう。
    http://shotgunsoftware.com/

  3. リニアワークフローは私も興味ありますねー。
    絶対に手をつけないといけないけど、すぐに効果が
    表れるものでもないので、なかなかスタッフ全員に
    浸透させるのが難しいなーと考えてます。

    あと、ストレージとかネットワークとかのインフラが
    追いつかないとかwww

    いずれにしてもコンポジットツール!!!
    これが糞なままでは何をやっても糞ですwww。
    いっそ、After Effects の開発が終了すればいいのに!

  4. >chiyamaさん
    そろそろ考えないとまずいかなーと思ってます。
    HDRでの作業を視野に入れたら必須なのかな、と。
    勘違いかもしれませんが:P

    ストレージなどのインフラ問題は自分だけではどうにもならんので、はたしてどうしたもんか、と思ってます:(
    まぁ算段がついた時点で会社に相談する必要があるんだと思いますが。

    AEに関しても前ほどのイライラは無いです。やっぱりそれ使って仕事してる人をちゃんと見ることが出来たのは大きいですかね。
    でもやっぱり今後を考えると適切なソリューションとは思えないのも事実。
    どうにかせんとなーと思いますねー。

  5. 何もない所から始めようとすると大変ですよね.

    マルチレイヤーに関しては,Nukeのようにツール側でネイティブでサポートされていない限り,使い辛いかもしれません.

    例えば,Shakeはインプットがマルチレイヤーを想定していないので,対象になるレイヤーだけを分けてやらなければならない事があります.

    同じノードベースでも,ツール間で考え方が微妙に違うんです.

  6. >ますおさん
    何にもありませんwwwまっさらですwwww

    >マルチレイヤー
    Shakeはその辺考えられて無いんですか。開発停止の時代から見て、もしやとは思っていたのですが、、やはり、、

    やはり時代はNukeか、、、

  7. 大変ですね・・これから。。
    自分もリニアワークフローには大変興味があるんですが、やはり重要性がイマイチわかっていない点が多くスタッフを説得するのに難しい状態でもあります・・

    今までのガンマ有りレンダで致命的になる事はあるのでしょうか
    自分も最初GIやHDRといったものを考える際に、現実のデータを元にしたライティング下での注意点と落ち着いたので、演出ライティング的なものは平気かなーっとか思ってしまいましたw

    いやぁ。。きちんとやろうとしてる方が居てお恥ずかしいですw

  8. >ガリさん
    これから数年は気の抜けない時期になるんじゃないかと思ってます(`・ω・´) シャキーン
    僕もイマイチ理解しきれてないので、もう少し深い理解が必要だなと感じています、、、
    勉強します、、、いや勉強と言うか実地テストみたいな感じか・・・?

    次の時代の表現というのを常に考えたいものです、ほんとに。

コメントを残す

メールアドレスが公開されることはありません。