7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HoudiniAdvent Calendar 2024

Day 7

HoudiniでLUT(.cube)ファイルを作る

Last updated at Posted at 2024-12-06

はじめに

カラーグレーディングでLUT(Look Up Table)というものがあります。
インターネット上で配布・販売されているLUTにもいくつか種類がありますが、その中でも3DLUTと呼ばれ.cubeというファイルで共有されるものがあります。
今回はこの.cubeファイルをHoudiniで作成し、他ソフトでは作れないようなカラグレ用LUTを作っていきます。

※この記事は、「へー、こんなこともできるんだ」くらいの温度感で見ていただければと思います。
実用性は一切ありません。

今回の目的

  1. Houdiniをつかってカラグレ用LUTをつくる
  2. .cubeファイルとしてLUTを書き出す

事前知識

LUTについて

ひとくちにLUTといってもいくつか種類があることはご存じではないでしょうか。
キャリブレーション用、色空間変換、モニター用、フィルムっぽくする、などなど。
ざっくり言うとこれらはテクニカルLUTとクリエイティブLUTに分けられ、上記で言えば最初の三つはテクニカル用、最後の一つはクリエイティブ用となります。

テクニカルLUTではモニターの色をそろえたり、logで撮影した素材をrec709で見たり、ACEScgをsRGBで見たりといった、正しく色を見るためのものです。
一方でクリエイティブLUTでは、フィルムっぽい雰囲気をだしたり、画像や映像のスタイルを決めるのに使ったりするものだと言えます。

そして、今回の記事ではクリエイティブLUTを作ることを想定しています。

.cubeファイルについて

LUTのフォーマットも .lut.cube の2種類あります。
.lut(.blut)は1次元のLUTであり、1つの値について変換することができます。
これを3つ組み合わせてRGBの3次元のLUTをつくることもできますが、これには少し制約があります。
その制約を改善したものが.cubeであり、.lutよりも柔軟に色を調整することができます。
詳しくは参考文献のページをどうぞ。

HoudiniでLUTを作る意義

クリエイティブLUTを自分でつくる場合、ガンマやコントラスト、彩度や色調をパラメータやグラフで調整することがほとんどかと思います。
しかし、これだけだと出しにくい色が存在し、またアーティファクトがでてしまうことが珍しくありません。

そこでHoudiniを使い直接3次元的にLUTを調整することで、よりなめらかでアーティファクトのできにくいLUTをつくることができます。

LUTや色に関する参考文献

自分はコンポジターでもカラリストでもない門外漢なので上記の色やLUTに関する記述は大いに間違いを含む可能性があります。
コメントでの指摘修正大歓迎です。
https://www.studiobinder.com/blog/what-is-lut/
https://mononodes.com/creative-luts/
https://www.vegascreativesoftware.com/ca/video-editing/what-are-and-how-use-luts-in-color-grading/
https://lightillusion.com/what_are_luts.html
https://www.sidefx.com/docs/hdk/_h_d_k__i_o__l_u_t.html

作業

.cubeファイルをのぞいてみる

自分で作る前に既存の.cubeファイルがどうなってるのか見てみます。
一先ずメモ帳などで開いてみるとこんな感じ。
image.png
最初に設定用の変数があり、以下RBGの順で各点の情報が並んでいるだけです。
LUT_3D_SIZE 33とあることから各軸33頂点、33x33x33の全35937頂点の情報が入っているので、これをHoudini上で見てみようと思います。

こうなりました。
viewLUT.gif

下図のようにノードを組んでみました。
image.png

Pythonノードでパスを指定して外部ファイルを読み込み、各座標に点を生成。
その後@ptnumから初期位置の座標を計算し、それで色づけ。

ここで、.cubeファイルそのまま読み込む方法がわからなかったので、.cubeファイルを.txtにして最初の設定の変数を消して頂点情報だけにして読み込みました。
Pyrhonで全部できたらよかったですが、今回一回限りなのでまあ。

image.png

下の図のようにしてみるとLUTがやっていることがわかりやすいです。
viewLUT2.gif

これを点の番号(@ptnum)に気を付けつつ、まねて作ってみればうまくいくはず。

LUTをつくる

まずは変形前の状態を作ります。
image.png
Boundノードで格子点を作成。
読み込んだLUTと同じくなるように@ptnumをソート。
ソートの方法はもっと良い方法がありそうですが、今回だけなのでまあ。
ポイント番号がXYZの順になるようにしました。
(@ptnumを下図のような順番にソート)
image.png

変形前の状態が作れたのでこれで遊んでいきます。
LatticeやSoftTransform、PointDeformあたりなどが良さそうです。
下図ではLatticeを使って赤とシアンを動かしてみました。
image.png

Pythonで書き出す

オリジナルのLUTが完成したので、最後にPythonを使って.cubeファイルを書き出します。
今回はボタンを押して.cubeファイルを書き出せるようにしてみます。

はじめに中身NullだけのHDAを作成し、ボタンとファイルパスのパラメータを作ります。
image.png

次にHDAのTypePropertiesでパラメータの設定をします。
ボタン
image.png
ファイルパス
image.png

そしてScriptsタブのEvent HaandlerからPython Moduleを選択すると、空っぽだったScripts欄にPythonModuleが追加されます。
image.png

その後Pythonスクリプトを書きます
Pythonあまり知らないのでなんとなくでやってますが、動くのでOKとしてます。
image.png

これであとはHDAを保存して完了です。
試しに書き出してみるとこんな感じ。

image.png

結論と考察

Fusionで読み込んでみる

無料で使えるFusionで読み込んでみます。
image.png
座標軸の関係でHoudiniとは鏡映対称になってしまっていますが、同じ形になっていることは確認できました。
Houdini上で動かしたように赤がへこんでシアンが動かされています。

テスト画像に適用するとこうなりました。
Before
Before.jpg
After
After.jpg

viewLUT3.gif

赤とシアンのあたりで変化が出ていることが見えると思います。
今回はHoudiniであまり変形させなかったので色の変化も小さいですが、きちんと.cubeファイルを書き出せていることは確認できました!

課題

今回の方法の問題点としてHoudiniでLUTを調整しているときに、色の変化をリアルタイムで確認できないのが残念ポイントです。
どこをどういじるとどんな色になるかがわからない状態です。
Copernicsに直接持って行って、色の変化を確認しながらLUTの調整できたら結構面白いかもと思いました。

まあ、こんな適当なLUTは仕事でも自主制作でも使うことはないですが。

追記

現状Houdiniで.cubeファイルを読み込むことはできないようです。
Copernicsでそのうち対応してくれると嬉しいですね。
なんなら自分で実装できると楽しそうですね。

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?