トップページ > 記事閲覧
MV1SetAttachAnimBlendRateの不具合?
名前:sarrus3x3 日時: 2016/07/31 13:38

管理人殿、 いつもお世話になっております。 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なので、上記バグは修正されている認識です。 以上、よろしくお願い致します。
メンテ

Page: 1 |

Re: MV1SetAttachAnimBlendRateの不具合? ( No.1 )
名前:管理人 日時:2016/08/01 02:54

> なお、2014年の5月頃にDrile様に報告されていたものを同じ事象のように見えます。 アップしていただいたモーションを使用して2014年5月の修正が行われた直後のバージョンを使用して 試してみたところ正常な描画結果は得られませんでしたので、2014年5月に対応した事象とは異なる問題と考えられます ビューアーで確認したところ、モーション4は見た目こそ正面を向き続けていますが、 データ的にはかなり強い回転が掛かっているようで、モーション1との回転値の差異が 大きくなり過ぎて2014年5月に施した補正処理ではカバーしきれなくなっているようです まだ調べきれていませんが、なんとなくライブラリ側のコードを変更するだけでは解決できそうにない気がします… もう少し調べてみようと思いますが、モーションの方で回転の掛かり方を弱めるといった対処を行うのは 難しいでしょうか?
メンテ
Re: MV1SetAttachAnimBlendRateの不具合? ( No.2 )
名前:sarrus3x3 日時:2016/08/03 19:25

管理人殿、 早速のご回答ありがとうございます。 > モーションの方で回転の掛かり方を弱めるといった対処を行うのは > 難しいでしょうか? モーション4の最後に正常な別のモーションのポーズデータを持ってきて 挿入することで、特定のアニメーションブレンドを破綻させずに見せることは できそうなのですが、 モーションの途中で他のモーションに切り替えたいときに おかしな見え方をしてしまうので、問題のモーション全体を修正する 必要があると考えています。 そこで、 > モーション4は見た目こそ正面を向き続けていますが、 > データ的にはかなり強い回転が掛かっているよう とありますが、具体的にどのフレームがどのように 異常値になっているのか 確認する方法をご教授いただけますでしょうか。 お手数おかけして申し訳ありませんが、 よろしくお願い致します。
メンテ
Re: MV1SetAttachAnimBlendRateの不具合? ( No.3 )
名前:管理人 日時:2016/08/07 04:39

> とありますが、具体的にどのフレームがどのように > 異常値になっているのか > 確認する方法をご教授いただけますでしょうか。 今回の場合は私はライブラリのプログラムを変更して試している過程で大きな回転が掛かっている ことに気がついたのですが、DxLibModelViewer.exe でもある程度確認することができます 例えば 蛻晞浹繝溘け004.vmd の場合は、まず DxLibModelViewer.exe でアニメーションを再生する 状態にした後、「フレーム一覧」から「1:センター」のフレームをクリック、次に「アニメーション要素」から 「No:1 Name:回転 KeyNum:29 TimeType:KEY」をクリックすると、「アニメーション情報」に回転値を 折れ線グラフ化したものが表示されます 水色の線と赤の線が後半で大きく変化しているのですが、こちらは横方向にほぼ1回転していることを表しています データ的には「センター」は一回転しつつも、「センター」以下の「上半身」や「下半身」などは 逆方向の回転をすることで体は概ね正面の向きを保っているという感じです 試してみないとわかりませんが、こちらの「センター」の一回転がなくなれば本件の現象は 無くなるのではないかと思います…
メンテ
Re: MV1SetAttachAnimBlendRateの不具合? ( No.4 )
名前:sarrus3x3(解決) 日時:2016/08/10 19:36

管理人殿、 ご回答ありがとうございます。 > データ的には「センター」は一回転しつつも、「センター」以下の「上半身」や「下半身」などは > 逆方向の回転をすることで体は概ね正面の向きを保っているという感じです 確認しました。 見かけ上は回転してないように見えても、 個々のフレームは回転がかかていたということですね。 ビューアでみる限りだと正常に見えるので気が付きませんでした。 見えない回転を解消したところ、 ブレンド中にモデルが歪む事象もでなくなりました。 とても勉強になりました。ありがとうございます。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存