On this page |
レンズ効果は非常によく使われるもので、画像にさらなるリアリズムを加えたり、芸術的なタッチを加えることができます。 典型的な効果は、レンズのディストーション(歪曲収差)、色収差、Vignetting(ビネッティング:口径食)、ブラーがあります。 以下の例では、レンズのディストーション(歪曲収差)とVignetting(ビネッティング:口径食)のワークフローを用意しました。
レンズのディストーション(歪曲収差) ¶
歪曲収差は、いわゆるSTマップを使用します。 STマップとは、RGBの赤成分がスクリーン空間のX座標、緑成分がスクリーン空間のY座標に呼応させた画像のことです。 UV Map COPのデフォルトの状態はSTマップになっています。
以下のサンプルは、現実のレンズから物理的に正しいレンズディストーション(歪曲収差)を計算しません。 このワークフローでは、レンズディストーション(歪曲収差)効果にSTマップを使用する方法のみを載せています。 STマップは、普段はマッチムーブをする人またはレンズ製造者から提供されています。
-
obj レベルで、COP2 Networkを作成して、それをダブルクリックして中に入ります。
-
COP2ネットワークの中で、UV Map COPを追加します。このノードはSTマップを表現します。
-
Image タブの Override Size を有効にして、例えば
1024, 1024
に設定します。 -
Image Planes ドロップダウンメニューから P (xyz) を選択します。
-
Raster Depth ドロップダウンメニューから 32 Bit Floating Point を選択します。
-
File COPを追加します。
-
File に進んで、歪ませたい画像を読み込みます。このサンプルの画像はチェック柄でHoudiniに同梱されています。この画像を使用したいのであれば、
$HFS/houdini/pic/CheckerBoard.pic
と入力します。
歪曲画像 ¶
Houdiniがソース画像から各ピクセルの歪曲量を計算するのにはシェイプが必要になります。 もう1枚画像を使用したり、円などの単純なパターンを使用することができますが、さらに星型などの複雑なジオメトリを使用することもできます。
-
Shape COPを追加します。このノードは歪曲形状を定義します。
-
Shape タブの Shape Type ドロップダウンメニューから Circle を選択します。
-
Image タブの Override Size を有効にして、UV Map COPと同じ値を入力します。その時の値は
1024, 1024
でした。 -
Transform COPはその円をスケールさせることができます。Transform COPを追加し、その 1番目 の入力を
shape1
の出力に接続します。 -
Transform タブに進んで Scale パラメータを見つけます。その値を
1.3, 1.3
に設定します。すると、端にのみ黒が残ります。 -
この円をぼかしてハードエッジを回避するためにBlur COPを追加し、その 1番目 の入力を
xform1
の出力に接続します。 -
Blur タブに進んで、 Size パラメータを
500
に設定します。この値は非常にぼやけた形状を作成します。
この歪曲画像を使用してSTマップを下図のようにしていきます。
変形 ¶
次の手順では、チェック柄の歪曲を計算します。 この手順には、2個の変形ノードが必要になります。 1個目の変形ノードは、サイズ変更してブラーがかけられた形状を使用してSTマップを変形させます。 2個目の変形ノードは、そのSTマップの変形されたピクセル座標を使用して、チェック柄の画像を変形させます。
-
1個目のDeform COPを追加します。その 1番目 の入力を
uvmap1
の出力に接続します。その 2番目 の入力をblur1
の出力に接続します。 -
Deform タブの Deform Plane パラメータに
C
と入力します。ここは、shape1
の Image Planes パラメータと同じ値に呼応させます。 -
Deform ドロップダウンメニューから Shift by UV Gradient を選択します。これは、UV/STマップのカラー値を使用して各ピクセルの歪曲量を計算します。
-
Scale パラメータは、その歪曲量をスケールさせます。
2.5, 2.5
と入力すると視覚的に効果がわかります。2個目のDeform COPでは、これまでの結果を取り込んで実計算を行ないます。
-
2個目のDeform COPを追加します。その 1番目 の入力をチェック柄画像のFile COPの出力に接続します。その 2番目 の入力を1個目のDeform COPの出力に接続します。
-
このノードは、チェック柄を
P
平面を使用して変形させます。 Deform タブの Deform Plane パラメータにP
と入力します。 -
Deform ドロップダウンメニューから To New UV Values を選択します。これは、STマップのピクセル座標を転送します。
-
Image Wrap ドロップダウンメニューから Clamp を選択します。これは、入力のUV値を0または1でクランプします。
下図は、チェック柄の最終効果を示しています。
レンズのビネッティング(口径食) ¶
Vignette(ビネット:口径食)は、レンズの端に向かうにつれてレンズ効率が低下することで発生します。 ほとんどのレンズは球状であるため、ビネットは典型的な円状になります。 しかし、通常ではフレームの短い辺沿いの方がその効果が強いことに気づきます。 フィルムゲートの長方形の形状が円の内側に収まり、短い辺の方がレンズの端の方に近くなります。 アナモフィックレンズの場合では、幅に応じてビネットを押し潰すことができます。
-
obj レベルで、COP2 Networkを作成して、それをダブルクリックして中に入ります。
-
File COPを追加します。
-
File に進んで、歪ませたい画像を読み込みます。このサンプルの画像はチェック柄でHoudiniに同梱されています。この画像を使用したいのであれば、
$HFS/houdini/pic/CheckerBoard.pic
と入力します。
ビネット(口径食) ¶
レンズでビネットの形状が決まり、たいていの場合、それは円形です。
-
Shape COPを追加します。このノードはビネットの形状を定義します。
-
Shape タブの Shape Type ドロップダウンメニューから Circle を選択します。
-
Image タブの Override Size を有効にして、UV Map COPと同じ値を入力します。その時の値は
1024, 1024
でした。 -
Raster Depth ドロップダウンメニューから 32 Bit Floating Point を選択します。
-
Transform COPはその円をスケールさせることができます。Transform COPを追加し、その 1番目 の入力を
shape1
の出力に接続します。 -
Transform タブに進んで Scale パラメータを見つけます。その値を
1.05, 1.05
に設定して、この円/ビネットを若干大きくします。 -
この円をぼかしてハードエッジを回避するためにBlur COPを追加し、その 1番目 の入力を
xform1
の出力に接続します。 -
Blur タブに進んで、 Size パラメータを
300
に設定します。クロッピングによって、円の拡大部分を切り取り、綺麗なビネットを作成します。
-
Crop COPを追加し、その入力を
blur1
の出力に接続します。 -
Crop ドロップダウンメニューから By Offset, Width & Height を選択します。
-
Units ドロップダウンメニューから Pixels を選択します。
-
Horizontal Crop と Vertical Crop の値は、画像全体の領域を覆っている必要があります。このサンプルでは、チェック柄のサイズは
1024, 1024
です。そのため、そのサイズに合わせたCrop値はどちらのパラメータも0, 1024
です。
その結果、黒い背景の上にぼやけた白い円が乗りました。
ビネットの適用 ¶
このぼやけた白い円の形状をチェック柄画像に追加してビネット効果を作成していきます。
-
Color Correct COPを追加します。その 1番目 の入力をチェック柄画像のFile COPの出力に接続します。その 2番目 の入力を
crop1
の出力に接続します。 -
現時点では何の効果も確認できません。ビネットマスクとチェック柄画像を合成するには、それらの画像を乗算する必要があります。
colorcorrect1
の Color Correct タブ Master ▸ Mult に進みます。ビネットを表示させるには、その Mult パラメータのRGB値を例えば0.2, 0.2, 0.2
に設定します。その結果、端が明るい大きな暗い領域が得られました。 -
この色を修正するために、 Mask タブを開き、 Invert Mask チェックボックスをオンにします。
このサンプルの値と画像では、下図の結果が得られます。