[ver.20] PBRマテリアルでのテクスチャを使用した透過ピクセルの表現

  • PBRマテリアルでの透過ピクセル表現


Shade3Dで追加されたPBRマテリアルで、木の葉のような透過ピクセルがある表現を行いたい場合、
「ベースカラー」「スペキュラ」「透明度」のマッピングを使用します。

テクスチャ素材

元の素材として、葉のテクスチャイメージを用意します。
下画像の左の画像で、右のようなアルファを持つRGBAテクスチャになります。

このテクスチャイメージ名を「leaves_01_color.png」としました。

また、法線マップとして以下のテクスチャイメージを用意しました。

このテクスチャイメージ名を「leaves_01_normal.png」としました。

PBRマテリアルの基本設定

PBRマテリアルの「基本設定」は、
ベースカラーを白、メタリックを0.0、ラフネスを0.6、屈折率を1.2、透明度を1.0、発光を0.0としました。

ベースカラーは真っ白(RGB(1.0, 1.0, 1.0) = RGB(255, 255, 255))を指定するようにします。
屈折率を1.0に近づけることでスペキュラが薄くなるようにしています。
この部分は屈折率をスペキュラに変更し、スペキュラ値を0.0に近づけることでも同等の効果を得られます。
透過ピクセルはテクスチャイメージでマスクするため、透明度を1.0としています。

マッピング

ベースカラーのマッピングを指定します。
「leaves_01_color.png」を割り当てました。

「イメージ/ベースカラー」のマッピングを指定し、合成を「αブレンド」にします。
「基本設定」での「ベースカラー」の色が完全な白でない場合は、正しく透過されないため注意してください。
完全に透過させる部分は「ベースカラー」を1.0にする必要があります。

マッピングレイヤの2つ目として、透明度を指定します。
「イメージ/透明度」のマッピングを追加し、合成を「乗算」にします。
「leaves_01_color.png」を割り当てました。

「乗算」にすることで、基本設定の透明度の値に乗算する形でテクスチャが反映されます。
サムネイル下の「アルファ乗算済み」を「グレイスケール(A)」に変更します。
テクスチャのアルファ値(不透明)と「透明度」は逆の関係になるため、「色反転」チェックボックスをオンにします。
これにより、葉の部分が透明度0.0、葉の部分以外が透明度1.0の指定となります。

「イメージ/スペキュラ」のマッピングを追加し、合成を「乗算」にします。
「leaves_01_color.png」を割り当てました。

サムネイル下の「アルファ乗算済み」を「グレイスケール(A)」に変更します。
「色反転」チェックボックスをオフにします。
こうすることで、屈折率(スペキュラ)は葉の部分のみに反映されることになります。

レンダリングを行うと、以下のように葉以外の部分はトリミングされました。

しかし、拡大するとトリミングした周囲で白い箇所が気になります。

この調整は、マッピングの「イメージ/ベースカラー」のチャンネル合成モードで「アルファ乗算済み」を「アルファ乗算」にすると緩和できる場合があります。

「アルファ乗算」にすると以下のようになりました。

最後に法線マップを割り当てます。
「イメージ/法線」のマッピングを追加し、合成を「乗算」にします。
「leaves_01_normal.png」を割り当てました。

レンダリングすると以下のようになりました。

まとめると、透過ピクセルでマスクしたい場合は以下のようにマッピングレイヤを追加します。
白(1.0)が非透明/黒(0.0)が透明のテクスチャをテクスチャイメージとして指定する場合のパラメータの組み合わせです。
アルファを持つRGBA要素を持つテクスチャを使う場合は、A(Alpha)成分を使用することになります。

パターン属性 合成 色反転
ベースカラー αブレンド オフ
透明度 乗算 オン
スペキュラ 乗算 オフ

別途、不透明マスクのテクスチャを使用する場合

前述の例では、RGBAを持つテクスチャのアルファ要素を背景トリミングに使用しました。
次に、以下のような不透明マスクのテクスチャ(0.0が透明、1.0が不透明)を用意します。

これを最終的に以下のようにレンダリングに反映させたい場合、少しマッピングの方法が変わります。

基本設定は以下のように指定しました。

透過ピクセルはテクスチャイメージでマスクするため、透明度を1.0としています。

マッピングは3層で以下のように指定しました。

「イメージ/ベースカラー」は、不透明マスクのテクスチャを指定し、合成を「比較(明)」にし、「色反転」チェックボックスをオンにします。
こうすることで、背景となる部分は白色になります。
完全に透過させる部分は「ベースカラー」を1.0にする必要があります。

「イメージ/透明度」「イメージ/スペキュラ」の指定は前述と同じになります。

まとめると、不透明マスクを別途使用する場合は、以下のマッピングの組み合わせになります。

パターン属性 合成 色反転
ベースカラー 比較(明) オン
透明度 乗算 オン
スペキュラ 乗算 オフ

ベースカラーテクスチャを別途割り当てる場合は、この3つのレイヤより前に指定するようにしてください。

なお、この完全透過するピクセルはレンダリング時のレイをたどる際の
視線追跡レベル」の影響を受けます。
これを回避するには、「視線追跡レベル」の値を大きくするか(ただし、レンダリング時間がかかることになります)、
「Shade3Dマテリアル」の「アルファ透明」や「不透明マスク」を使用するほうがいいかもしれません。

カテゴリー: リニアワークフローとPBRマテリアル