MMDモデル(.pmd, .pmx)インポーター/エクスポーター

●概要

Blender2.5~2.7でMMDモデルフォーマットを入出力するスクリプトです。

※各バージョンによってお使いいただくスクリプトが異なります。


Windows XP・7、Ubuntu、Mac OS Xで動作確認済みです。

バージョン PMX読込 PMD出力 PMX出力 補足
Blender2.62以前 × × × 材質はオブジェクト毎に16個まで
Blender2.63~2.67 ◯※1 ◯※2 ×

頂点モーフに対応

材質数の制限を解除

Blender2.68~ ◯※1 ◯※2 ◯※2 MMDパネルを追加

※1

剛体は読み込んでますがBlenderへの反映はしていません。

また、頂点モーフ以外の表情データは破棄されます。

 

※2

IK、剛体情報は出力されません。

●ダウンロード

●導入方法


スクリプトファイルをダウンロードする(解凍する必要はないです)。


「File」→「User Preferences」を開いてAdd-Onsを選択します。

 

画面下の「Install an addon」をクリックして、ダウンロードした圧縮スクリプトフォルダを選択します。

Import-Export: Import-Export MikuMikuDance Model  Format(.pmd/.pmx)

という項目が出てくるのでチェックを入れます。

※Blenderのバージョンによっては名前が違っている場合があります。

 

インストールが完了すると「インポート」と「エクスポート」に新たなメニューが追加されます。

エクスポート側はPMD・PMXフォーマット毎にそれぞれメニューが追加されます。

●インポーター

※スクリプトのバージョンによって内容が異なります。下図は最新版のものです。

 

[ Scale / 拡大縮小] : 拡大率を0.1~100の範囲で変更が可能です。初期値は「0.5」です。

[ Up Axis / 上方の軸] : 上軸を設定します。初期値はBlenderの上軸「Z軸」です。

軸を変更したくない場合は「Default」を選択してください。

 

[ World / ワールド] : 座標系を設定します。初期値はBlenderの座標系「右」です。

[ IK] : MMDのIK設定を反映します。仕様の違いにより動作が破綻する場合があります。

[ Smooth/スムーズ ] : 読み込んだ面にスムージングをかけます。

[ Shadeless/陰影なし ] : マテリアルの陰影処理を無効化します。

 

インポート結果はこのようになります。

●エクスポーター

※スクリプトのバージョンによって内容が異なります。下図は最新版のものです。

 

[ Scale / 拡大縮小] : 拡大率を0.1~100の範囲で変更が可能です。初期値は「2.0」です。

[ Up Axis / 上方の軸] : 上軸を設定します。初期値はMMDの上軸「Y軸」です。

軸を変更したくない場合は「Default」を選択してください。

 

[ World / ワールド] : 座標系を設定します。初期値はMMDの座標系「左」です。

 

[ Encoding / エンコーディング ] : ファイルのエンコード方式を設定します。

「Unicode(UTF-16LE)」と「UTF-8」を選択出来ます。

※pmxだけのメニューです。pmdは「Shift-Jis」でエンコードします。

 

エクスポート結果はこのようになります。

●MMDパネル

メッシュパネルとマテリアルパネルにMMDの項目を追加しています。

※Blender2.68対応スクリプトからの機能です。

 

・メッシュパネル(オブジェクトモード)

表情の表示枠を作成します。

各表情の枠にShapeKeyを追加・削除が出来ます。

 

メッシュパネル(エディットモード)

頂点のMMDエッジが設定出来ます。選択中の頂点に有効です。

[ New / 新規 ]

全ての頂点にエッジデータを追加します。

メッシュの頂点エッジが設定されてない場合のみ押せます。

 

[ Enabled ]

選択中の頂点のエッジ倍率を1.0に設定します。

 

[ Disabled ]

選択中の頂点のエッジ倍率を0.0に設定します。

 

・マテリアルパネル

MMD固有の材質パラメータを設定出来ます。

[ Load / 読み込み ]
材質名リスト(.txt)を読み込みます。

 

[ Save / 保存 ]
材質名リスト(.txt)を作成します。


[ Ambient Color / 周囲光の色 ]

MMDマテリアルのAmbient値

 

[ Specular / スペキュラー ]

MMDマテリアルの反射強度

 

チェックを外すと硬さ(specular_hardness)、チェックを入れるとコチラのパワー(power)を反射強度と認識します。

 

MMDでは反射強度0.0が設定可能なのに対し、Blenderでは0.0は扱えなかったのでその為だけに新たに用意しました。


[ Display / 表示 ]

MMDマテリアルの表示フラグ


 [ Edge / 辺 ]

MMDマテリアルのエッジ


[ Texture / テクスチャ ]

MMDマテリアルのトゥーン&スフィア

 

デフォルトにチェックすると既存のtoon1~toon10、外すと独自トゥーンが設定できます。

 

・ボーン表示枠

ボーングループに設定された内容をMMDのボーン表示枠として反映するようにしています。

●拡散色の取扱い

材質にテクスチャが設定されている場合、ディフューズとアルファ値はテクスチャ側のものを優先するようにしました。

Diffuse RGB

Diffuse Alpha

●UVマッピングの取扱い

MMDモデルを読み込むとYの値を「-1」に、出力時にはScale値を反映させてUV座標を算出します。

●更新履歴

2014/05/29

    ・出力時のPMD->PMX再変換処理に文字コードやトゥーンの再設定が抜けてたので追加。

    ・出力時に独自トゥーン画像やスフィア画像も出力先にコピーするよう修正。

    ・PMD出力でテクスチャ名が20文字を越えたらリネームするよう修正。

    ・材質名リストのファイル入出力に文字コードを指定するよう修正。

    ・MMD材質パネルに「材質名リスト保存」ボタンを追加。

    ・PMDとPMXの出力メニューをそれぞれ独立化。

    ・出力時のUV座標算出の計算ミスを修正。

 

2013/12/12

    ・MMD材質パラメータを設定できるようMMD材質パネルを追加。

    ・頂点エッジや表情の種類を設定できるようMMDメッシュパネルを追加。

    ・PMDモデルの材質名リストの取り扱いに対応。

    ・ボーングループを表示枠として認識して入出力するよう設定。

    ・PMXモデルの頂点ウェイト出力でミスがあったので修正。

    ・PMXモデルの入出力で、各データサイズの有効範囲の判定ミスを修正。

    (頂点・面・材質・テクスチャ・骨・モーフ・剛体・ジョイント)


2013/12/02

    ・ポリゴンの影響材質がBlender上の設定と異なる材質で出力される不具合を修正。

 

2013/10/03

    ・PMX出力を追加。

 

2013/07/21

    ・頂点出力の修正。

    ・ShapeKeyに影響が出るため重複頂点削除機能を廃止。

    ・剛体とジョイントの読み込み処理を追加(ボーンには影響を与えない)。

 

2013/07/21

    ・Blender2.68のリリースを確認。RC版の修正処理は不要になり削除。

    ・重複頂点削除機能を再導入。

 

2013/07/18

    ・Blender2.68RCの頂点グループの仕様変更に伴いスクリプトを修正。

 

2012/11/17

    ・バイナリ→int型変換の処理をlong型変換していた不具合を修正。

    ・pmd出力で、65,536以上の面データがあるモデルは出力を中断するよう修正。

    ・pmd出力で、多角形ポリゴンを3角形ポリゴン変換するように対応。

    ・pmd出力で、Armature・MeshオブジェクトのMatrix情報を反映するように修正。

 

2012/10/05

    ・Blender2.64が公式リリース。Blender2.63版スクリプトの動作を確認。

 

2012/06/04

    ・pmdの表情(ShapeKey)出力に対応。

 

2012/06/02

    ・表情読み込みに対応(pmxは頂点モーフのみ)。

    ・Blender2.63版の「重複頂点削除機能」でメモリリークが発生するので機能を削除。

 

2012/05/30

    ・拡大縮小値変動によりゼロボーンが生じる不具合を修正。

 

2012/05/28

    ・出力モデルの頂点ブレンディングの崩壊を修正。

 

2012/05/27

    ・IK読み込み設定を追加。

    ・MMDの法線データを反映するように修正。

    ・Blender2.63版PMXインポーターを登録。

 

2012/05/13

    ・Blender2.63版エクスポーターを登録。

 

2012/05/11

    ・Blender2.63(2.63aにも対応)版登録。

 

2012/02/15

    ・材質の陰影無効化を任意設定できるように修正。

 

2012/01/04

    ・前バージョンがBlender2.61で動作することを確認。

    ・概要ページの内容を修正。

    ・2.6版のスクリプトで膝ボーンが認識されない不具合を修正。

 

2011/10/25
   ・ゼロボーンの場合Head座標に0.000001を足した値をTail座標にするよう修正。
   ・子骨が無ければHead座標に0.000001を足した値をTail座標にするよう修正。
   ・膝ボーンの回転制限追加。
   ・特定ボーンの平行移動・拡大ロック追加

 

2011/10/24
   ・Blender2.59、2.60版登録。
   ・Blender2.54~2.58を更新。
   ・ボーンウェイトが反映されるように修正。

 

2011/06/24
   ・Blender2.58版登録。

 

2011/04/15
    ・RC2版を消してBlender2.57版を登録。2.54~2.56版の開発を打ち切る方針。

 

2011/04/07
    ・Blender2.57 RC2版を登録。

 

2011/01/27
   ・オブジェクトとマテリアルを「1対1」から「1対16」の関係に修正。

 

2011/01/13
    ・pmd_import_254が動作しない不具合を修正。

 

2011/01/09
    ・インポート時にエッジを作成する処理を追加。

 

2011/01/04
    ・2.56用のスクリプトをリリース。

 

2010/12/20
    ・左右が反転することが発覚。左手座標系から右手座標系への修正処理を追加。

 

2010/11/05
    ・Blender2.55での動作を確認。

 

2010/10/31
    ・データを登録。