すあまの備忘録

誰得内容の自分のための非営利目的備忘録ブログ(筆者がわかっても内緒にしてください)

Tips - Houdini 20のOCIO周り

Houdini 20からOCIOを一括管理、Configの作成ができるEditorが搭載されました。

それに合わせていくつか変わっていたので分かる範囲でメモ。

ちなみにHoudini20のOCIOバージョンは2.2.1

OCIO Editor

MenuのEdit⇢OCIO Settings...から開けます。Houdini 20.0.473でOCIO Editorに変更が入っているので注意。

従来はenvのOCIO configのscene_linearのroleをデフォルトのRender Working Spaceとして扱っていました。

GUIを見るといかにもGUI上からWorking Spaceを変えられそうです。

変えてみると実際に反映されます。ですが...

なんとこのEditorは設定を変えるとOCIO Config自体を書き換えます。Configを作りたい場合は良いけど上書きはちょっと...

envでOCIOを定義した場合

そしてenvにOCIO Configのパスを通して起動すると挙動が変わります。

赤枠の部分に通したConfigへのパスが表示されます。

OCIO Configのパスが通っている状態

そしてRendering Working Space等を変更すると...なんと読んでいるConfigのパスも変わります。

変更後

envでOCIO Configのパスを通している場合は上書きできない仕様になっているようです。envのOCIO Config > OCIO Editorですね。

そしてOCIO Editorを開き直すか、Houdiniを再起動するとわかりますが、envでOCIO Configのパスを通している場合はOCIO Editorの設定は反映されません。

不用意に上書きや設定変更をしないためにも、チームで作業する場合はenvでOCIO Configのパスを通すのが安全です。

Revert To Factory

ちなみに、envでOCIO Configのパスを通していてもRevert To Factoryを押すとenvでOCIO Configのパスを無視します。絶対に押さないように。押してしまったらHoudiniを再起動するしか戻す方法はなさそうです。

Export

設定したFile RulesやWorking Space等が反映されたConfigファイルを書き出すことができます。

OCIO EditorのFile RulesはHoudiniを再起動しないと適応されないようなので注意

File Rules周りはややこしいのでとてもありがたい機能です。

File Rules

Houdini 20の機能ではないです。これはOCIO 2.0から追加された機能です。ですがOCIO Editorで設定しやすくなったので紹介。

会社間でのカラースペースルールが共有しやすい仕組みです。これを設定しない、もしくは別の方法でカラースペースを定義することでOCIO v2の運用をするのは愚策だと思います。

実際のConfigにはこんな感じで書かれています。

file_rules:
  - !<Rule> {name: srgb_tx, colorspace: sRGB - Texture, pattern: "*srgb_tx*", extension: "*"}
  - !<Rule> {name: srgb_texture, colorspace: sRGB - Texture, pattern: "*srgb_texture*", extension: "*"}
  - !<Rule> {name: ACEScg, colorspace: ACEScg, pattern: "*ACEScg*", extension: "*"}
~~~

OCIO v2以降はdefault Role、もしくはFile Rulesのどちらかを必ず設定すること。と書いてあるのでどちらかを必ず設定しましょう。

Role、File RulesどちらかにDefaultの定義がないとマッチしなかった場合のカラースペースがわけわからなくなります。必ずどちらかにDefaultがあると良いと思います。

File RulesはOCIO Edtiorで確認、設定するのがわかりやすくていいです。

例えば以下画像は、

  • Patternが*srgb_tx*なので、ファイル名のどこかにsrgb_txと含まれている。
  • Extensionが*なのですべての拡張子(ファイルフォーマット)。

上記条件にマッチしたファイルを、Color SpaceがsRGB - Textureになっているので、sRGB Textureで保存された画像である、と認識してカラースペース変換(sRGB Texture -> Rendering Working Space) をします。

なのでFile Rulesの定義に合わせて、ファイル名、拡張子等の条件で自動的にカラースペース変換する条件が好きに定義できるということです。

iconvert

ヘルプを見る限り、Houdini20からiconvertにもOCIO対応がなされています。

以前TOPでテクスチャをmipmap化する記事を書いた際にはimaketxでないとOCIO変換ができないと書きましたが、Houdini20以降であればiconvertでも可能です。iconvertのほうが設定が多いのでこちらのほうが良いでしょう。

godofsuama.hatenablog.com

環境変数

HOUDINI_OCIO_FILENAME_COLORSPACE

これもデフォルト値がH19.5から変わっています。

以下H19.5のヘルプのGoogle翻訳

ファイル名自体を調べることで、画像ファイルの OpenColorIO カラースペースの検出を有効にします。 1 に設定すると、検出が有効になります。 カラースペースに一致する最も長い右端の文字列がカラースペースとして使用されます。 何も見つからない場合は、Houdini のヒューリスティックを使用してカラースペースを決定します (JPG は sRGB、EXR はリニアなど)。 2 に設定すると、検出は同じ方法で行われますが、カラースペースが見つからない場合は、OpenColorIO config.ocio ファイルによって定義された「デフォルト」ロールが使用されます (OpenColorIO の厳密な解析)。 0に設定すると、検出は実行されず、Houdiniのネイティブヒューリスティックを使用してカラースペースが決定されます。

3 に設定すると、色空間の検出はより厳密な検出アルゴリズムで行われます。 このモードでは、ファイル名に埋め込まれたカラー スペースは、ピリオド (.)、アンダースコア (_)、ハイフン (-)、またはスペースで区切る必要があります。 OpenColorIO 解析を使用すると、「StrawHat.exr」は「生」の色空間にあるものとして解釈されます。 厳密な解析では、これは当てはまりません。

これは、有効な OCIO 環境変数が設定されている場合にのみ効果があります。

H20では上記についかで

4 (デフォルト) に設定すると、OpenColorIO ファイル解析が使用されますが、file_rules を使用すると、「デフォルト」カラー スペースではなく空の文字列が返されます。 これは file_rules の効率的なエバリュエーターを使用しますが、OCIO と 100% 互換性がない可能性があります。 5 に設定すると、OCIO ライブラリ file_rule 解析が使用されますが、動作は 5 に設定した場合と同じになります。

これは、有効な OCIO 環境変数が設定されている場合にのみ効果があります。

読んでもややこしすぎるんですが、Houdini20からは環境変数HOUDINI_OCIO_FILENAME_COLORSPACEのデフォルト値が4になったのでFile Rulesを元にカラースペースを設定しますということです。

今までもファイル名にカラースペースを入れていたりしたと思いますが、それがFile Rulesにより自由かつ柔軟に設定できるようになったのでそちらに対応という形です。

Houdini20のデフォルトはFile Rulesの設定を元に変換をかけるので、従来のファイル名での記述と変換結果が変わる可能性がある。

今後はFile Rulesで制御するようにし、ファイル名に入れるカラースペース名とFile RulesのPatternを一致させておきましょう。

File Rulesにルールが存在しない場合

従来どおりファイルの拡張子に基づいてカラースペースを決定します。ただ、これはどう変換されたのか把握するのが大変です。先ほども書いたようにdefaultを定義しておくのがいいです。

たとえば、JPG と PNG はsRGB Gamma2.2であると見なされますが、EXR と HDR はLinear Rec.709(sRGB)になります。

ルールが適用されない場合は、Karma OCIO Color Transform VOP を使って手動変換できます。

VEX

View Transformに変換できるVEXが追加された。けどVEXでコレどこで使うんだ...

ocio_transformview

VOP

以前からあった、Karma OCIO Color Transformノードもアップデートされてます。

VEXでと同様にView Transformにも対応してます。

Karma Render Settings

OCIOではないけどTone Mappingが追加された。

通常のVFXであればNuke等コンポジット時にTone Mapping的なことをするか、書き出し時に設定することなので下手に設定しないほうが良いです。

公式Helpページ

https://www.sidefx.com/docs/houdini/solaris/ocio.html#ocioeditor

File & Viewing rules

前の記事

以下はOCIO 2.0以前なので情報がちょっと古いです。

godofsuama.hatenablog.com

godofsuama.hatenablog.com