ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【Blender】Blender2.8で透過テクスチャを適応させた影を作る

 久しぶりのBlenderネタです。

 Twitterを眺めていたらタイトルにあるような方法をやっていた方の情報が流れてきたので、それを実際にやってみた備忘録になります。

 基本的には参考資料の最初にあるページ様の内容とほぼ同じなので、詳しいことはそちらを参照してください。

 では始めます。


0:使用する透過テクスチャの画像を用意する
 今回は以下のような透過画像を作成したので必要な場合は右クリックでpng形式で保存してください。
f:id:rikoubou:20190723142321p:plain

 以降はこの画像を使って説明していきます。


1:デフォルトCubeをUV展開して透過テクスチャを貼り付ける
 今回はデフォルトCubeをそのまま使っていきます。

 Blenderを起動してすでに出来ているCubeを選択した状態で「UV Editing」を選択します。
f:id:rikoubou:20190723142802p:plain

 以下のようなUV展開用の画面になるので、左側画面の上部分にある「Open」のボタンをクリックして貼り付けたい透過画像を読み込みます。
f:id:rikoubou:20190723143810p:plain

 読み込むと画像が表示されます。画像自体をblendファイルに同梱するために「Fake User」のボタンをクリックします。
f:id:rikoubou:20190723144058p:plain

 次に右側画面の上部分にある「Face select」アイコンをクリックします。
f:id:rikoubou:20190723144422p:plain

 面選択のモードになっているので、右側画面のCubeの一つの面をクリックで選択して右側のUV画面に一つの面のみになるようにします。
f:id:rikoubou:20190723144726p:plain

 その状態で左側画面の各頂点を「A」キーで全選択し、「S」キーを押して拡大させます。
f:id:rikoubou:20190723145709p:plain

 一番左側にあるメニューの「Move」アイコンをクリックし、マウスをドラッグさせて四角と画像が同じになるように調節します。
f:id:rikoubou:20190723150116p:plain

 この動作を一通りやると以下のようになります。
f:id:rikoubou:20190723145230g:plain

 これをCubeのすべての面について行い、面とテクスチャを合わせます。


2:UV展開した結果を適用する
 すべての面についてテクスチャの合わせができたら「Layout」タブを選択します。
f:id:rikoubou:20190723150929p:plain

 Cubeを選択した状態で「Material」タブをクリックし「Base Color」の左側にある部分をクリックします。
f:id:rikoubou:20190723151311p:plain

 色々出てくるので「Image Texture」を選択します。
f:id:rikoubou:20190723151700p:plain

「Open」ボタンをクリックして、1で使用した画像と同じ透過画像ファイルを開きます。
f:id:rikoubou:20190723152230p:plain

 画像を開いた後「Viewport Shading」アイコンをクリックするとUV展開した結果が適応されます。
f:id:rikoubou:20190723152243p:plain

 しかし透過部分が黒くなっているので、次の手順で透過させていきます。


3:画像の透過を適応させる
 では、ようやく本題の透過の適応をやっていきます。

 Cubeを選択した状態で「Shading」タブを選択します。
f:id:rikoubou:20190723153715p:plain

 以下のような画面になるのでノードを設定していきます。
f:id:rikoubou:20190723153918p:plain

 ノード部分の画面で「Shift+Aキー」を押して出てくるメニューで「Shader」→「Transparent BSDF」を選択します。
f:id:rikoubou:20190723154351p:plain

「Transparent BSDF」のノードが追加されます。
f:id:rikoubou:20190723154626p:plain

 同じように「Shift+Aキー」から「Shader」→「Mix Shader」を選択します。
f:id:rikoubou:20190723154853p:plain

「Mix Shader」のノードが追加されます。
f:id:rikoubou:20190723155027p:plain

 以下のようにノードを繋ぎます。
f:id:rikoubou:20190723155337p:plain

 ノードをすべて繋ぎ終えた後「Material」タブをクリックしてSettingsのBlender Modeを「Alpha Blend」を選択します。すると以下のように透過が適応されます。
f:id:rikoubou:20190723155944p:plain


4:影にも透過を適応させる
 ノードの設定が終わったので「Layout」画面に切り替えます。
f:id:rikoubou:20190723160534p:plain

 画面上で「Shift + Aキー」を押してメニューの「Mesh」→「Plane」を選択して影を落とすPlaneを追加します。
f:id:rikoubou:20190723160925p:plain

 追加したPlaneを選択した状態で「S」キーを押して大きくします。
f:id:rikoubou:20190723161327p:plain

 そのままだとPlaneにCubeが埋まっているので、CubeをPlaneの上にある位置まで移動させます。
f:id:rikoubou:20190723161506p:plain

 Cubeを選択した状態で「Material」タブのSettingsのShadow Modeを「Alpha Hashed」を選択します。
f:id:rikoubou:20190723162256p:plain

 バグなのかわかりませんが、即時に適応はされないのでPlaneを選択など別の操作をすると以下のように透過部分を適応させた影ができます。
f:id:rikoubou:20190723162432p:plain


おまけ:モードによるテクスチャと影の違い
 透過テクスチャの表示のされ方は「Material」タブの「Settings」の「Blend Mode」によって変わってきます。

Blend Mode:Alpha Clip
 Alpha Clipはぼかしなどの部分がべた塗りの時と同じような状態で表示されます。
f:id:rikoubou:20190723163345p:plain

Blend Mode:Alpha Hashed
 Alpha Hashedはぼかし部分がスプレーのような感じに変換されて表示されます。
f:id:rikoubou:20190723163448p:plain

Blend Mode:Alpha Blend
 Alpha Blendは透過画像のほぼそのままの状態で表示されます。
f:id:rikoubou:20190723163203p:plain

 また透過部分の影のでき方は「Shadow Mode」によって違ってきます。

Shadow Mode:None
 Noneは影が表示されません。
f:id:rikoubou:20190723163749p:plain

Shadow Mode:Opaque
 Opaqueは透過テクスチャに関係なく元のオブジェクトそのものの影が表示されます。
f:id:rikoubou:20190723163826p:plain

Shadow Mode:Alpha Clip
 Alpha ClipはBlend Modeの時と同様にぼかしがかかっている部分をべた塗りにした時のような影が表示されます。
f:id:rikoubou:20190723163930p:plain

Shadow Mode:Alpha Hashed
 Alpha HashedはBlend Modeの時と同様にぼかし部分がスプレーのような感じに変換されて影が表示されます。
f:id:rikoubou:20190723164044p:plain


 以上がBlender2.8で透過テクスチャを適応させた影を作る方法です。

 何か色々なことに使えそうですね。

 一応今回作成したBlendファイルを公開しておきます。


・参考資料


2019/8/1追記
 他の手順は一緒でノードの繋ぎ方を以下のようにするだけでも透過テクスチャを適応できました。
f:id:rikoubou:20190801151405p:plain

 また画像の出来栄えとしてEeveeよりもCyclesの方が元の画像に近い結果が得られるようです。

・Eeveeレンダーの場合
f:id:rikoubou:20190801151606p:plain

・Cyclesレンダーの場合
f:id:rikoubou:20190801151704p:plain