メタセコ用MikuMikuDanceモデル形式(PMDファイル)インポータ「pmdimpMQ」

※※※ 注意 ※※※
現在のpmdimpMQはテスト版です。動作の保証できないのをご了承ください。



○はじめに
pmdimpMQとはMikuMikuDanceモデル形式(PMD/PMXファイル)のインポータです。
現在のバージョンはまだテスト版で安定した動作はえられません。
※また現在のバージョンではPMXはオブジェクトとマテリアルのみの読み込みに対応してます


○ファイルの説明
pmdimpMQ.dll pmdimpMQ本体のdll
helpフォルダ pmdimpMQのヘルプファイルです。

○インストール、アンインストール
メタセコをイントールしたフォルダのplugins\ImportへpmdimpMQ.dllをコピーしてください。
アンインストールはpmdimpMQ.dllを削除してください。


○アンインストール
Plugins\ImporterフォルダからpmdimpMQ.dllを削除してください


○使用方法
ファイル→開くからファイルの形式「MikuMikuDance Model(*.pmd)」を選択し任意のpmdファイルを読み込んでください。

○仕様

現在、PMDファイル内の読み込める情報は次のようになっています。
・モデル名→オブジェクト名に反映されます
・コメント→捨てられます
・ポリゴンデータ→mikotoのbdefデータとして扱います。(エッジフラグは捨てられます)
・ボーンデータ→mikotoのboneデータとして扱います。マテリアルにボーン用のマテリアルが割り当てられます。(IK情報などは捨てられます)
・スキンデータ→mikotoのmorphデータとして扱います(非表示にされています)
・マテリアルデータ→マテリアルに適用されます。MmdMtlxxxという名前が振られます。
・IKデータ→捨てられます
・ボーン表示データ→捨てられます
・スキン表示データ→捨てられます
・英語対応データ→捨てられます
・その他のパラメータは全て無視されます

※頂点ウェイトは次の2つの方法でメタセコに読み込まれます。
・頂点カラーに頂点ウェイトを埋め込む方法
・あるボーン影響を受ける頂点を囲むアンカーを作成する方法。
どちらもPMDファイルの頂点ウェイトを完璧に再現することはできません。

頂点カラーに頂点ウェイトを埋め込む場合は次のようになります。
頂点カラーのR,G,Bにそれぞれボーン1,ボーン2、ウェイトが割りあてられます。
ボーン1、ボーン2はボーン用マテリアルのインデックス値、ウェイトはそのまま0-100の値が入っています。
ただし現状では再利用する方法はありません。

アンカーを作成する場合は次のようになります。
そのボーンに影響を受ける頂点を列挙し共分散行列から求めた最小のバウンディングボックスを作成しそれをアンカーとします。
ただしアンカーはただのボックスなので関係しない余分な頂点を含めてしまいます。
その場合は手作業でアンカーの頂点を編集して余計な頂点を含めないようにしてください。
アンカーは影響を受けるボーン一つに対して一つのオブジェクトが作成されます。
作成されたオブジェクトはデフォルトでは非表示になります。

○オプション

読み込み時のオプションを設定します
スケール スケールを指定します。
10.0だいたい丁度いいサイズになります
モーフをelem:として取り込む モーフをelem:として取り込みます
チェックがない場合はmorph:になります
オブジェクトを登録する 読み込み時オブジェクトとマテリアルを登録します。
ボーンのみ取り込みたい場合などはチェックをはずしてください
ボーンを三角形として登録 ボーンを三角形として登録します
ボーンをローカルとして登録 ボーンをローカルとして登録します
アンカーを登録する アンカーを登録します。
※登録したアンカーは頂点ウェイトから逆算したバウンディングボックスになります。
関連する頂点はすべて含みますが、単純なバウンディングボックスなので正しいアンカーではありません。
実際に使用には編集が必要になります
モーフを登録する モーフターゲットを登録します
頂点カラーを登録する 頂点ウェイトを頂点カラーに登録します
オブジェクトを表示する 取り込んだオブジェクトを表示状態にします。
チェックをはずした場合非表示状態になります
ボーンを表示する 取り込んだボーンを表示状態にします。
チェックをはずした場合非表示状態になります
アンカーを表示する 取り込んだアンカーを表示状態にします。
チェックをはずした場合非表示状態になります
モーフを表示する 取り込んだモーフを表示状態にします。
チェックをはずした場合非表示状態になります
デバッグログを出力する ※デバッグ用です。チェックをしないでください
CDEFを使用する ※デバッグ用です。チェックをしないでください
※削除されました
localikを使用する localik用のデータとして読み込みます


○仕様

メタセコ用のpmd形式(MikuMikuDanceモデル形式)のインポータ(テスト版)を作ってみました。
まだ製作途中のものなので動作の保障はしません。
テスト版というものが理解できる人のみダウンロードしてください。
また製作中のものなのであまり2chなどの大きな掲示板などに告知しないようお願いします。
たいしたものではありませんしね…

使用方法などは付属のreadme.txtをご覧ください。
読み込んだ状態のオブジェクトとマテリアルのダイアログです。
なるべくmikotoフォーマットに沿うように名前付けをしています
ボーンです。
mikotoフォーマットと同じルールで読み込んでます。
ボーン一つにつきマテリアルが作成され、ボーンの三角形のマテリアルとして適用しています。
モーフ(mmdで言うスキン)です。
頂点位置のみ変えた別オブジェクトとして作成されます。
頂点のインデックスなどはベースオブジェクトと同じものになります。
これもmikotoフォーマットに沿ったもの…
にしたつもりですが持っているmikotoがモーフに対応してないため名前付けが間違っている可能性が高いです。
間違っていたら指摘してくれるとうれしいです。
アンカーです。
MMD言う頂点ウェイトをバウンディングボックスで囲ったものです。
ただしこのアンカーはそのボーンに関連する頂点に対しての最小のバウンディングボックスでしかないので、
本来関係ないボーンに関連する頂点も含んでしまっています。
簡単にいうとそのままでは使えないアンカーということになります。
アンカーとして使用するには関係ない頂点を含めないようにアンカーの形状を編集する必要があります。
(ただし関連する頂点は全て含んでいます)
頂点ウェイトを頂点カラーに割り当てたものです。
(画像は髪の毛の頂点カラーのみを有効にしたものです)
頂点ウェイトはアンカーで再現されていますが、それとは別に正確な頂点ウェイトの値が頂点カラーに割り当てられています。
頂点カラーのR,G,Bそれぞれにボーン1のマテリアルのIndex、ボーン2のマテリアルのIndex、頂点ウェイト値(0-100)が割り当てられています。
ただし現状ではこの値を出力する方法ないのを注意してください。
また当たり前ですがマテリアルを追加してり削除するとボーンのマテリアルのIndexの対応がおかしくなることに注意してください。
頂点カラーを見るにはマテリアルの頂点カラーのプロパティを有効にしてください。
デフォルトでは頂点カラーは無効になっています。



○最後に
morphのmikoto方式の記述が正しいのか分かりません。分かる方指摘していただけるとありがたいです。

○履歴
日付 内容
2013/10/15 localik用に対応
2013/09/21 pmxのインポートに仮対応。
オブジェクトとマテリアルのみ対応。
ボーン、頂点ウェイトなどには対応していません。
2009/06/30 ボーンのリンクがおかしいのを修正
2009/06/27 最初のバージョン


○使用条件・配布・著作権について
pmdimpMQの著作権はsio29にあります。

インターネットなどでの不特定多数への2次配布は禁止しています。
pmdimpMQを使用して損害などがでた場合にも著作者は一切の責を負いません。必ず使用者の責任の元で使用してください。

○おくずけ
sio29
http://sio29.sakura.ne.jp/