poi’s tech blog

3D多人数同時接続型球体アクション成人向けゲーム開発のためのアイデア、ナレッジ

Blender 2.8 EEVEE Rendererで複数Alpha Textureの描画順設定方法

Blender 2.81a

奥に描画されてほしいメッシュが手前に描画されてしまう問題。

私の場合、Transparentなアルファテクスチャを複数組み合わせて顔を作っている(目、頬、紅潮)

f:id:poipoipoip:20200113015748p:plain
なぜか紅潮が目の手前に描画されてしまう

f:id:poipoipoip:20200113015916p:plain
それぞれのテクスチャはこんな感じ

右から見たとき、以下のようにアルファテクスチャマッピングを施した薄いメッシュを球面上に若干浮かせて沿うように配置している。

f:id:poipoipoip:20200113020328p:plain
左から目、紅潮、頬、本体メッシュとなる。ブログ用に大げさに距離を離しているが、本来は顔メッシュ同士は0.001m程しか離れていない。

Blender 2.8以前の時は深度が考慮されて手前のメッシュから順に表示されていたのに、Blender 2.8になってからは深度情報が無視され描画順が意図しない事になる。

解決策

Material Propertiesのマテリアルの並びを、描画したい順に上から並べる。

(どこにも情報載ってなくて適当に設定いじってたときに偶然分かった)

f:id:poipoipoip:20200113021455p:plain
元の並び

頬が先、続いて紅潮、最後に目が描画されて欲しい。

f:id:poipoipoip:20200113021649p:plain
並び替えたいマテリアルを選択後、△や▽ボタンで上下に移動できる。

最終的に以下のように並び替えた。

f:id:poipoipoip:20200113021819p:plain
cheek(頬)、Flush(紅潮)、Eye(目)の順に描画される。

f:id:poipoipoip:20200113021945p:plain
目が最後に描画されることで、紅潮が手前に表示されなくなった。