UnityAssetStoreで買ったモデルをちょっと変更したいとか、改変したいとか色々やりたい事があると思います。
そんな時は3DCGモデリングソフトにデータを持って行って編集したいところです。
Mayaと3ds MaxはUnity公式が連携していて使いやすいのですが、とてもそんなお金がない!
お金がないのでblenderを使いたいところなのですが、Unityとblenderは連携している訳ではないのでデータを移行する際に色々と不具合が起きる事があります。
今回はその不具合をなるべく解消できるように解説していきます。
<Blenderにファイルをインポートしよう>
とりあえず、UnityでダウンロードしてきたモデルをBlenderに入れましょう。不具合があるかもしれませんが、入れてみないとわかりません。
上部メニューのファイル>インポートからダウンロードしてきたファイルの形式を選択しましょう
珍しいファイル形式や新しいファイル形式だったりするとインポートするのに一手間必要です、インポートしたいファイル形式がなかったら↓を開いてください。Unityでよく使うfbxなら大丈夫かと思います。
もし、ここにダウンロードしてきたファイルの形式がなかった場合は、ユーザー設定から
上のアドオンを選びましょう。
一覧の中身が灰色になっていると思いますが、この中のImport-ExportもしくはImport:お目当のファイル形式の説明になっているものを探し、チェックを入れてください。
左上の検索から探す事もできますが、なんかうまく引っかからない事があります。(自分だけ?)
チェックを入れたら、左下のユーザー設定の保存を忘れず押しましょう。
ここにもない場合、アドオンをウェブから探してきて下の方にある「ファイルからアドオンをインストール」からblenderに入れてあげる必要があります。
試しにユニティちゃんをインポートしてみます。
この作品はユニティちゃんライセンス条項の元に提供されています
ユニティちゃんのfbxファイルを探してblenderにインポートします。
とりあえず、特に何もせずにfbxを選択して、右上のFBXをインポートを押します。
重いとちょっと時間がかかります。
ロードが完了すると、バンッ!
ぎゃーーーーー、ホラー状態です。
完全にぶっ壊れていますね。
ちなみに、同じfbxであってもうまくいくパターンもあります。これはそのアセットの作者さんによってモデルの作り方が違うからです。
そのため、一回blenderにインポートしてみないと何の設定をすればいいのかわからないのです。
デフォルトの状態でうまくインポートできるモデルだった場合、設定を変えてしまうと逆にうまくいかなくなったりするので、まずインポートしてみましょう。
<モデルが崩れてしまった時の対処法>
ボーンを修正しよう
ユニティちゃんの場合、どーしても顔がヤバいことになっているところに目が行ってしまいますが、まず一番に直すべきところはボーンです。
右側のウィンドウの人型になっているオブジェクトを選択して、プロパティウィンドウでも人型のアイコンをクリックします。
そして、レントゲンにチェックを入れることでボーンが透けて見えるようになります。
変な方向を向いている事がわかりますね。
ではインポートがうまくいかなかったオブジェクトはCtrl+Z連打か削除でなかったことにしていただいて、何もなかった頃に戻します。
もう一回インポートするところまでいきます。この時、左側にあるFBXをインポートの部分を見てください。
そこのアーマチュアをクリックして、リーフボーンを無視にチェック、子を強制的に接続にチェック。
プライマリボーン軸をX軸に変更。セカンダリボーン軸をY軸に変更します。
モデルによって設定が違うので、うまくいくまでチェックを入れたり外したり、軸を変更していって探り探りボーンが正しい方向になるまでやってみてください。
まだ顔のパーツは変ですが、とりあえずボーンはうまくいきました。
パーツを初期位置に戻そう
さて、今度は変な位置にあるオブジェクトを調整して元に戻しましょう。
ショートカットキーのNでプロパティシェルフを出して、変な位置にあるオブジェクトを選択、そして位置と回転を全部0にしましょう。
これを変な位置にある全てのオブジェクトに対して行うと
とりあえず、変な位置にあったものが一箇所にまとまります。
モデルの作者さんが原点の設定をオブジェクトの中心ではなくモデル全体で設定していてくれると、まとまった時それっぽい形になります。
この時、まとまってくれないと手で調整する必要が出てきます。手で調整になってしまったら、気持ち悪いですが諦める他ありません。次の回転とスケールを合わせた後、手で位置を調整することになります。
回転とスケールを合わせよう
とりあえず、おかしいオブジェクトの位置と回転を全部0にした時、正しい位置にあるオブジェクトとどれだけ差があるのかが見えるかと思います。
ユニティちゃんの場合、胴体が上向き、変な方向にあるオブジェクトが後ろ向きにあるので、角度差が90度っぽいです。
各種オブジェクトの回転をX軸で90度回転させてみましょう。
とりあえず、まだ変ですが、胴体と頭の方向は合いました。
次にスケールを変更します。どう考えても頭の方がデカイので小さくします。この時、矢印を引っ張って調整せずにプロパティシェルフで数値を使ってスケールを合わせる事をオススメします。値でいじった方が調整しやすいのと、割とキリのいい数値でズレている事が多いためです。
ユニティちゃんの場合、各種オブジェクトを0.01倍したらピッタリとモデルに重なりました。
これでメッシュの調整は完了です。
変な位置にあったオブジェクトを0の位置に持ってきたとき、うまくまとまらなかった場合は、さらにここからちゃんとした位置に手で持っていく必要があります。
ちゃんとした位置に持ってくる事ができたらAキーで全選択して、下のオブジェクトから>適用>回転と拡縮を選択します。
これで、変な位置にあったオブジェクトの回転と拡大縮小を変更しましたが、現在の位置を回転0、スケールを1として扱われるようになります。
ボーンを適用しよう
変な位置にあったオブジェクトはボーンの影響下から外れています。
アウトライナーウィンドウで、外れているオブジェクトを人型のアイコンにドラッグ&ドロップしましょう。
そして、アーマチュア変形をクリックします。
変な位置にあったオブジェクト全部突っ込んでしまいましょう。
プロパティウィンドウの逆三角形になっているアイコンをクリックすると、選択中のオブジェクトのデータを編集する事ができます。
この中で、変な位置にあったオブジェクトは頂点グループと書いてあるところに何もありません。
ちゃんとした位置にあったオブジェクトには頂点グループに何かしら入っています。
この中に何も入っていない物を順番に調整していきます。
この時、一回Unity側の状態をみます。
正常な位置にあったオブジェクトはmesh_rootにまとめてありましたが、変な位置にあったオブジェクトはCharacter1_Headにまとまっています。
Character1_Headはボーンですので、ボーン配下にあったオブジェクトが変になっているようです。
どうやらこれらのオブジェクトはこのボーンの子オブジェクトにすることによって動いていたようですので、blender側ではCharacter1_Headに追従するようにすればいいっぽいです。
というわけで
ここにCharacter1_Headを追加します。
右側の+ボタンを押してCharacter1_Headを追加しましょう。
+ボタンを押すと「グループ」という名前の頂点グループができますが、これをダブルクリックしてCharacter1_Headに改名します。
次に「編集モード」にします。
そして、Aを押して全選択します。
すると、頂点グループの下のところにボタン数種類とウェイトという項目が出現したと思います。
全選択した状態でウェイトを1にして、割り当てを押します。
これで、ボーンから外れていたオブジェクトをボーンに割り当てることができました。
ポーズモードでユニティちゃんのボーンを回転させた時、変な位置にあったオブジェクトがボーンにちゃんとついてきていればOKです。
テクスチャを設定しよう
プロパティウィンドウのテクスチャのアイコンを押した時、テクスチャが真っ黒になっている事があります。
この時、「画像を読み込めません」と書いてある場合、画像のパスが間違っています。
おそらくFBXをインポートしているフォルダを指定していると思うので、間違っている部分を修正しましょう。「画像を読み込めません」と書いてある上にあるパスが書いてある場所をクリックすれば修正する事ができます。
おそらく全てのテクスチャが同じようにパスが違うと思うので、一回修正したらファイル名以外の部分を全てコピーして、他のテクスチャにも適用しましょう。
次に影響のところにあるカラーをチェックします。これでマテリアルにテクスチャの色が乗るようになります。
次にマテリアルのタブを選択して、シェーディングのところの「陰影なし」にチェックを入れます。
本来であればライトを設定して、シェーディングもちゃんとした方がいいのでしょうが、今はとりあえずできているかどうかを確認するためにライトを無視した陰影なしにします。
3Dビューの下ところからマテリアルを選択します。
はい、これでだいぶ原型に近づきました。
透明を適用する
さて、テクスチャを貼り直しましたが、透明な部分がまだ読み込めていないようです。
透明を適用していきましょう。
透明にしたいオブジェクトを選択して、プロパティウインドウでテクスチャを選択します。
影響の部分のアルファ値にチェックを入れましょう。
次にプロパティウィンドウでマテリアルを選択します。
透過の項目にチェックを入れ、アルファを0にします。
あとは、眉毛やまつ毛も同じようにすればOKです。
はい、これで綺麗な形でインポートする事ができました。
残念ながらUnity側のシェーダーをblenderに持ってくることはできないのでblender側で新たに見た目の設定をやり直すしかありません。
blenderで編集後、もう一度Unityへ持っていくのであれば、Unity側で設定すればいい話なのでほっといても大丈夫です。