5/17/2011

Nuke tutorial How to import premultiplied image

premultiplied(乗算済みされた)画像を正しく読み込む。

premultiplyとはRGBに対してアルファを乗算することです。言い換えればRGBをアルファで切り抜くということです。アルファが1の部分は完全に不透明になり、アルファが0の部分は完全に透明になります。半透明な部分はそれぞれのアルファで乗算された値になります。

Nukeではpremultiplyとunpremultiplyを正しく扱うことが非常に重要になっています。


Readノードにもpremultipliedのチェックボックスがあります。これは画像を読み込むときにPremultiplyするということではなく、この画像がpremultipliedされた画像であるということをNukeに知らせる為のチェックボックスです。

Nukeは画像を読み込むときにリニアカラースペース以外の画像をリニアに変換します。
Colorspaceの変換もNukeの他のカラコレと同じように、変換する前にUnpremultして、変換したあとにPremultする必要があります。Readノードのpremultipliedのチェックが入ってない場合、Nukeはこの画像はpremultipliedされていない画像だと認識します。そのため二重にpremultiplyされてしまうために半透明のエッジが暗くなります。

ここでわかりやすくするために画像をRAWで読み込んで同じように合成してみましょう。

premultiplyされた画像であればColorspaceの前にUnpremultする必要がありますが、
premultiplyされていない画像であれば左のツリーのようになります。結果として左右とも同じ結果になりましたが、これは正しい結果ではありません。


画像をpremultiplyされた画像として扱うと、左右とも同じ結果になり、正しいことがわかります。



一般的に3Dソフトでレンダリングした画像はpremultiplyされています。 premultiplyされた画像についてはReadノードでpremultipliedのチェックを入れる必要があります。ただし3Dソフトからリニアカラースペースで出力した場合はカラースペースを変換する必要がないので、premultipliedのチェックを入れても入れなくても同じです。

No comments: