LoginSignup
7
2

More than 5 years have passed since last update.

[Houdini] COPのVOP COP2 Filterでオーバーレイをつくる

Last updated at Posted at 2018-02-20

overlay_preview2.jpg
通常COPで2つの画像をPhotoshop的に重ねたい時はComposite COPを使うようですが、オーバーレイが見当たらなかったので、VOP COP2 Filterを使った方法を考えてみました。
(Houdiniにおける解決パターンの最多ケース「見つけられないだけ」な気もするのですが、COPでのVOPの例として良さそうだったので書いてみます)

そもそもオーバーレイとは

overlay_formula2.jpg
Wikipediaのブレンドモード一覧を見ると、式はこのような形になっています。一見分かりづらいですが、これは乗算とスクリーンの合せ技です。aが下のレイヤーの色、bが上のレイヤーの色だとして、もしaが0.5より低い(暗めの色)だった場合は乗算、逆の場合(明るめの色)はスクリーンで合成すると、オーバーレイで合成したことになります。冒頭の画像の暗い部分、明るい部分に対する変化を見てもらえると何となく分かると思います。ちなみにa>0.5と反転した場合はハードライトになります。

COPでの組み方

cop2filter.jpg
2枚の画像をFileノードで読み、VOP COP2 Filterに繋ぎます。COPノードはいずれも左側(Input0)が前面、右側(Input1)が背面になっているので、それにならいます。ダブルクリックでVOPの中に入ります。

VOPで再現する

houdini_2018-02-20_15-55-14.jpg
上のアルゴリズムをそのまま再現した形です。

  • COPで2つ目以降の入力を使うにはCOP Inputノードを使います。globalのX,Yは画像サイズに対する0.0 - 1.0のfloatなので、実質UVとして機能します。input indexをそれぞれ0と1に設定しておきます。(通常のピクセル座標が欲しい場合は下のIX, IYを使います) 
  • 明るさ判定は一番上の段で行っています。

    1. Vector to floatでRGBを分解
    2. Averageで明るさを算出
    3. Compareで明るさを0.5と比較
    4. switchで乗算かスクリーンかを振り分け という流れです。
  • スクリーンの処理に頻出する反転処理(1-x)にはComplementが便利です。どちらも途中で2倍するためにMultiplyが入っています。

まとめ

result.jpg
無事After Effectsでのオーバーレイ合成と同じ結果になりました。
応用すれば他のブレンドモードや独自の合成処理も作ることができそうです。

7
2
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
2