« (続) 3DCGとガンマ調整 - 色合歪み編 | トップページ | カッシーニ(Cassini):公開モデル紹介 »

2010/04/07

DeGamma v1.0: SHADE用 色空間線形化スクリプト

DeGamma: Color-Space Linearlizer v1.0 (SHADE用 Python スクリプト)

作動確認> WindowsXP + SHADE 10.5.3 / 11.0.3 Basic
SHADE 11.0.0 には異常に Python 連携が遅くなる不具合があるためアップデートが必須。

機能
  いわゆる「Linear Workflow (線形作業フロー)」を SHADE 環境で作るためのソフトです。
  ユーザーの非線形色空間と 3Dレンダラーの線形色空間とを、入力・出力両側で変換して、
  歪みのない、3Dレンダラー本来の結果を得ることが可能になります。
  Linear_in_nonlinearcolorspace

主な効能
  1) 立体形状歪み光源歪みなどが除去された陰影が得られる。
    Humanoid_linearlization 
  2) 光の急減衰が解消し、本来の広がりを持った光の効果が得られる。
    Pointlight_linearlization 光源・床とも白 RGB(255,255,255) のため入力歪みは無し
  3) 出力ガンマ補正のみを行った時に発生する問題(過剰明度・色褪せ・色変わりなど)が、
    解消または回避される。
    Maid_linearlization モデル:かこみきさん作品「メイドさん

  色空間線形化の参考記事(このブログ):
   a) OFISの使い方 - 3: 3DCGとガンマ調整
   b) (続) 3DCGとガンマ調整 - 明暗歪み編
   c) (続) 3DCGとガンマ調整 - 色合歪み編

副作用
  ・ SHADEの色設定窓・材質窓・マップ画像表示窓などが線形化されていないため、
   これらの表示色(明暗+色合)線形化された色データとの視覚差が発生する。
  ・ この内、色合視覚差については、固定R:G:B比の色空間変換を使用することで回避できる。
   (ただし固定R:G:B比変換は、データの色合歪みを除去しない方式のため、
    データのポータビリティーに注意が必要)

ユーザー インターフェイス
  Degamma10_2 

ダウンロードDownload ( DeGamma_v10.zip, 205 KB )

インストール
  1) もしも SHADE を開いていたら閉じる。
  2) DeGamma_vXX.zip ファイルを展開する(またはダウンロード窓で「開く」を選択)。
  3) 展開用フォルダの直下にある「DeGamma」という名前のフォルダを、
    SHADE本体部の「widgetsフォルダ
      例: C:\Program Files\e frontier\Shade 11\widgets
    の下に移動またはコピー。
      例: C:\Program Files\e frontier\Shade 11\widgets\DeGamma

使用法
  SHADEを起動。 SHADEのメニューバーから <スクリプト> ⇒ <DeGamma: Color-Space L・・・>

--------
OBJインポーター OFIS の付加機能として試用していた部分ですが、ようやく独立しました。
独立したら生意気になって、「線形」「非線形」とか「色空間」とか言いたがります(笑)。
でもやってることは、OFIS での手伝い仕事部分に、背景天球や無限遠光源などの調整が
加わった程度。ソフトウェアー的にも軽い仕事です。

--------
ガンマ補正なしの出力状態で作成された SHADE シーンの線形化

多くの場合、最初に「シーン全体」の線形化を行って、何か不都合な箇所があれば
手動調整するのが、一番手っ取り早いでしょう。
しかし線形化すると、照明の伸びが全く違うので、複数光源の場合には光源の調整が
必要になることが多いです。
もしも(無限遠光源や背景大域照明以外の)光源が複数ある場合には、「光源パート」を
作って、その中に全部の光源物体を入れて、その光源パートのレバーで一括調光すると
作業が楽になります。

--------
データのエクスポート

材質も含めたエクスポートでは、
  『線形化しない状態』 (線形化されている場合は逆変換した状態)
の方が、一般的には都合が良いかと思います。
相手ソフトやそのインポーターの線形化対応次第ですが・・・

また、線形化されたデータをエクスポートする場合、
その線形化において「固定R:G:B比」を使用していると、相手ソフトも
「固定R:G:B比」の出力変換に対応している必要があります。

したがって、現時点では、『線形化しない状態』が最も汎用性の高い
データの状態になるでしょう。

--------
HDR画像について

現時点では DeGamma も OFIS も HDR 画像は線形化の対象から外しています。
基本的には、SHADE の HDR 画像のガンマ処理や DR 選択が不明なためです。

--------
「線形化変換」を施しては"いけない"色データ

典型的には、以下のようなデータは、「線形化変換」を適用すべきかどうか、
検討してみる必要があるでしょう。

1) 透明度マップ(パターン色および画像)
2) バンプマップ(画像)
3) 材質色や他の光源色とのバランスを取るように「数値的」に決めた光源色など

「見た目」と「色データ数値」とが、中間トーン部で食い違うのが「非線形環境」。
その環境において、「見た目」の方で色(明るさ+色合い)を決めるから
色データが歪んで、その歪みを取るために線形化変換が必要になるわけですね。
なので決め方が「見た目の色」に影響されてなければ、歪みは生じません。
(もしも歪みのないデータに線形化変換を掛けると、逆向きの歪みが発生してしまう)

例えば、バンプマップ画像を作る時、一番高いところは白の RGB(255, 255, 255)、
一番低いところは黒の RGB(0, 0, 0) として、
「丁度中間の高さは、えーっと、 255 の半分だから、大体 RGB(128, 128, 128) で」
「そのまた半分の高さは、えーっと、計算面倒なので、明るさレバーでこのあたり」
とか、色決めをやりますよね。
この場合、「見た目の色」ではなく、「論理的」かつ「比例関係=線形関係」によって
色データを作成しているため、出来上がったマップ画像は歪みのない状態、つまり
「線形色空間用データ」になっています。透明度マップなども同じ。

またペイントソフトでグラデを使ったりする場合も、使用ソフトが「色数値」として
線形なグラデを描いてくれていれば、そのグラデ部は歪みのない線形データ。
もしも白黒2色だけしか使用していなければ、中間トーン部が無いので、
線形化変換を掛けても不変。よってワイルドカード。・・・

と大体の原理がわかれば、あとはケースバイケースで適当に判断します。
(要は目に付くようなアラがレンダリング結果に出なければ良いので、
以上は結果の要チェック箇所を把握しておくための話)

--------
SHADE 11 「思わぬところに落とし穴が2つも・・・」

先日、ディスクの一時置き場を整理していたところ、
去年の暮れに SHADE  11 の試用版をダウンロードしておいたのを見つけて、
「あっ、これで作動チェックができたのに」と初インストール。
で OFISを使ってみたら、いきなりの作動エラーです。
Python エラー「Bad Magic Number」。
(『Python のバージョン』が異なる pyc ライブラリを使おうとした時に起きる現象)

SHADEのスクリプト窓から
import sys
print sys.version
で Python のバージョンを見てみると、なんと「2.63」 (SHADE 10.5 は Python 2.5)。
Python 2.6 は 3.0 (最新 3.1 ) に円滑移行するための補間的なバージョンなので、
おそらく SHADE開発側の改定作業上の都合による変更でしょうね。
でも少なくとも、変えたなら変えたとユーザーにアナウンスしてくれないと、、、
ちなみにネットには、この情報は見当たりません(googleロボットの検索範囲では・・・)。

とにかくソースファイルを入れて動かしてみると、軽い図形だけのデータなら
「毎回メッセージ応答が引っかかって遅いなあ」程度で、他は SHADE 10.5 環境と全く同じ。
そこで時間計測のために、画像多目のデータを 1つインポートし始めたところ、

  画像のガンマ復元が、、、延々と、、、続いて、、、一向に、、、終わらない、、、

1024 x 1024 の画像なら普通 SHADE 10.5 で 4 秒ほどで処理できるのが、
1分半近く掛かってます。なんと 「 2 0 倍 」 ほどの遅さ!!
ついでに Professional版だと、さらにその倍ぐらい遅い!(汗)

これでは画像のガンマ復元は(画像処理ソフトで)手作業でやった方が速いことに・・・
翌日、SHADE 11を持ってる知り合いのところで試してみると、やはり製品版も同じ。
そこで最新 UpKit の 11.0.3 を落として、更新してから走らせてみると・・・
今度は普通の速度。Python ゆっくりさんバグは UpKit で直ってました。

そんなこんなで何かと不便になったため、バージョン飛ばしするつもりでいた
SHADE 11 Basic にオンライン アップデート。
まだ触れる時間がほとんど無いので、10.5 ⇒ 11 の評価はできませんが、
画像調整機能が付いたりしているので、目と鼻の先にあるリニアーワークフローにも
次の版では対応してくれることでしょう。きっと・・・
そうすればこの半端なスクリプト機能はもう不要。全窓で「本当の色」が見えるように・・・

☆☆☆
ということで、もしも SHADE 11 なら速度回復のために最新 UpKit を入れましょう。
また OFIS v1.2 も、少し前から Python バージョン変化対応版になっています。
この DeGamma は、最初から変化対応版です。(変化の範囲にもよりますが・・・)
☆☆☆

|

« (続) 3DCGとガンマ調整 - 色合歪み編 | トップページ | カッシーニ(Cassini):公開モデル紹介 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/554431/48025336

この記事へのトラックバック一覧です: DeGamma v1.0: SHADE用 色空間線形化スクリプト:

« (続) 3DCGとガンマ調整 - 色合歪み編 | トップページ | カッシーニ(Cassini):公開モデル紹介 »