05/06/03 17:05:56
EZアプリ(BREW) 2.1 SDKとDoJa3.5(SDKは4.0使ってますけど3.x系APIを使ってます)の両方で意図しない動作が発生して困っています。
デザイナから渡された.mbac/.mtraを表示しているのですが、
最終フレーム付近でモーションが更新されません。
モーションデータの最終フレームの一つ前のフレームから最終フレームまでの間、一切モーションが更新されないのです。
// Brew
int maxFrame = IMICRO3D_ActTable_getNumFrames(m_pMicro3D, &m_Actions[0], 0);
currentFrame += 65536 * timeGap * 15 / 1000;
if (currentFrame > maxFrame)
{
currentFrame -= maxFrame;
}
IMICRO3D_Figure_setPosture(m_pMicro3D, &m_Figures[0], &m_Actions[0], 0, currentFrame);
// Java
int maxFrame = m_Actions[0].getMaxFrame(0);
if (currentFrame > maxFrame)
{
currentFrame -= maxFrame;
}
m_Figures[i].setPosture(m_Actions[i], 0, currentFrame);
ほぼサンプル通りに書きましたがBrewtoJavaで同じ症状が出ます。
キーフレームが10個ある場合でいうと(655360 - 65536)から(655360)までの間に常に(655360 - 65536)のモーションのままになってしまうという感じです。
HIのサイトのVアプリ用サンプルモデル(URLリンク(www.mascotcapsule.com)から)も表示してみましたが、
この状態でも違和感無く再生できるようなデータにしてあるようにも見えます。
同じような症状に困っている方は居ますでしょうか?
またその場合の対処法についても教えてください。
(私が考える限りだとモーション末尾にダミーのキーフレームを追加し、getMaxFrame()の戻り値を-65536して扱えば良さそうにも思えますが、デザイナが「あんたのバグだ!」と言ってデータを作ってくれないので確認できていません。)