妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

TranslucentUnlitSpriteMaterialとMasked以下略の違い

「この2つのマテリアルの何が違うかというと、ブレンドモードが違う。MaskedかTranslucentか、マテリアルの中身的にはそれしか違いがない」

docs.unrealengine.com

「具体的には半透明のピクセルに対する扱いが違う。例えばこのゴール用ゲートの画像で言えば、輪郭線のあたり、ここが本来半透明になってるけど、Maskedの方はそれを無視して、透明か不透明かどっちかにハッキリさせてしまう」

TranslucentUnlitSpriteMaterialの場合

f:id:una_unagi:20151206222234p:plain

MaskedUnlitSpriteMaterialの場合

f:id:una_unagi:20151206222256p:plain

妹「なんかギザギザになってる……」

「妹の場合SAIでキャラクターとか描いてるから、あれは背景を塗りつぶしたり、2値ペンを使ったりして意図しない限りは半透明の輪郭になってるはず」

妹「そういえばたまに最初からMasked~になってたスプライトもあったけど、あれは今にして思うと半透明じゃなかったからかも。でもTranslucentの方がちゃんと表示されるんだったらその方がいいのでは?」

「そのへんよくわからないんだけど、多分Maskedの方が高速なんだろうと思う。それと今回のゲートをエディタ上で選択した場合、Translucentは透明部分も含めた四角形のオレンジの線が出るんだけど、Maskedだと見た目通りの形に線が引かれる。Translucentは四角の中に色んな透明度のピクセルが混ざってるイメージ、Maskedは透明の部分を繰り抜いたようなイメージ。これもひょっとしたら何かに影響する場面があるかも」

f:id:una_unagi:20151206223221p:plain

「あとMaskedの半透明が使えないっていうのは、SpriteColorで透明度を指定した場合も同じで、透明度を上げていっても半透明にはならずに、どこかのタイミングで急に透明になる。その辺も挙動も演出によっては使えるかも」

妹「うーん、とりあえずキャラクターとかはTranslucentにしとけばいいのかな。背景はMaskedでいいか」

「背景に関してはOpaqueUnlitSpriteMaterialというのがある。これだと透明も半透明も無視する。でも一番速いはず」

f:id:una_unagi:20151206224028p:plain

妹「背景にヘンテコな色が付いてるけど……」

「多分妹がこの絵を描いてる時に、消しゴムで消したりした時の、消す前の色だと思う。透明になってても色のデータは残るから、透明度無視の設定になったことでとその色がそのままが出てきたんじゃないかと」