UnityとBlenderでステージモデルをPMXにするメモ
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

UnityとBlenderでステージモデルをPMXにするメモ

2018-09-30 11:11
    複雑なMMDステージモデルを簡単に作るためにUnityをやってるのに、
    意外と難航しちゃってるので覚え書きいきます。

    手順
    1.Unityで町モデルセットをプロジェクトにインポートする
    [宣伝]アセットストアで販売中の昭和町モデルセットは現在3つありますが、全部使います
    vol1-家
    vol2-道路
    vol3-店
    ※それぞれ単体でも街並みを作る最低限のモデルが入ってます

    2.シーンを新規作成して、建物のプレハブ=パーツを並べて、町並みを組む



    3.FBX Exporter(無料)のアセットをインポートして、シーンを書き出す
    シーンに並べたすべてのメッシュを統合した一つのfbxファイルと、シーン内で使用してるテクスチャが書き出されます。

    追記:必ずバイナリで書き出します。

    ここまでは簡単(=私は楽しい)

    4.Blenderでfbxを読み込む
    まずPMXで書き出すために、MMD_toolsのアドオンを導入します。
    https://github.com/sugiany/blender_mmd_tools

    新規作成のまっさらなファイルに、
    ファイル-import-fbxから3のfbxを読み込みます。
    (Blenderはfbxの扱いが結構苦手で、fbxのインポートもなにかアドオンが必要だったかも)

    5.最低限のPMX化

    3Dビュー左のMMDタブを開いて、


    一番上のCreate Modelを押すと、全親ボーン(のあるアーマチュア)とPMX化するのに必要な細かいあれこれが追加されます。

    読み込んだFBX内の全オブジェクトを、この全親ボーンにペアレントします。
    アウトライナー(オブジェクトツリー的なウィンドゥ)からライトとかカメラとか不要なものを選択不可にしてから、
    3Dビューの上でctrl+Aで全選択します。(Blenderの仕様で、必ず3Dビューの上でないと効きません)



    次にアウトライナーにカーソルを移して全親ボーンを、Shift+左クリックなどで選択し直して複数選択の最後に選択された状態にします。
    そしたらまた3Dビューにカーソルを移して、Pを押してペアレント-オブジェクト(トランスフォームを維持)を押す…
    と、ボーンの子に全メッシュが移動します。
    ※fbx中に構築されてた親子構造はなくなります




    邪魔だったらモデルに関係ないライトや空オブジェクトなど(Unityのシーンに配置してあると、fbxに梱包される場合があります)を削除します。

    ↑これとか

    追記:ところで、膨大な量のメッシュありオブジェクト-Unity上でプレハブだったものは同じものが複数あるとBlender上ではリンク…インスタンスとして扱われて、これを統合とかすると位置・スケールが狂ってしまうのですが、オブジェクト-適用では実体化して消すことができません。
    立方体とかのメッシュのオブジェクトを新規作成してからメッシュだけ削除して作った空オブジェクト(ややこしい)に統合すればローカル座標はかき消せますが…
    オブジェクト-シングルユーザー化でインスタンス(リンク)を実体化できます。複数選択も可能

    ここまでいけたらひとまずPMXで書き出して、MMDに持ち込めるまでできます。
    ※メッシュにウェイトが塗られてませんが、自動的に全親ボーンに割り当てられます



    しかし位置やスケールは不適切で、一部のテクスチャがおかしかったりします。


    6.スケールと位置を最適化
    MMDとUnityではスケールが中途半端に違います。
    移動とスケールで、手動で調整します。
    スケールは、Unityから書き出したFBXから大体、1.1~1.2(x10)倍にするとMMDでちょうどいいサイズになるかと思います。
    なおスケールはPMX書き出し時にも変更できます。モデルを変形させるよりはこっちのほうがいいかも

    位置はというと、PMXに書き出される際はローカル軸とかオブジェクトの原点とかは無視されて、作業用グリッドのある面の原点が原点として扱われます。その位置にメッシュ・オブジェクト・ボーンを移動させる必要があります。
    3Dカーソルとトランスフォームと数値入力をうまく使って、見栄えの良い箇所を原点に持っていきます。

    いじった移動量とスケールは、必ずメモします。
    あとから建物の配置を直したいなどの場合は2.まで戻ることになりますが、当然スケールと位置はつけ直しです。マテリアル不具合の対処(後述)の必要もあります。
    また、Blenderの仕様上インポートし直すと同じマテリアルとテクスチャが複製されて増えてしまうかもしれません。
    マテリアルの統合・削除ができるアドオンも導入したいです。


    7ボーンを追加など
    イスやドアやプロップにボーンを仕込みたい場合、ボーンを追加できます。
    オブジェクトを統合してると大変な手間ですが、バラバラなら多少楽です。

    まず目当てのオブジェクト(メッシュ)を選択して選択部に3Dカーソルを配置します。
    オブジェクト名をコピーします。
    ボーンを選択して編集モードにしてボーン追加すると3Dカーソルの位置に配置されます。
    ボーンにオブジェクト名をコピペして、同名のボーンに命名します。
    オブジェクトを選択し直して、プロパティーモディファイアーアーマチュアを追加、オブジェクトの欄にアーマチュアを割り当てます。


    ※ボーン入れたいオブジェクトが大量にある場合、まとめてモディファイアーを入れる方法はこちら

    ペイントモードにして、オブジェクトのウェイトを塗ります。ぐにゃ~と曲げたいわけでもないなら、大きいブラシ半径+強さ1.0+正規化で真っ白に塗ります。
    ウェイトを塗ると頂点グループが作成されるので、オブジェクト名=ボーン名と同じ名前にします。
    もしくは、頂点グループを新規作成>ボーン名にリネーム>編集モードに切り替え>頂点を全選択して頂点グループに割り当て、でもいいです(塗り損じがないのでこっちがいいかも)



    Blenderはボーン名と頂点グループ名でメッシュとボーンを紐つけてるんですねえ。

    動作確認は、ボーンを選択してポーズモードにして行います。ちゃんと動いたら成功。

    8.マテリアルを材質に調整する
    Blenderでマテリアル表示オンにすると、いくつかおかしいとこが確認できました
    fbxエクスポータの不具合か、Blenderの読み込み不具合か…


    この例では、マテリアルのテクスチャが入れ替わってるとかだけでなく、木と瓦のマテリアルがコンクリのマテリアルに統合されてるみたいな厄介な症状も確認されました。
    マテリアルのコピペでなく、メッシュを編集して直さないといけなくなると、元モデルの正常なマテリアル設定がわかってないと直せません…幸い、異常なオブジェクトは2つだけだったので対処できましたが、これじゃ手軽に変換できると言いにくくなるわ(-_-;)

    Blender上では問題ないのにPMXEだとテクスチャがさしかわる、という症例もありました。
    UnityでEmmisive(発光)テクスチャを使ってると、高確率でカラーの欄に入れられました。
    Blenderからプロパティ-テクスチャを開いて、複数あるテクスチャのうちEmmisiveやNormalが一番上にあったらそれが原因…


    Diffuse(=カラーテクスチャ)を一番上に移動すると阻止できます。
    というかカラーマップ以外も、スフィアマップの欄に入れられても困るのですべて削除してもいいかもしれない

    また町モデルセットでは一部のマテリアルにタイリングをつかってますが、
    PMXではタイルテクスチャが使えないので、UV編集で調整することになります。
    大量のオブジェクトをいちいちひとつずつ開いてUV編集なんてきつすぎるので、オブジェクト統合して作業するか、タイルテクスチャの方をレタッチソフトで変更して対処とか。

    ※同じ形状のオブジェクトはインスタンスになってるので、一つ編集したらすべて差し替わります。

    9.PMXEとMMDで動作確認

    どのみちすべてのマテリアル(いや材質)は数値をいじってはPMXEとMMDで見比べてを繰り返して、理想の表示設定にする必要があります。
    どうも拡散色とか反射色とかの数値はBlender上ではいじれないみたいです。
    MMDの独自仕様-半透明テクスチャを使ってる材質を一番最後に持ってくとか、ポストエフェクトのMMEに対する仕込みとかも、BlenderではできないぽいのでPMXEで行います。




    といってももう結構MMDから遠ざかってたから
    最新のMME向けの調整とかわからないんですが…

    そうしてできたPMXステージモデルがこちらです。


    …ステージモデルでVRMってのはありなんだろうか?

    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。