blenderの入っていないunity for mac で、blenderからインポートしたオブジェクトは表示されない

11-21,2023


昨今のUnityでは、Blenderで作成した3Dモデルをインポートする際、
いちいちFBXファイルに変換せずとも、
直接Blendファイルをインポートできます。
とても便利です。

が、AndroidとiOS両方のアプリ開発をする上で、
つまづいたので、ここに記します。


私は基本的にはWindows上で開発をします。
BlenderもWindowsで使います。

そして、iOS用にビルドする際には、
Windowsで作成したデータを、
UnityのPlasticSCMを使って、MacのUnityへ送っています。


・・・ところが、
ここで奇妙な現象が発生しました。

iPhone実機で、3Dモデルが表示されていなかったのです。


最初は、実機ベースの現象かと思い、
ずいぶんと時間を無駄にしてしまいました。
数週間くらい解決できませんでした・・・。

実機ベースの問題ではないので、
実機ベースで考えても答えが見つからないのは当然なのです・・・おお神よ


また、私はAndroid端末を持っていないので、
Android端末では、そのモデルが表示されている、ということにも
ずっと気づかずにいました。

勝手に、iOSで表示されていないのだから、Androidでも表示されていないだろう
・・・と思い込んでいました。

しかし、今日、
たまたまAndroidユーザーの人がそのモデルの表示されている
スクショを投稿していたのを見て、
私は膝から崩れ落ちたのでした。


Androidでは表示されている・・・、
・・・そう、これは実機ベースの問題ではなく
iOSだけの問題、あるいは、iOSビルドを行うMac上の問題である!!!
・・・ということに、
私はこの時、初めて気づきました。


Mac上のunityで確認してみると、案の定表示されていませんでした。
Windows上で開発を行っていると、
Macへのデータ移行は流れ作業になり、
いちいち確認しなくなっていくものですが、
それがあだとなったようです。


そして、なぜ表示されていないのだろう・・・と思い、
該当のモデルをMacのunityで確認すると、
そのモデルデータ(Blendファイル)が、Unknowファイルになっていました。

Unity for macが、なんのファイルか特定できないため、
そのファイルはmissingファイル扱いにされており、
そのMacでビルドしたiOSでは、モデルが表示されていない
・・・ということなのでした。


特定できない理由は、
そのMacに、Blenderがインストールされていないことが原因のようです。

Macに使いもしないBlenderをインストールするのは面倒だったので、
最終的には、
Windows側で、BlendファイルをFBXに変換し、
ベースとなっているプレファブの中身を、
Blendファイルから、FBX入りのオブジェクトに変更することで
対応しました。

結局、Blenderから直接インポートできる~らくちん~
・・・の代償が、ここに表れていたという話でした。


ちなみに、今回は
blenderモデル → バリアントプレファブ化(a)し

その(a)の集合体 → プレファブ化(A)
したものを使っていたので、

(a)をFBXに変更できれば、一括で対応できますが、
これが少し難しかったので、併記しておきます。


バリアントプレファブ(a)をopenすると、
当然、「Blenderモデルをベースとする」と書かれており、
そのまま変更はできません。

そこで、
バリアントプレファブ(a)をopenした状態で、
バリアントプレファブ(a)のルートオブジェクトをunpackし、

そのルートオブジェクトに追加されているMeshなどを全て削除。

そしてその子オブジェクトに、
FBXを入れてやることで解決しました。
(FBXを入れると、スケールが1/100とかに違っていたりするので
 ちっちゃくて見えなくて表示されてない!!! と勘違いするので
 ここも要注意です)

ちなみに、その集合体(A)は、
実行時combine mesh化しますが、
combine mesh化する時は、
Blendファイルだろうが、FBXだろうが、
モデルのRead/WriteをONにしてあげないと、
Combine meshできないのでそのことも記しておきます。


今回も、同様ケースを検索しても、ぜんぜん引っかからないので
ここに記します。