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:
Post a Comment