Hall

Poserの機能

マスキングの方法

2009.04.25

テクスチャマップでマスキング

あるマップの一部をくりぬいて、別の属性を与えたり、別のマップや色で塗りつぶすことができるようになると、表現力が格段に高くなります。テレビの画面に何かの映像を入れ込んだり、ビルの窓に何かの絵をはめ込んだり。実際に色々なシーンで、ここにこの絵をはめ込みたいと思うことは、しばしばあります。

プラモデル製作において塗装をするときにテープで塗装したくない面を覆う「マスキング」というテクニックを用いますが、3DCGの場合はテープの代わりにテクスチャマップ(ピクチャ)を使ってマスキングを行います。塗料の代わりになる着色されたマップとマスキングテープの代わりになるマップ、これらの2つのマップを合成して行います。

ブレンダーノード

マテリアルルーム設定

2つのマップを掛け合わせるとき、真っ先に思い浮かぶノードは「ブレンダー」です。

ブレンダーはその名の通り、複数の色やマップをブレンドするノードです。入力は2系統ありますので、2つの入力をブレンドすることができます。

早速、マテリアルルームでブレンダーノードを使い試してみることにします。

大理石ノードにサイケな着色を施したものをタイルをマスキング用のテクスチャマップに見立て、ブレンダーノードに接続してみました。実際には右の図のように接続しています。Poserサーフェイスと表示されたノード(ルートノード)の一番下に、どんな感じで仕上がるか見れるようにプレビューパネルがあります。このプレビューを見ると、どうもマスキングといった感じには仕上がっていないように思えます。

説明書をひも解くと「アルファマスクとして属性値を使用して、2つの色をブレンドします」とあります。これを読む限り、マスキングとして機能しそうなのですが、説明には続きがあります。

  • 「ブレンド」属性を使用すると、ブレンドできる量を特定できます。有効な値は、0(入力1カラーのみ)~1(入力2カラーのみ)です。

この意味は入力1と入力2を混ぜ合わせるとき、どひらの色をどの程度配合するかを比率で加減できると言う訳です。速い話が、マスキングではなく、重ね塗りする感じです。重ね塗りの具合を調整するのが、ブレンダーの役割だと理解するべきかもしれません。

レンダリング結果

実際に先のマテリアル設定を使ってレンダリングした結果が、右のピクチャです。

この絵を見て分かる通り、マスキングとはならず、黒い部分にも大理石状のサイケ模様が浮き出ていることが分かります。塀に描かれたイタズラ描きなどには、ブレンダーが向いているかもしれません。しかし、きっちりとしたマスキングにはブレンダーが使えないことが、この実験から分かります。

数値演算色ノード

マテリアルルーム設定

色と色を掛け合わせる方法は、他にもあります。数値演算色ノードを使う方法です。

右の図は、先ほどと同じマテリアル設定ですが、ブレンダーの代わりに「数値演算色」ノードが連結されています。数値演算色ノードは、2つの入力された色を計算した結果を返します。テクスチャマップの場合も同様で、各ピクセル毎に色を計算します。計算は「数値演算引数」パラメータで示された式に基づいて計算されます。マスキング目的の場合には、このパラメータに「乗算」を指定します。

乗算とは掛算を行うことを意味しますのが、例えば白黒のテクスチャマップを指定した場合、白い部分は1をかけることを意味し、黒い部分は0をかけることを意味します。速い話が、黒い部分によって黒くマスキングされる訳です。

ルートノードのプレビューを見て分かる通り、きちんとマスキング処理されています。

レンダリング結果

実際にこのマテリアル設定を使ってレンダリングした結果が、右のピクチャです。うまく黒抜きでマスキングされている様子が分かります。

それでは、もし白抜きでマスキングしたい場合には、どのようにしたら良いのでしょうか。

その答は、次の応用編を見れば分かると思います。

応用編:マスキングして2つの絵を重ねる

マテリアルルーム設定

マスキングをして黒抜きにした部分に、他の色やマップを重ねるには、先に使ったマスキング用マップを白黒反転したマップで処理したものを用意し、それらを合成します。

右に図は、実際に2つのテクスチャを合成するためのマテリアル設定例です。

注目ポイントは、マスキング用のマップとして用意した白黒の2つのタイル地です。2つを見比べると、それぞれ白と黒が反転した位置関係になっています。この位相が逆にあったマップで、それぞれマスキングした絵が「数値線残色2」ノードと「数値演算色3」になります。マスキングした結果はプレビューを見ての通り、赤青のサイケな模様と、緑っぽい模様がマスキングされている状態になっています。

この2つのマスキングされた結果は、さらにルートノードの拡散色に接続された「数値演算色」ノードに接続されています。この数値演算色ノードで、それぞれのマスキングした箇所にはめ込まれたように合成します。この合成は、加算式つまり足し算で行います。黒い部分は0なので、何を足しても足した値が返ります。例えば、黒に緑を足せば緑に、黒に青を足せば青が返る訳です。加算演算を行うために、このマテリアル設定の図にある赤丸のように、数値演算引数パラメータに「加算」を設定します。

レンダリング結果

実際にこのマテリアル設定を使ってレンダリングした結果が、右のピクチャです。互いに黒抜きでマスキングされている部分に、別のテクステャが張り込まれている様子が分かります。

再びブレンダーノード

マテリアルルーム設定

実はブレンダーでもマスキングを行う方法はあります。

色をブレンドするのがブレンダーの役割ですが、注目したいのはブレンダーのブレンド属性です。先ほども説明しましたが、ブレンド属性は値フィールドで、通常ここに値を設定しブレンドする量を特定します。値を0にすると入力1カラーのみになり、1にすると入力2カラーのみになります。もちろん0〜1の任意の値を入れることも出来ますから、ブレンドの具合を調整できる訳です。

このブレンド属性にマスキング用のマスクパターンとなるノードを接続します。ブレンド属性にテクスチャを繋ぐと、そのテクスチャの白い部分が値1となり、暗い部分が値0となります。カラーは評価されないので、白黒のテクスチャマップを使うことになります。実際に試してみましょう。

例題として用意したのは右のマテリアル設定です。先の例と同様、平面に施してあります。

レンダリング結果

そしてこのマテリアル設定を使ってレンダリングした結果が、右のピクチャです。

この絵を見て分かる通り、きちっとマスキングされている様子が見て取れますね。この方法だと、非常にシンプルにマスキングできます。