Blender2Pmxe1.0.6に更新。新機能を追加しました

シェアする

bl_blender2pmxe_addon_01

Blender2Pmx(以下「本家」という。)を改造して以前よりも使いやすくしました。その名もBlender2Pmxe(最後のeはExtendの略。)インポート&エクスポートの重要な箇所には手を付けてないので、基本的な使い方は本家と同じです。

当初はボーンを英名でインポートしたいが為に改造してたんですが、最終的には和名でも普通に使えるようになりました。デフォルトは英名優先になってるので、和名がいい方はアドオン設定で変更してください。(英名が空のときは和名で読み込みます)

その他にも不具合の修正と便利機能の追加をしてあります。

ダウンロード

最新
古いの

更新履歴

2016/04/03 – Ver 1.0.6
Make XMLにボーンとウェイトを転送するオプションを追加。[詳細はこちら]
bl_blender2pmxe_addon_12
2016/02/20 – Ver 1.0.5
インポート時のエラーを修正。ポップアップ表示のオプションを間違えてた。
2016/01/24 – Ver 1.0.4
エクスポート時のエラーをポップアップで分かりやすく。全体的に翻訳方法を変更。
bl_blender2pmxe_addon_07
2015/12/28 – Ver 1.0.3
インポート時のウェイト読み込みの不具合を修正。(重複したボーンのウェイトは足し算するようにした)
2015/12/16 – Ver 1.0.2
Blender2.76bで(PMXファイル名).xmlを取得できない不具合を修正。
2015/11/26 – Ver 1.0.1
UVの切れ目の箇所にシェイプをつけてエクスポートすると、PMXでモーフが崩れる不具合を修整。(本家にこの不具合はありません)

主な不具合修正

  • BDEF4のウェイト読込みの不具合修正
  • テクスチャパスを間違えていてもインポート可能
  • ボーン以外のウェイト(作業用ウェイト)を出力しない
  • ウェイト値0を出力しない
  • 2番目のテクスチャスロットを‘MULTIPLY’指定で乗算スフィアとして出力
  • xml使用時に余計な表示枠登録をしない
  • xml指定の無い_L/_Rボーンの和名を左/右○○で出力
  • xmlでのみ「変形階層」と「物理後」を指定可能
  • xmlにボーンのローカル軸を保存する仕組みを追加

改良した所

  • 英名を優先して読込み可能
  • xmlファイルを連番で別名保存可能(番号が大きい方が新しいファイル)
  • カスタムシェイプ付きでインポート可能
  • (ファイル名).xmlが無ければアドオンフォルダ内のdefault.xmlを取り込む
  • Armatureに連結されていないオブジェクトは出力しない
  • マテリアルが存在しないオブジェクトは出力しない
  • 余計なマテリアルは出力しない
  • カスタムノーマルを出力可能
  • モディファイアを適用した状態で出力可能
  • 各モードのツールパネルに便利機能を追加

フォルダ名を変えてあるので本家と併用できます。いろいろ使い比べてみてください。

流用したソースコード
  • Blender2Pmxのimporter 1.26 exporter 1.25
  • space_view3d_materials_utils.pyはmichaelwさんの
  • object_applymodifier.pyは@mato_sus304さんの
  • solidify_edge.pyは@che_tekuさんと@saidenkaさんの
  • アペンド処理は@che_tekuさんの
本家が置いてあるアップローダー
(´・ω・`)うp

アドオン設定について

アドオンを有効にする画面でを押すと以下のような項目が出現します。

bl_blender2pmxe_addon_08

ver 1.0.4でアドオン設定も日本語にしたので見ての通りです。分かり難いのだけ紹介します。

日本語のボーン名を使う
インポート・エクスポート時にボーンとシェイプ名に和名を使うようになります。MMDモデルは英名を意識してるものが少ないので、他人のモデルをインポートするならONにした方がいいです
ただ、和名の場合はコンソールに出力されるメッセージが文字化けすると思います。
カスタムシェイプを使う
インポート時や捩りボーン作成時にボーンにカスタムシェイプを使います。
Tスタンスでアペンドする
後述する人型ボーンの雛形をアペンドする機能の初期ポーズです。

追加した便利機能の紹介

3D ViewのツールバーのMiscタブに以下のパネルが追加されます。

オブジェクトモード

bl_blender2pmxe_addon_09

輪郭線
Solidifyモディファイアを使って輪郭線を再現します。追加する際には左側の色と数値を使い、右側にはアクティブオブジェクトの色と数値が表示されます。pmx出力とは無関係です。
Mat to Tex
3D View上のポリゴンに表示されるテクスチャを設定/削除します。一旦これを削除しないとWeightTypeは見難いです。
WeightType
PMX Editorの同名機能の模倣です。ただし、5本以上のウェイトが乗ってる頂点は赤色になります
ドライバーを追加
アクティブオブジェクトと同名のシェイプキーを持つオブジェクトにドライバを作成し、アクティブオブジェクトのキーフレームだけで同時に変形するようにできます。付属のsample.blendで試すと分かりやすいと思います。
bl_blender2pmxe_addon_04
XMLファイル作成
.blendファイルと同じディレクトリに存在するpmxファイルからxmlファイルだけを作成します。また、マテリアルの環境光やスフィア設定をblender側に持ち込みます。
bl_blender2pmxe_addon_13

ボーン修正のオプションについて
タイプ 説明
なし 何もしない。
位置 ボーン位置のみ修正。PMXE側で追加したボーンは無視。
転送 ボーンを丸ごと入れ替え+ウェイト転送。処理重い。
例えば曲面自動設定プラグインで追加したボーンを持ってこれます。
転送を成功させるコツ
  • BlenderとPMXEとで初期ポーズを一致させる
    bl_blender2pmxe_addon_14
  • PMXE側ではモデルのサイズ変更、頂点移動をしない。(一番近い頂点のウェイトを転送している為)
  • 細分割曲面モディファイアを予め適用しておく。場合によってはミラーや厚み付けも。
  • 英名優先読み込みで使用してる人はボーンの英名重複に注意。英名の修正はリネームプラグインを使うと楽です。
モディファイアーを適用
Armatureと輪郭線機能のSolidify以外のモディファイアを適用します。シェイプキーがあっても適用可能
アーマチュアの雛形をアペンド
人型ボーンの雛形をアペンドします。どのタイプでもボーンの角度は同じです。

  • 標準 – 標準的なボーン。あにまさミクとTdaミクのいいとこ取り
  •  – 高身長用
  •  – 子供用
  • ちび – デフォルメちびキャラ用

Armatureのエディットモード

bl_blender2pmxe_addon_10

ボーンの左右は_L/_Rで命名してることを前提にして作ってあります。

袖IKボーンを追加
袖IKボーンを追加します。腕・ひじボーンと重なって表示されるので、ボーンのレイヤーを使いこなさないと難しいです。
捩りボーンを追加
捩りボーンを追加します。これも腕・ひじボーンと重なってますが、カスタムシェイプを使うがONなら見やすいと思います。
自動ボーンを追加
選択したボーンに自動(補助)ボーンを追加します。これもカスタムシェイプがONなら見やすいと思います。
ボーンをX軸ミラー
選択したボーンをX軸ミラーコピーします。ボーン名の語尾は自動で_L/_Rに変更します。
縦列をリネーム
PMXEで剛体Joint自動生成配置プラグイン(2015/10/29:現在はDLできない)を使うためのリネームを補助します。曲面自動設定プラグイン派の人には必要ありません。
bl_blender2pmxe_addon_05
L/Rに変換 と 連番に変換
これもリネーム補助です。
bl_blender2pmxe_addon_06
. を _ に置換
選択したボーンのボーン名の.(ピリオド)を_に置き換えます。

Armatureのポーズモード

bl_blender2pmxe_addon_11

Tポーズへ と Aポーズへ
両腕と両ひじをアドオン設定で指定した角度だけ回転します。
クリア
ポーズボーンの変形をすべてクリアします。
リバインド
Armatureモディファイアを適用し、再びArmatureを追加します。Tポーズで作ったモデルをAポーズで出力したい場合に使います。シェイプキーがあっても適用可能。
IKを追加
IKと一緒にIKLimitとIKLoopsのカスタムプロパティを追加します。Chain Lengthの値は手動で調整してください。
他の機能はラベル名だけでも使い方が想像できると思います。コンストレイントはBlenderの標準機能でもできますが、このボタンだとコンストレイントの変換空間をMMD用にローカル空間に設定します。

default.xmlについて

  • 和名と英名の対応表は、あにまさミクをベースに少し拡張してあります。有名な海外のモデルがモーフ名の頭文字を大文字にしていたので、それを真似しています。
  • ボーンの英名はあにまさミクと同じで、小文字のままです。
  • 表示枠の分類は少し流行を取り入れました。

最後に

本家と同じく改変などに制限はつけないので自由に使ってください。

英名優先で作る場合は、xmlを覗いて和名と英名の関連付けをチェックした方がいいと思います。もちろん、自分好みのdefault.xmlに置き換えるのもアリだと思います。

英名優先で作ると和名の打ち間違えと英名の付け忘れを防げる利点がありますが、海外のモデルでも英名が空っぽなのが結構あったので、英名にどのくらい需要があるかは分かりません。

今後はBlender2Pmxeのチュートリアルも書いていく予定です。

スポンサーリンク
レクタングル広告(大)

シェアする

フォローする

スポンサーリンク
レクタングル広告(大)

コメント

  1. きの より:

    始めまして、とても素敵なプラグインを公開していただきありがとうございます。

    自分の環境(blender ver2.74)に問題があるだけかもしれませんが
    問題が起きたのでご報告します。
    シームが交差している箇所にシェイプをつけてエクスポートすると
    PMXのモーフにずれが生じました。
    http://kino.jp/up/pmx.png
    なお、本家でエクスポートしたところ問題はおきませんでした。
    アドオンやスクリプトにまったくわからないので見当違いなことを書いていたら申し訳ありません。

    • kagayas より:

      不具合報告ありがとうございます。分かりやすい画像で特定しやすかったので修整できました。

      アドオン改造する際にソースを全体的にダイエットしたんですが、シェイプの箇所はうっかりミスで処理を写し間違えていたようです。

  2. きの より:

    更新ありがとうございます。
    アドオンを更新して試して問題ありませんでした。

  3. 11beef より:

    開発お疲れ様です、不具合報告です。
    インポート時のBDEF4の処理で、2つ以上の枠に重複して同じボーンのウェイトが振られていると最後の値だけを拾ってしまうようです。
    たとえば、PmxEditor上で
    下半身 0.5
    上半身 0.35
    下半身 0.15

    などとなっている時に、上半身0.35 下半身0.65とインポートするべきところが、上半身0.35 下半身0.15となってしまいます。
    自分で作ったモデルではないので、そもそもなぜウェイトがこのようにおかしな割り当て方になっているのかわかりませんが、これが起こったのはカスタム少女からの変換モデルです。
    PMXE側で重複したボーンに振られたウェイトを1つの枠にまとめる方法がわからなかったので(正規化コマンドでは直りませんでした)
    こちらのスクリプトのソースに同じボーンのウェイトを足し合わせるという行を加えたら一応正しい値がインポートできるようになりました。
    あまりよく起こることではないかもしれませんが報告しておきます。素人なので書きかたを間違ってるかもしれませんが、追加した行も貼っておきます。

    # BDEF4
    elif vert_data.Type == 2:
    for i in [3,2,1]:
    for j in range(i-1,-1,-1):
    if vert_data.Bones[i] == vert_data.Bones[j]:
    vert_data.Weights[j] += vert_data.Weights[i]
    vert_data.Weights[i] = 0

    ついでに、BDEF2においても、頭0.86 頭0.14 などとなっている頂点がインポート後 頭0.14 だけになってしまいます。こっちはどちらにしろ正規化したら1になるのであまり問題ではありませんが一応。

    • kagayas より:

      不具合報告ありがとうございます。
      そのようなウェイトは自作モデルをPmxEditorで編集していても発生しそうなので修正しておきました。
      BDEF2の件も修正しました。

  4. ななし より:

    いつもプラグインのお世話になっています。ありがとうございます。

    旧バージョンの公開はされないのでしょうか?

    1.0.4版を使用したところ、エラーが連発されてしまい、エクスポートはなんとかできるのですが、インポートがまったくできません。(blender2.76bでもできません)

    これより前のバージョンではまったく何の問題もなく使えていましたので、もし可能でしたらぜひお願いしたいです…。

    問題なく使用できていたのは動作環境blender2.75aの時のものです。

    ご検討いただけましたら幸いです。

    • kagayas より:

      不具合報告ありがとうございます。
      インポート時のポップアップ表示のオプションを間違えてました><
      おっしゃる通りなので、旧バージョンもダウンロードできるようにしておきました。

      • ななし より:

        ご対応いただき、ありがとうございます。
        ver1.0.5を使用したところ、問題なくインポートできました。

        また旧バージョンの公開もしていただき、ありがとうございます!
        こちらもありがたくお借りいたします…!

  5. 名無し より:

    blenderからpmxにエクスポートしようとすると次のようなエラーを出します。もしお分かりになりましたら解決策を教えていただけませんでしょうか。
    pmx_vert.Weights[0]/=total_weight
    ZeroDivisionError: float division by zero

    • kagayas より:

      おそらく本家blender2pmxの機能でエクスポートしていると思います。私が改造した出力機能には名前の後ろに(Extend)または(機能拡張版)という文字列があるので、確認してみてください。

      もしくは、そのエラーは頂点グループにウェイト値0が残っているのが原因なので、ウェイトペイントモードでウェイトツール→クリーンを実行してから出力してみてください。(オプションの使用部分は「全グループ」を選択)

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です