【Blender】glTF形式でエクスポートしてUnityにインポートするまでのスムーズな手順【Unity】
UnityってFBX形式やOBJ形式かを取り込むとテクスチャが全部ベロッて剥がれた状態からスタートになる。全部付け直し・・・コレが本当に煩わしい。建築の仕事だと笑えないレベル。昔(Unity5時代)は裏技チックな感じでテクスチャ→3Dデータの順序で取り込むと自動貼り付けしてくれた気がするけど、どうも上手く行かない。
一方で「glTF形式だとこの辺の手間諸々が全く無いんだよ」って噂を聞いて、試したら本当でした。ということでご紹介。10分以内には終わります。
やり方
・ゴールは、Unityに3Dデータをインポートするだけで、テクスチャもアニメーションも適用済みになること。
・3Dモデリングは、Blenderでやっている前提とします。
・BlenderはCyclesレンダーを使う前提です。(これ重要)
2023年8月1日追記
・本記事はバージョン2.79bの場合の手順です。ご注意ください。2.90以降であれば「一通り作業出来たら[ファイル]→[エクスポート]→[glTF]します。」から読んでもらえばOKです。
理由:glTF関連が最初から入っているため。
・Cyclesかどうかも不問で、EEVEEでもOK。
動画版
Blender
BlenderのアドオンでglTF-Blender-Exporterというのがでているのでまずは有効にしましょう。Khronosが作ってくれているんですね。
KhronosGroup/glTF-Blender-Exporter – GitHub
ダウンロードしたらzip解凍をします。このへんがちょっとだけ普通のBlenderアドオンと違う。
scripts\addonsフォルダを開くと、io_scene_gltf2というフォルダがあるので、これをBlenderのアドオンフォルダにコピーします。
普通にmsiでインストールした人だとC:\Program Files\Blender Foundation\Blender\2.79\scripts\addons\フォルダになるかと。
そしたらBlenderを起動。
[ファイル]→[ユーザ設定]を選択し、[アドオン]を開きます。
検索で「gltf」と入力するのが良いでしょう。Import-Export : glTF 2.0 formatを有効にします。
これで早速glTF形式でエクスポートが可能となります。
glTFエクスポートのための作業
ただしこのまま[ファイル]→[エクスポート]→[glTF]してもUテクスチャが付かないんですよ。UnityどころかWindows付属の3Dビューワーでもダメ。はぁ? 暫くこれがよく分からなくて悩んだのですが、たまたまググった先のサイト様のひとつが答えを載せてくれていたので紹介。シェーダーの設定が必要なんですって。まあ3DS MAX+V-Rayマテリアルみたいなモンだと思えば腑に落ちるのでは!
シェーダーをglTF用にする必要があります。まずは[リンク]をするそうで。
[ファイル]→[リンク]を選択。
開くファイルはglTF-Blender-Exporter-master\pbr_node\glTF2.blend\NodeTree\フォルダのglTF Metallic Roughnessです。
そしてここから全部のマテリアルをglTF用シェーダーに変更します。
マテリアルの[サーフェス]を開くとglTF用シェーダーが増えています。[glTF Metallic Roughness]でいいと思います。
プリンシプルBSDFシェーダーっぽいパラメータが出てきますので必要なパラメータ調整を適用して下さい。
一通り作業出来たら[ファイル]→[エクスポート]→[glTF]します。
オプションは特にいじらなくても良いと思われます。
Unity
やっとUnityにきました。こっちでもプラグインを入れる必要があったりします。
ousttrue/UniGLTF – GitHub
ダウンロードしたら、Unityのメニュの[Assets]→[Import Package]→[Custom Package…]を選択。ダウンロードしたファイルを選択します。インポートリストが左上あたりに出ます、そしたら[Import]を押しまして。
するとメインメニューに[UnityGLTF-1.27]という項目が増えます。これを押して[Import]を選択。
glTF形式ファイルを指定して開きます。
Unityプロジェクトのアセットのフォルダのどこにインポートするか聞かれるので、任意のフォルダを選択します。
これだけです。できた!
完成
備考:ライティングが効かないとか
たまに起こるんですが、シェーダーが全く機能していないときがあります。なぜかマテリアルのシェーダー設定がUnlitになっているからです。このときは手で直します。
マテリアルを全部選択して[Shader]を[UnityGLTF]->[StandartVColor]を選択すれば解決します。