管理人殿、
いつもお世話になっております。
2つのモーションをMV1SetAttachAnimBlendRateでブレンドしたところ、
3Dモデルが歪んでしまう事象が発生しております。
以下のスクリーンショットのように、
モーションの終了時刻付近で他のモーションと合成すると、
ブレンド率が0.5付近で3Dモデルが歪んでしまいます。
ほぼモーション1の状態
ttp://livedoor.blogimg.jp/sarrus3x3/imgs/c/9/c9d1c90c.jpg
モーション4の合成率47.8%
ttp://livedoor.blogimg.jp/sarrus3x3/imgs/9/6/96659fe4.jpg
モーション4の合成率50.8%
ttp://livedoor.blogimg.jp/sarrus3x3/imgs/a/a/aad3005a.jpg
ほぼモーション4の状態
ttp://livedoor.blogimg.jp/sarrus3x3/imgs/b/a/bae73084.jpg
以下、事象を発生させたコードです。
------------------------------------------
/* 省略 */
int ModelHandle = MV1LoadModel( "..\\mmd_model\\初音ミク.pmd" );
int AttachIndexRunning = MV1AttachAnim( ModelHandle, 0, -1, FALSE ) ;
int AttachIndexTurning = MV1AttachAnim( ModelHandle, 4, -1, FALSE ) ; // ★こちらが問題のモーション
while(!ScreenFlip() && !ProcessMessage() && !ClearDrawScreen()){
/* 省略 */
// ################## アニメーションの再生 #######################
static float BRate=0;
BRate += 0.002;
float OtherBRate = 1.0 - BRate;
// ブレンド率を設定
MV1SetAttachAnimBlendRate( ModelHandle, AttachIndexRunning, BRate ) ;
// 再生時間をセットする
MV1SetAttachAnimTime( ModelHandle, AttachIndexRunning, 0 ) ;
// ブレンド率を設定
MV1SetAttachAnimBlendRate( ModelHandle, AttachIndexTurning, OtherBRate ) ;
// 再生時間をセットする
MV1SetAttachAnimTime( ModelHandle, AttachIndexTurning, PlayTime ) ;
MV1DrawModel( ModelHandle );
/* 省略 */
}
------------------------------------------
ここでモーション1を他のモーションに差し替えても、
事象が再現するので、原因はモーション4の方にあると考えています。
なお、このモーション4以外では事象は発生しておりません。
使用しているモーションに原因があるとすると難しいとおもいますが
解析していただくことはできますでしょうか。
モーションデータを以下にアップロードします。
モーション4(ブレンドするとモデルが歪むモーション)
ttp://blog.livedoor.jp/sarrus3x3/%E5%88%9D%E9%9F%B3%E3%83%9F%E3%82%AF004.vmd
モーション1
ttp://blog.livedoor.jp/sarrus3x3/%E5%88%9D%E9%9F%B3%E3%83%9F%E3%82%AF001.vmd
なお、2014年の5月頃にDrile様に報告されていたものを同じ事象のように見えます。
ttp://dxlib.o.oo7.jp/cgi/patiobbs/patio.cgi?mode=view&no=3303
ただ、私が使用しているDXライブラリのバージョンは、
3.16なので、上記バグは修正されている認識です。
以上、よろしくお願い致します。