2013年

10月

03日

【Blender2.68】PMX出力に対応しました

更新内容は以下のようになっています。

 

①PMX出力

今更ながらPMX出力に対応しました。デフォルトでは拡張子を.pmdにしていますが、.pmxに拡張子を変更することでpmx形式でモデル出力できます。

 

但し、幾つかの制限があります。

 

●スキン

ボーン影響数が4つを越える頂点がある場合、影響度の高い順にボーン4本を選択し、それ以外の影響ボーンは切り捨ててウェイトが1.0になるよう再設定してます。モデルによっては形状破綻するおそれがあるので、出力前にはあらかじめ影響数を4本までに設定してください。

 

PMD出力の場合は影響数が2本までになるように設定してください。

 

●IKボーン

BlenderとMMDのIKの仕様が異なるため、Blender、MMD共に設定を上手く引き継げず形状破綻が度々ありました。今のところPMD・PMX出力共にIKの設定は出力しないようにしています。IK設定は出力後にPMD or PMXEditorで設定することをお勧めします。

 

●表情

頂点モーフ(ShapeKey)出力にだけ対応しています。ボーンモーフ、材質モーフ、UVモーフは出力後にPMD or PMXEditorで設定してください。

 

●物理

剛体及びジョイント出力には対応していません。

 

●表示枠

出力後にPMD or PMXEditorで設定してください。

②重複頂点削除機能

頂点削除にはBlenderのメソッド「bpy.ops.mesh.remove_doubles()」を使ってましたが、このメソッドはメッシュの重複頂点を削除する関数で、ShapeKeyの頂点データは対象外でした。なので頂点モーフ付MMDモデルにこの処理をかけると表情データが破綻しまうのですが、前回の更新ではそのことを忘れていました。

 

自前での重複頂点削除も可能ですが、インポートに今以上の時間が掛かるので機能自体を廃止することにしました。重複頂点が気になる方は読み込んだ後に各々で設定してください。

③MMDモデルの頂点出力について

BlenderとMMDのUV座標データの扱い方に違いがあり、出力をするには「Blenderの面UV座標をMMDの頂点UV座標へ変換」する必要があるのですが、これを以前実装した時には処理が重すぎて使い物にならず、仕方なく「ポリゴン配列のインデックスデータにしたがって頂点を新規作成」する処理を使っていました。

 

これだと出力前のポリゴンデータは破棄され、頂点データもインデックス数分増加し重複頂点だらけになり、PMDの使用上最大2Byte(65,535個)までの頂点数を簡単に超える恐れがありましたが、そちらの方が速いのでやむを得ず使用してました。が、今回改めて処理を書き直したところ、ようやく実用可能な速度になりました。

 

どうも以前のアルゴリズムには問題があったようです。

出力速度も旧スクリプトと比較すると速くなってます。

 

MMD既存の初音ミク.pmdを読み込んで出力すると、下図のような違いが出ます。

旧処理だと頂点数が面数×3だけ増えます。

 

以前の処理方法の場合

 

最新版の場合

実は剛体とジョイントも読み込めるようになっていますが、ボーンとは連携していないので物理演算は剛体だけが独立して動きます。私はまだ設定方法がよく分からないので、調整が可能なら各々でボーンと連携させてみてください。

スクリプトのダウンロードはいつものところからお願いします。

ファイル名は「mmd_script_268」です。

 

2013/10/04 17:30追記:

ボーンとメッシュをレイヤー0に、物理剛体とジョイントをレイヤー1に分別するように修正を加えました。お手数ですが、この追記より前にスクリプトをダウンロードした方々はこちらのファイルだけ上書きをお願いします。

model_utils.rar
圧縮ファイル アーカイブ 7.8 KB

コメントをお書きください

コメント: 3
  • #1

    カスコ (土曜日, 12 10月 2013 16:38)

    お世話になっております。
    カスタム少女モデルをPMXを介してBlenderに移植しているのですが、
    テクスチャの読み込みとウエイトボーンの設定が上手く働かないようです。
    ちなみにMeshIOさんのほうはウエイトボーンの設定は上手くいくのですが、
    センターボーンとIKボーンが上手く読み込めておらず・・・。
    厚かましいですが改善して頂けると嬉しく思います。

  • #2

    ze10 (火曜日, 22 10月 2013 17:52)

    >>1 カスコ様

    コメントに気づくのが遅れてしまい、大変申し訳ありません。
    ご報告ありがとうございます。

    カスタム少女は扱ったことがないのでどういう状態になるのかわかりませんが・・・何かサンプルモデルのようなものがあれば教えていただけると助かります。

    あと、実際にモデルを見てみないと分からないところが多いのでこれはあくまでも推測ではありますが・・・・・・

    ボーン設定ですが、Blenderは名前は全て半角文字だと63文字、全て全角文字だと21文字までしか入力できません。

    この制限を越えたボーン名を入力すると制限数を超えた文字は削除されてしまい、ウェイト設定の際に正しく名前比較が出来なくなります。

    この制限を越えていないか、また同名のボーンが幾つか存在していないか確認してみてください。

  • #3

    piyo (日曜日, 10 11月 2013 03:24)

    メールで質問させていただきました。
    どうかよろしくお願いいたします。