スキップしてメイン コンテンツに移動

テクスチャのリニア化スクリプト

modoユーザーグループOSAKAのブログでOrange Filmの柳村さんがテクスチャのリニア化スクリプトを公開してくださいました。
http://modoosaka.blogspot.com/

modo501は、デフォルトの出力ガンマが2.2に仕様変更されています。
本来は、出力ガンマが1.0に対してテクスチャのガンマが1.0で正しい色、明るさでレンダリングすることができます。
ですから、出力ガンマが2.2ならば、テクスチャのガンマは1.0/2.2の0.4546にするのが基本になりますが、modoはテクスチャのデフォルトガンマが1.0のままと中途半端な仕様になっています。
出力ガンマが2.2に変更されたのは、おそらく最近のリニアワークフローの影響かと思われますが、現在の仕様には疑問を感じます。
私は、出力ガンマもテクスチャのガンマもデフォルトは1.0であるべきだと思います。
理由はいくつかあります。
勉強会では少し解説をしていますが、出力ガンマを2.2にするリニアワークフローは、ベターではありますが、ベストではないのです。
話が長くなってしまうので、詳しい解説はまたの機会に…。

スクリプトは、レンダーアウトプットの出力ガンマに対してすべてテクスチャのガンマを変換するものと、個々のテクスチャを初期設定の表示ガンマの数値に対して変換するものの2種類が公開されています。
自分のワークフローに合わせてどちらか1つを使うのもいいですし、使い分けをするのであれば両方を使うのもいいと思います。
日本語版用にスクリプトの名前を変えてありますので、まず見てもらいましょう。
個々のテクスチャを初期設定の表示ガンマの数値に対して変換するスクリプトは、「表示ガンマにリニア変換」としています。
また、レンダーアウトプットの出力ガンマに対してすべてテクスチャのガンマを変換するスクリプトは、「すべてのテクスチャガンマに影響」としています。
なるべく日本語版の言い回しに近い表現を選んだつもりです(笑。
そこで、私の使い方を少し説明しておきます。
まず初期設定の表示ガンマには、オリジナルのガンマ値を入力してあります。
(デフォルト露光ガンマも同じガンマ値にしてあります。)
テクスチャを読み込んだ時点で、アンチエイリアシングは基本的に外しますので、そのときに「表示ガンマにリニア変換」で変換します。
出力ガンマを変更しない場合は、これだけでOKですが、テストレンダリングの段階で数種類のガンマ値でレンダリングしてテストする場合は、レンダーアウトプットのガンマ値を変更して「すべてのテクスチャガンマに影響」で一括変換します。
このテストには、スクリプトが大活躍します。
テストレンダリングは0.1から0.2刻みに行いますので、これがあるとないとでは大違いです。
最終的にはPhotoshopなどで調整するので、ガンマ値の0.1や0.2ぐらいは関係ないと思っている人もいるかとは思いますが、0.2も違えば調整後の画像にかなり違いが出ます。
(なんで違いが出るかは、以前勉強会で少しお話しました。そのとき、OpenEXRなどの32bit出力はお勧めしないなどのお話しもしましたが、覚えてくれているだろうか?)
まぁ、そんなことはともかく、最近のリニアワークフロー機能を搭載しているソフトは、みんな自動変換できるわけです。
modoは、ディフューズカラーは、自動変換できるのにどうしてテクスチャは、自動変換できないんでしょうね。
このスクリプトはmodoに標準で搭載されているべき機能だと思うので、お勧めします。

コメント

このブログの人気の投稿

MAYAのベベルの疑問解決!

エッジベベルはコーナーを切り落としたり、丸めたりとよく使う機能です。 MAYAの場合、ベベルを起動するとビュー内にウインドが表示されすぐに操作できるので大変便利です。このウインドはベベルだけではなく、押し出しやブリッジなど他の機能でも表示されます。 しかしほとんどの場合、ベベルは実寸で適用するのでMAYAの割合でサイズを設定するのは不便だなと感じていました。 ちなみにMODOは実寸のみ、CINEMA4Dは実寸がデフォルトで割合に変更も可能。 MAYAはCINEMA4Dとは逆で割合がデフォルトで実寸での適用も可能。 実寸での適用する場合は適用時にベベルオプションウインドで入力するか、アトリビュートエディタまたはチャンネルボックスレイヤエディタで割合から絶対(実寸)に変更しますが、ビュー内に表示されるウインドでは割合での入力しかできないので不便だなと思っていました。 しかし、ウインドの右上のボックスをクリックすれば表示させる内容などをカスタマイズができるんですね。 これ、今までは知りませんでしたわぁ〜。 設定値のコピペやウインドのサイズも変更可能ですやん。 こりゃ便利だぁ。 ちなみに、MAYAのベベルはなんでデフォルトが割合やねんと思っていましたが、割合でベベルというのも使い出すと色々便利だと思うようになった今日この頃です。 MODOは、こっち方向のベベルもできるようにして欲しいなぁ〜。

数値入力

地味な話ばかり続きますが、仕事する上で大切な部分でもありますので、もうしばらくお付き合いをよろしく! 例えばオブジェクトまたはエレメントを移動する場合に決まった数値分移動すること もあれば、移動してその移動距離を取得したいこともあります。 MODOやCINEMA4Dはマニピュレータを移動させると、マニピュレータの近くに移動した数値が表示されるので、どれだけ移動したかわかります。またMODOは移動のトランスフォームの項目でもわかります。MODOはほとんどのツールに数値が表示されるし、数値を制御できるので、大変便利だと思います。 MAYAはマニピュレータを移動すると移動した数値を表示する機能は基本的には多分ありません。しかしユニバーサルマニピュレータだけは移動量だけではなくオブジェクトのサイズも表示されます。また表示されている数値を変更するとその数値分移動、サイズ、回転します。マニピュレータのハンドルをクリックすると数値入力フィールドが出てきます。 すごく多機能で「大したことできそう」感が漂いますが、オブジェクトのバウンディングボックスに対しての操作だけなので大したことはできません。あまり使われていないからか、MAYA2015はシェルフにあったはずですが、MAYA2016ではメニューからしかアクセスできまん。 ではMAYAで移動した距離を取得する方法は?と一瞬考えましたがこれぐらいのことなら少し調べればmelで書けます。とにかくどこかに表示できればいいわけですしね。とは言ってもそんなことしている暇もないので、現状はスクリプトエディタに表示されるコマンドから移動距離を確認しています。 (はい、mel書かなくても表示できちゃいました。) さて、次に移動させる数値がわかっている場合はマニピュレータで移動するよりは即数値入力が一番手っ取り早いわけです。MODOはWキーで移動ツールを起動して数値を入力してspaceキーまたはQキーで移動ツールを解除という流れになりますが、以前からこれ結構面倒な手順だなと思っております。 MAYAは数値入力で移動するにはステータスラインにある入力ラインが手っ取り早いです。 ハイパーシェードのアイコンの横にありますが、多分デフォルトでは畳んでありますので、ひっそり感はマックスです!また、見た目もかなり「大したこと...

MODO11にバージョンアップそして問題発覚!

MODO 11にバージョンアップしました。MODO 10は飛ばしたので久しぶりにバージョンアップになります。MODO 902の機能には満足していたのですが、レンダリングのスレッド数に制限があってうちの88スレッドマシンでは44スレッドしか回らないという不都合もあったし今回はバージョンアップすることにしました。 おかげさまで無事88スレッドでレンダリングすることができましたが… ん〜?なんか遅い。 サンプルファイルの9Spheresでレンダリングしてみると44スレッドのMODO 902より遅い。 そこで、自動レンダリングスレッドオフにして幾つかのスレッド数でレンダリングしてみました。 結果は、 24スレッドが32.3秒 36スレッドが28.9秒 44スレッドが28.0秒 64スレッドが37.4秒 88スレッドが32.4秒 でした。 44スレッドの28秒が一番速くて64スレッドの37.4秒が一番遅い。 これじゃ、MODO 11にバージョンアップした意味ないじゃん。 それにMODOはネットワークレンダリングもかなり遅いし、打つ手なし! まぁ、今はMODOでレンダリングすることはないんだけどね、以前のデータを速くレンダリング出来ればいいかなと思った程度なので、あまり気にしないことにしよう。