BlenderからUnityに移したオブジェクトが透明になる時の対処法

Unity

Blenderで作成したキャラクターをUnityで表示する時、オブジェクトの裏側が表示されずに困ることはないでしょうか。わたくしトナカイはとっても困りました。

例えばこの画像のモデルでは、髪の毛とスカートのオブジェクトが透けてしまっています。

モデルを回転してみると、今度はスカートの後ろ側が透明になってしまいました。

キャラクターを回転させると、透明になってしまう場所も変わるため、オブジェクトそのものがなくなっている訳ではないようです。

こうなる原因を調べた所、「メッシュの向きが逆だから」ということが分かりました。

この記事では、Blenderで作ったオブジェクトがUnityで透けてしまう原因と、解決方法を解説します。

オブジェクトが透ける原因:メッシュの向きが逆だから

オブジェクトが透けてしまう理由は単純です。前述の通り、メッシュの向きが逆になっていたからでした。

試しに、メッシュがどの方向を向いているか表示してみます。

Blenderの「オーバーレイ」を開き、「面の向き」にチェックを入れると、メッシュの向きが赤と青で表示されます。

青で表示されているメッシュは内側を向いています。

一方、赤で表示されている箇所はメッシュが外側を向いています。

Unityでモデルを確認してみましょう。

青い面は正常に表示されていましたが、赤い面は透けてしまっていました。

メッシュが外側を向いていると、Unityでは透明になってしまいます。

スカートのオブジェクトが透けないようにする方法

メッシュが外側を向いているためにモデルが透けてしまうのなら、メッシュの向きを内側にすれば解決するはずです。

という訳で、向きを変えていきます。

メッシュの向きを変える方法
  1. Blender上で、向きを変えたい面を選択する
  2. 画面上部にある「メッシュ」をクリックする
  3. 「ノーマル」→「面の向きを内側に揃える」を選択する

今回は、スカートのメッシュを全て選択して、面の向きを内側に揃えました(髪の毛は面の向きを変更しても透けてしまうため、後述する方法で透けないようにします)。

これでメッシュの向きが変更できました。

このモデルをstlファイルとしてエクスポートし、もう一度Unityで表示させます。

スカートについては想定通りに表示されました。

髪の毛が透けないようにする方法2つ

スカートの部分は、メッシュの向きを変えることで表示されるようになりました。

しかし、髪の毛は表も裏も見えるので、メッシュの向きを変えるだけでは解決できません。

髪の毛が透けないようにする方法には次の2つがあります。

  1. モディファイアーに「ソリッド化」を追加する
  2. メッシュに裏面を貼る

ここからは、2つの方法について解説していきます。

1.モディファイアーに「ソリッド化」を追加する

1つ目は、髪の毛オブジェクトのモディファイアーにソリッド化を追加する方法です。

ソリッド化とは

ソリッド化とは、メッシュに厚みを付けるモディファイアーです。

厚みを加えたいオブジェクトを選択して、「モディファイアープロパティ」→「生成」→「ソリッド化」を選ぶことでモディファイアーを追加できます。

例えば、1枚のメッシュにソリッド化を適用すると画像のように変化します。

〈ソリッド化前〉

〈ソリッド化後〉

髪の毛オブジェクトにソリッド化を適用すると、全てのメッシュが表を向いた状態を作り出せるため、髪の毛が透けなくなります。

髪の毛のオブジェクトにソリッド化モディファイアーをかけました。

面の方向を確認してみると、髪の毛の部分がすべて青色になっています。

Unityで確認しても、髪のオブジェクトが透けなくなっていました。

〈ソリッド化前〉

〈ソリッド化後〉

この後ご紹介する2つ目の方法よりも、ソリッド化を使う方が速く対処できます。

2.メッシュに裏面を貼る

1つ目の方法はモディファイアーを追加するだけで完了するため、手っ取り早く対処できるというメリットがあります。

一方で、髪の毛の厚さがどこも同じになってしまうため、リアルさを追求したモデリングにはなりにくいです。

そこで2つ目に、髪のメッシュに裏面を貼る方法を簡単に紹介します。

こちらは手間がかかってしまうものの、立体的な髪型を作れるというメリットがあります。

なお、この方法での髪の作り方は緋子さんの『Blenderで作るキャラクターモデリング入門実践ガイド』を参考にさせていただきました。

Blenderで作るキャラクターモデリング入門実践ガイド (Compass Booksシリーズ) | 緋子 |本 | 通販 | Amazon

まず、画像のように前髪の前面を作ります。

前髪を背面から見ると、以下のようになっています。

ここで、前髪の束の両辺を選択して、Ctrl + E →「辺ループのブリッジ」を選択します。

辺ループのブリッジとは

辺同士を面で繋げる機能です。便利ですが、頂点の数が同じでなければ使えない点には注意が必要です。

辺ループのブリッジをかけると、前髪の裏に面が貼られます。他の髪束にも面を貼った後は、上下の穴をうまく調整して埋めるだけです。

これなら前髪のメッシュの面がすべて内側を向くので、Unityに移動させた時も髪が透けません。

もう少し詳しい解説は「髪の毛の作り方 ~前髪編~【Blender】 」からご覧ください。

まとめ

Blenderで作成したモデルがUnityでは透けてしまう場合は、メッシュの向きが逆の可能性があります。

Blenderで一度メッシュの向きを確認してみることをおすすめします。