2012年07月25日

PMX2.1

元々あまりやる気はありませんでしたが、PMXエディタを作るにあたり、多少の機能追加でも・・・ということで策定した仕様です。

※正直 MMDで使えないPMXを作ることに何の意味があるの?と言われればそれまでですが・・・各互換ツールなどでの対応は、それぞれの作者さんが自由に判断してください。いや別にMMDで対応して貰っても全然構いませんけどね!(笑)


コンセプトとしては、

・PMX2.0 (DirectX9世代) 向けの拡張

・既存項目の読み込み処理は 2.0 と共通(ちょっとした修正で済みます)

・"+0.1程度" の進化

といったあたりになります。


ぶっちゃけ大した変更ではありませんので、既にPMX2.0に対応されている環境であれば、更新自体はさして難しいものでもないかと思われます。


●拡張項目

■QDEF
 頂点のウェイト変形方式に Dual Quaternion(デュアルクォータニオン) 方式を追加 (QDEFと呼称)

デュアルクォータニオン:
 SDEFと同じように、捻りに強いウェイト変形です。SDEFと同じく捻じ切れません。
 SDEFよりも曲げに弱く、BDEFが曲げにより凹むのに対し、QDEFは逆に膨らんでしまいます。

 単純な変形性能はSDEFの方がより直感的なものですが、SDEFは以下の制約があるのに対し、


・2ボーン最大
・ウェイト対象の2ボーンが親子関係必須
・アンカーを想定した予備パラメータが必要

 QDEFはそれらに対して、


・4ボーン最大
・ウェイトボーンの親子関係は不要
・予備パラメータ不要

 以上のようになり、SDEFと比較すると、ほぼその制限がなくなります。QDEFは多少性能に難はありますが、BDEFとの互換性が非常に高く取り扱いが簡単、ということで選択肢を増やしておきました。

※本来はこれら(BDEF/SDEF/QDEF)をさらにブレンドするような仕組みを想定していましたが、DX9世代の実装では極端な速度低下を招く恐れがあるので今回は見送りました。

■Point描画/Line描画
 従来は△面による通常メッシュの描画しかできませんでしたが、材質単位で Point(■) や Line(―) といった形式でも描画可能になりました。

■頂点カラー
 PMX2.0でもエフェクトとの併用でできましたが、2.1では仕様として"追加UV1の値"を色値として描画に利用する、というものが増えました。エディタ上では色計算後の値としてそのまま使っていますが、特にPMXとして取り扱いを定めるものではありません。

■フリップモーフ
 追加モーフ形式1。主にUV表情の運用を楽にするためのモーフです。
 複数の登録モーフを一つのモーフスライダで選択変形できるようになります。
 ローポリモデルとかで"運用面から避けられていた"UVによる表情変化も気軽に使うことができます。
 UV以外でもグループを含む全てのモーフに対応しています。

■インパルスモーフ
 追加モーフ形式2。物理剛体にインパルス(瞬間的な力)を加えます。
 移動及び回転をグローバル/ローカル軸から任意に与える(加速する)ことができます。

 従来は物理演算の結果しか取得できなかった物理剛体を、ちょっとした3Dゲームっぽく動かすこともできるようになります。あと特殊設定で剛体の動きを制限(緩慢に)することもできます。

■Joint種類
 従来は、バネ付6DOF のみしか使えませんでしたが、2.1ではこれに加えて、

 6DOF, P2P(点結合), ConeTwist(円錐回転), Slider(軸移動), Hinge(軸回転)

 以上の各Jointが使えるようになりました(挙動としては標準Jointだけでも十分ですが)
 Hinge などではモーター挙動を入れることもできるので、常に回転し続けるJointを作成することも可能です。

※モーターはON/OFFや強さの指定が外から変更できないので、自由度はインパルスモーフの方が高くなります。

■SoftBody
 新規追加要素。剛体では表現の難しい"形自体が変形する物理演算"です。
 ぽにょぽにょ とか ひらひら とか そんな感じの変形ができるようになります(一応)

 とりあえず超重いです。あと色々運用上の問題も多いので、あまり期待はしない方がよいかもしれません。
 SoftBodyは設定が難解になるのもよく挙げられる問題なので、できるだけ簡単に使えるような設計にしておきました。


以上、PMX2.1 の拡張項目でした。実装についての詳細はエディタ付属の"PMX仕様"を確認してください。
【関連する記事】
posted by - at 00:56| PMX | 更新情報をチェックする