Blenderで作成したキャラクターをUnityで表示する時、オブジェクトの裏側が表示されずに困ることはないでしょうか。わたくしトナカイはとっても困りました。
例えばこの画像のモデルでは、髪の毛とスカートのオブジェクトが透けてしまっています。
モデルを回転してみると、今度はスカートの後ろ側が透明になってしまいました。
キャラクターを回転させると、透明になってしまう場所も変わるため、オブジェクトそのものがなくなっている訳ではないようです。
こうなる原因を調べた所、「メッシュの向きが逆だから」ということが分かりました。
この記事では、Blenderで作ったオブジェクトがUnityで透けてしまう原因と、解決方法を解説します。
オブジェクトが透ける原因:メッシュの向きが逆だから
オブジェクトが透けてしまう理由は単純です。前述の通り、メッシュの向きが逆になっていたからでした。
試しに、メッシュがどの方向を向いているか表示してみます。
Blenderの「オーバーレイ」を開き、「面の向き」にチェックを入れると、メッシュの向きが赤と青で表示されます。
青で表示されているメッシュは内側を向いています。
一方、赤で表示されている箇所はメッシュが外側を向いています。
Unityでモデルを確認してみましょう。
青い面は正常に表示されていましたが、赤い面は透けてしまっていました。
メッシュが外側を向いていると、Unityでは透明になってしまいます。
スカートのオブジェクトが透けないようにする方法
メッシュが外側を向いているためにモデルが透けてしまうのなら、メッシュの向きを内側にすれば解決するはずです。
という訳で、向きを変えていきます。
- Blender上で、向きを変えたい面を選択する
- 画面上部にある「メッシュ」をクリックする
- 「ノーマル」→「面の向きを内側に揃える」を選択する
今回は、スカートのメッシュを全て選択して、面の向きを内側に揃えました(髪の毛は面の向きを変更しても透けてしまうため、後述する方法で透けないようにします)。
これでメッシュの向きが変更できました。
このモデルをstlファイルとしてエクスポートし、もう一度Unityで表示させます。
スカートについては想定通りに表示されました。
髪の毛が透けないようにする方法2つ
スカートの部分は、メッシュの向きを変えることで表示されるようになりました。
しかし、髪の毛は表も裏も見えるので、メッシュの向きを変えるだけでは解決できません。
髪の毛が透けないようにする方法には次の2つがあります。
- モディファイアーに「ソリッド化」を追加する
- メッシュに裏面を貼る
ここからは、2つの方法について解説していきます。
1.モディファイアーに「ソリッド化」を追加する
1つ目は、髪の毛オブジェクトのモディファイアーにソリッド化を追加する方法です。
ソリッド化とは、メッシュに厚みを付けるモディファイアーです。
厚みを加えたいオブジェクトを選択して、「モディファイアープロパティ」→「生成」→「ソリッド化」を選ぶことでモディファイアーを追加できます。
例えば、1枚のメッシュにソリッド化を適用すると画像のように変化します。
〈ソリッド化前〉
〈ソリッド化後〉
髪の毛オブジェクトにソリッド化を適用すると、全てのメッシュが表を向いた状態を作り出せるため、髪の毛が透けなくなります。
髪の毛のオブジェクトにソリッド化モディファイアーをかけました。
面の方向を確認してみると、髪の毛の部分がすべて青色になっています。
Unityで確認しても、髪のオブジェクトが透けなくなっていました。
〈ソリッド化前〉
〈ソリッド化後〉
この後ご紹介する2つ目の方法よりも、ソリッド化を使う方が速く対処できます。
2.メッシュに裏面を貼る
1つ目の方法はモディファイアーを追加するだけで完了するため、手っ取り早く対処できるというメリットがあります。
一方で、髪の毛の厚さがどこも同じになってしまうため、リアルさを追求したモデリングにはなりにくいです。
そこで2つ目に、髪のメッシュに裏面を貼る方法を簡単に紹介します。
こちらは手間がかかってしまうものの、立体的な髪型を作れるというメリットがあります。
なお、この方法での髪の作り方は緋子さんの『Blenderで作るキャラクターモデリング入門実践ガイド』を参考にさせていただきました。
Blenderで作るキャラクターモデリング入門実践ガイド (Compass Booksシリーズ) | 緋子 |本 | 通販 | Amazon
まず、画像のように前髪の前面を作ります。
前髪を背面から見ると、以下のようになっています。
ここで、前髪の束の両辺を選択して、Ctrl + E →「辺ループのブリッジ」を選択します。
辺同士を面で繋げる機能です。便利ですが、頂点の数が同じでなければ使えない点には注意が必要です。
辺ループのブリッジをかけると、前髪の裏に面が貼られます。他の髪束にも面を貼った後は、上下の穴をうまく調整して埋めるだけです。
これなら前髪のメッシュの面がすべて内側を向くので、Unityに移動させた時も髪が透けません。
もう少し詳しい解説は「髪の毛の作り方 ~前髪編~【Blender】 」からご覧ください。
まとめ
Blenderで作成したモデルがUnityでは透けてしまう場合は、メッシュの向きが逆の可能性があります。
Blenderで一度メッシュの向きを確認してみることをおすすめします。