CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Blender3.1】アルファチャンネル(透過)を使いこなそう!
はじめに
こんにちは!
今回は、フリーの3DCGソフト「Blender」で、画像の不透明度を表す「アルファ(アルファチャンネル)」を扱う方法について紹介します!
アルファ(透過)を使いこなすことで、ポリゴン数を節約しつつ複雑な形状を表現したり、別々にレンダリングした画像を合成することなどができるようになりますので、ぜひ参考にしてください!
アルファ(アルファチャンネル)とは?
アルファチャンネル(通称:アルファ)とは、「画像の各ピクセルに対して、RGBなどの色表現とは別に持たせたデータ」のことで、一般に画像の「不透明度」を表す情報です。
アルファについての詳しい説明は、Wikipediaの記事を参照ください。
PNGなどの画像ファイルでは、各ピクセルごとにアルファの値を0(完全透過)~1(不透明)に設定することができます。
透過させたいピクセルのアルファを0に設定することで、コチラのように透明な部分を設定できます(キノコの周囲のチェッカー模様の部分が、アルファ=0(透明)になっています)。
Blender上でアルファを利用する例としては、例えばコチラのように、平面メッシュにマッピングした画像の透過部分を非表示にする「アルファ抜き」という手法があります。
やり方は後で紹介しますが、コチラのように影の形もアルファ抜きを反映したものになるので、少ないポリゴン数で複雑な形状を表現できます。
「伝播」との違いは?
水やガラスなどの透明かつ屈折率のある物体を表現するには、アルファではなく「伝播」を使います。
コチラは、左に伝播=1, 右にアルファ=0.2にして比較した例ですが、左側は背景が屈折して見えているのに対して、右側は全く屈折していないのがわかると思います。
伝播を使うと光の屈折・散乱をリアルに表現できる反面、光の経路の計算が複雑になりレンダリング時間が長くなってしまったり、ノイズが出たりする可能性があります。
屈折を無視できる半透明の物体、たとえば薄いビニールやセロファンなどを表現する場合は、アルファを使った方が便利だと思います。
画像テクスチャを透過させよう!(アルファ抜き)
画像テクスチャをマッピングし、透過部分を非表示にする「アルファ抜き」の方法を紹介します。
まず、コチラのような、背景を透過させた画像を用意します。
(GIMPで適当に作った画像なので、練習用として自由に使ってもらって構いません。)
コチラのように、オブジェクト用と地面用の平面メッシュを配置します。
ワークスペースを「Shading」タブに切り替え、マテリアルを追加します。
「Shift+A」で「テクスチャ」→「画像テクスチャ」を追加し、画像を読み込みます。
画像テクスチャの「カラー」をプリンシプルBSDFの「ベースカラー」につなぎます。
また、画像テクスチャの「アルファ」をプリンシプルBSDFの「アルファ」につなぎます。
ノードをつないだ時点では、背景は黒いままだと思います。
デフォルトでは、プレビュー表示用のレンダラーが「Eevee」になっているので、「レンダープロパティ」からレンダリングエンジンを「Cycles」に切り替えます。
(Eeveeで背景を透過させる方法は、のちほど説明します。)
さらに、3Dビューポート右上のボタンで「レンダービュー」を選択します。
その結果、コチラのようにCyclesで描画されたレンダービューが表示され、背景が透明になり、キノコの形状が表示されるようになりました。
アルファ抜きを使うことで、たとえば以前紹介したコチラの記事で紹介したように、窓ガラスにシールを貼ったりすることができます。
▼【初心者向けのガラスを作る!いろいろなノード紹介】はコチラ!
アルファ抜きのいろんな使い道については、コチラの記事が参考になると思います。
ぜひ作品作りに取り入れてみてください!
Blender標準搭載アドオンを使おう!
↑で紹介したアルファ抜きのやり方ですが、じつはBlender標準搭載アドオン「Import Images as Planes」を使うと、一発でできます!
あらかじめ、「編集」→「プリファレンス」→「アドオン」から、「Import Images as Planes」を有効化しておきます。
アドオンを有効化したら、「Shift+A」→「画像」→「Images as Planes」を選択します。
読み込む画像を選択し、「平面として画像をインポート」を選択すると、コチラのように画像を貼り付けた平面メッシュが追加されます。
マテリアルノードを開くと、画像テクスチャの「カラー」「アルファ」がそれぞれプリンシプルBSDFに接続された状態になっており、アルファ抜きの設定を手動でする必要はありません!
マテリアルの設定不要なので、大量の画像を読み込む場合などに非常に便利です。
ちなみに、「Import Images as Planes」は、コチラのように画像からビルを作るのにも便利です!
「画像からビルを作る」方法はコチラの記事で紹介したので、参考にしてみてください。
▼【ビルの作り方】はコチラ!
Eeveeでアルファ抜きをするための設定方法
レンダラーにEeveeを使用した場合、デフォルト設定のままでは画像のアルファ部分が透明になりません。
「マテリアルプロパティ」→「設定」から、コチラのように設定する必要があります。
- ブレンドモード:「アルファブレンド」(「アルファクリップ」「アルファハッシュ」でもOK)
- 影のモード:「アルファクリップ」または「アルファハッシュ」
ブレンドモード/影のモードの違いについて
「アルファブレンド」「アルファクリップ」「アルファハッシュ」は、それぞれコチラのような違いがあります。
- アルファブレンド:アルファの値に応じて、前景と背景の色をブレンド(混ぜ合わせる)。
- 影のモードには使用できない。
- アルファクリップ:アルファが一定のしきい値を超えている場合は不透明、超えない場合は透明として描画。
- グラデーションが表現できない。
- アルファハッシュ:アルファがランダムなしきい値を超えている場合は不透明、超えない場合は透明として描画。
- ノイズが出やすい。
半透明を使用しない場合(アルファ=0 or 1)はブレンドモードによる差が出にくいですが、コチラのようにアルファにグラデーションがある場合は、アルファクリップだと半透明の部分が描画されません。
また、アルファハッシュはノイズが乗りやすいので、ブレンドモードに使用するのはあまりオススメできません。
したがって、ブレンドモード/影のモードは以下のように設定するのがオススメです。
- ブレンドモード:アルファブレンド
- 影のモード:
- アルファクリップ(半透明を使用しない場合)
- アルファハッシュ(半透明・グラデーションを使用する場合)
ブレンドモードの違いについて、詳しくはBlenderリファレンスマニュアルを参照ください。
画像の追加に「Import Images as Planes」を使用した場合
アドオン「Import Images as Planes」を使用した場合は、すでにマテリアルのブレンドモードはアルファブレンドが設定されているので、画像はアルファ抜きした状態で表示されます。
ただし、デフォルトでは「影のモード」は「不透明」になっているので、影の形状は平面メッシュの形状のままです。
影の形状にアルファを反映するには、影のモードを「アルファクリップ」または「アルファハッシュ」に設定する必要があります。
影の表示がおかしい・ギザギザに見える!(Eevee)
先ほど説明した方法でEeveeでアルファ抜きした場合、影がギザギザに見えることがあります。
そのような場合は、コチラのように「レンダープロパティ」→「影」→「立方体サイズ」を大きくすると、影の形状が滑らかになります。
影が出ない時は?
影が出ない場合は、コチラを確認・試してみてください!
Cyclesの場合
- ライトの「オブジェクトプロパティ」→「影を生成」のチェックが外れていないか?
- 外れている場合はONにすると影が出るようになります。
- 物体の「オブジェクトプロパティ」→「可視性→レイの可視性」→「影」のチェックが外れていないか?
- 外れている場合はONにすると影が出るようになります。
Eeveeの場合
- ライトの「オブジェクトプロパティ」→「影を生成」のチェックが外れていないか?
- 外れている場合はONにすると影が出るようになります。
- 地面の「マテリアルプロパティ」→「設定→影のモード」→「なし」になっていないか?
- 「なし」になっている場合は「不透明」にすると影が出るようになります。
- ライトオブジェクトを追加する。(Eeveeの場合、HDRI画像では影が表示されない。)
- ライトオブジェクトの影の設定を見直す(以下参照)。
Eeveeの「ライトオブジェクトの影の設定」について
コチラのように、Eeveeを使用した場合、光源とオブジェクトの距離が離れているときに影が出なくなることがあります。
こちらのように、ライトのオブジェクトプロパティから、「影→カスケードシャドウマップ」の距離を大きくすることで、ライトから遠く離れたオブジェクトにも影が表示されるようになります。
「影が出ない場合の対処法」については、コチラの記事にまとめていますので、あわせて参考にしてみてください!
▼【思い通りの影を作ろう!影(陰)の設定・調整・トラブル対策】はコチラ!
画像にアルファがない場合は?
使いたい画像にアルファがない場合は、以下の2通りの方法があります。
- GIMP等の画像編集ソフトで、背景部分を透過させる。
- マテリアルノードでアルファを設定する。
コチラの画像を例に、↑の2通りの方法で青い部分を透明にしてみます。
【1の方法】GIMP等の画像編集ソフトで、背景部分を透過させる。
フリーの画像編集ソフト「GIMP」を使えば、簡単に背景を透過させられます。
▼GIMPのダウンロードはコチラから!
コチラのように、GIMPで画像を開き、左上のパネルから「ファジー選択」(☆のステッキのマーク)を選択します。
背景部分をクリックすると背景全体が選択されるので、右クリック→「編集」→「消去」を選択し、背景を削除します。
削除した部分は透明(アルファ=0)となり、「名前を付けてエクスポート」でそのままpngファイルとして保存できます。
コチラのようにGIMPから出力した画像を「Import Images as Planes」で読み込めば、背景が透明になっているのがわかります。
GIMPをダウンロードする必要がありますが、「ファジー選択」を使うことで簡単に背景を透明に出来るので、オススメです。
【2の方法】マテリアルノードでアルファを設定する。
前景と背景の色がハッキリ区別できる場合に限って、マテリアルノードを使って背景を透過させることができます。
「Import Images as Planes」で画像を読み込んだあと、コチラのように画像テクスチャにマテリアルノードをつなぎます。
マテリアルノードの説明はコチラの動画をご覧ください。
コチラのように、一番右のカラーランプの「カラー」をプリンシプルBSDFの「アルファ」につなぐと、背景が透明になります。
「2」のやり方はちょっとマニアックですが、マテリアルノードの勉強を兼ねてやってみると面白いと思うので、興味のある方は試してみてください!
レンダリングで黒くなる時は?
レンダリングにCyclesを使用した場合、透過画像を何枚も重ねると、コチラのように背景や影が真っ黒になってしまうことがあります。
アルファ抜き画像を多数重ねる場合は、コチラのように「レンダープロパティ」→「ライトパス」→「最大バウンス数」→「透過」の値を大きくする必要があります。
「Cyclesで透過部分が黒くなってしまう場合の対処法」について、詳しくはコチラの記事を参考にしてみてください。
【コンポジット】透過画像を合成しよう!
Blenderでは、レンダリング結果の後処理を行う「コンポジット」という機能があり、それを使って、別々にレンダリングした画像を合成することができます。
コンポジットで画像を合成する手順について、紹介します。
背景を透過させよう!
「レンダープロパティ」→「フィルム(Film)」→「透過(Transparent)」にチェックを入れます。
すると、コチラのように背景が透明になります。
画像の合成方法
背景を透過させたレンダリング結果を、別の背景画像と合成する方法を紹介します。
まず、「コンポジット」のタブを選び、「コンポジター」の画面を表示します。
コチラのように、「ノードを使用(Use Nodes)」にチェックを入れてください。
背景画像との合成をするために、コンポジター上で以下3つのノードを追加します。
「アルファオーバー」が、画像合成を行うための主役になります。
- インプット(Input)→画像(Image):背景画像を読み込むノード。
- アウトプット(Output)→ビューワー(Viewer):合成結果を表示するためのノード。
- カラー(Color)→アルファオーバー(Alpha Over):画像を重ね合わせるためのノード。
画像ノードで背景画像を開き、コチラの動画のようにノードをつなぎます。
コチラのように、「アルファオーバー」を使って、透過した背景の部分に、背景画像を合成することができました。
コンポジットを使って背景を合成する方法について、詳しくはコチラの記事で紹介していますので、あわせて参考にしてみてください!
▼【背景を簡単に作ろう!】はコチラ!
おすすめアドオン
最後にアルファ画像をカスタムできるアドオンを紹介していきます。
Pinguin – 画像をメッシュとして追加可能!
画像の切り抜きからメッシュを作成できるアドオンです。
フォルダを指定すると一括で透過画像をメッシュとして取り込むことができます。
詳細は以下の記事を参考にしてみてください。
まとめ
「アルファ(透過)を扱う方法」についてまとめてみましたが、いかがだったでしょうか?
クオリティの高い作品作りのために押さえておきたいテクニックですので、ぜひコチラの記事を参考に使ってみていただければと思います!
最後に、今回のまとめです!
- アルファ(アルファチャンネル)とは?→画像ピクセルの不透明度
- 「伝播」と違って、光の屈折・散乱は表現されない。
- 画像テクスチャを透過させよう!(アルファ抜き)
- 画像テクスチャの「アルファ」をシェーダーにつなぐ。
- Blender標準搭載アドオン「Import Images as Planes」を使うとラク!
- Eeveeの場合は、ブレンドモード・影のモードの設定が必要。
- ブレンドモード:アルファブレンド
- 影のモード:アルファクリップ(半透明なし)またはアルファハッシュ(半透明あり)
- 影がギザギザに見える(Eevee)場合は、「レンダープロパティ」→「影」→「立方体サイズ」を大きく。
- 影が出ない時は、オブジェクト/マテリアルプロパティ、ライトオブジェクトの設定を確認。
- 画像にアルファがない場合は、GIMP等の画像編集ソフトで背景部分を透過させるか、マテリアルノードでアルファを設定する。
- レンダリングで黒くなる時は、「レンダープロパティ」→「ライトパス」→「最大バウンス数」→「透過」の値を大きく。
- 【コンポジット】透過画像を合成しよう!
- 背景を透過させる:「レンダープロパティ」→「フィルム(Film)」→「透過」にチェック。
- 画像の合成方法:コンポジットのアルファオーバーノードを使う。