トップページ > 過去ログ > 記事閲覧
3Dアニメーションについて
名前:七篠 日時: 2010/09/10 18:20

使用環境 VisualC++ 2008 Express Edition Microsoft DirectX SDK (February 2010) 3D作成はメタセコイヤ(keynoteプラグインで.x出力)です アニメーションをアタッチで質問があります。 1 基本メッシュデータ(アニメーションデータ無) 2 基本メッシュ+アニメデータ 3 アニメデータ(メッシュは一切入っていない) を作り、1のみ・1+2でアニメーションした状態は表示することができましたが、1+3を行おうとしても1のみ表示されアニメーションしない状態です。 アニメーションデータに一切メッシュ無の場合は無視されるのでしょうか? 必要ということならデータもお渡ししたいのですがどのようにお渡ししたらいいでしょうか? 教えていただければ幸いです

Page: 1 |

Re: 3Dアニメーションについて ( No.1 )
名前:いっち 日時:2010/09/11 15:28

ここのところ管理人さんはご多忙のようですので、それなりに日持ちのするアップローダを利用するか、 不躾なようですが直接メールでデータとテストコードを送付なさるのが宜しいかと思います。
Re: 3Dアニメーションについて ( No.2 )
名前:管理人 日時:2010/09/17 22:24

xファイルでしたら1+3もできる筈です こちらで確認してみたいと思いますので、 よろしければ七篠さんがお試しになられた1と3のファイルをメールで送って頂けないでしょうか?
Re: 3Dアニメーションについて ( No.3 )
名前:七篠 日時:2010/09/18 22:52

管理人さま 本日お昼ごろにメールで送付させていただきました。 よろしくお願いします
Re: 3Dアニメーションについて ( No.4 )
名前:管理人 日時:2010/09/19 01:53

メールを拝見いたしました 添付していただいたファイルを早速試させていただきましたが、 問題なく 1+3 が成功しました テストに使用したサンプルプログラムをこちらに載せますので、よろしければ 七篠さんの環境でも正常に動作するかお試しになってみていただけないでしょうか? #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int ModelHandle, AnimModelHandle, AttachIndex ; float TotalTime, PlayTime ; ChangeWindowMode( TRUE ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) { // エラーが発生したら直ちに終了 return -1 ; } // 3Dモデルの読み込み ModelHandle = MV1LoadModel( 1 のファイル ) ; // アニメーションのみの読み込み AnimModelHandle = MV1LoadModel( 3 のファイル ) ; // 描画先を裏画面に変更(『SetDrawScreen』を使用 ) SetDrawScreen( DX_SCREEN_BACK ) ; // 画面に映る位置に3Dモデルを移動 MV1SetPosition( ModelHandle, VGet( 320.0f, -300.0f, 600.0f ) ) ; // 3Dモデルの0番目のモーションをアタッチする AttachIndex = MV1AttachAnim( ModelHandle, 0, AnimModelHandle, TRUE ) ; // アタッチしたモーションの総再生時間を取得する TotalTime = MV1GetAttachAnimTotalTime( ModelHandle, AttachIndex ) ; // 再生時間の初期化 PlayTime = 0.0f ; // 座標をセット MV1SetPosition( ModelHandle, VGet( 320.0f, 0.0f, 300.0f ) ) ; // 何かキーが押されるかウインドウが閉じられるまでループ while( ProcessMessage() == 0 ) { // 画面をクリア ClearDrawScreen() ; // 再生時間を進める PlayTime += 1.0f ; // 再生時間がモーションの総再生時間に達したら再生時間を0に戻す if( PlayTime >= TotalTime ) { PlayTime = 0.0f ; } // 再生時間をセットする MV1SetAttachAnimTime( ModelHandle, AttachIndex, PlayTime ) ; // 3Dモデルの描画 MV1DrawModel( ModelHandle ) ; // 裏画面の内容を表画面に反映 ScreenFlip() ; } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; } もしこちらでも同じ結果になってしまいましたら、ライブラリを最新バージョンにすると 期待する結果が得られるかもしれません こちらに最新版をアップしてありますので、期待する結果が得られませんでしたら お試しになってみてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
Re: 3Dアニメーションについて ( No.5 )
名前:七篠(解決) 日時:2010/09/19 15:17

大変お騒がせして申し訳ありませんでした。 いただいた情報をもとに修正したところ AttachIndex = MV1AttachAnim( ModelHandle, 0, AnimModelHandle, TRUE ) ; の4番目の引数int NameCheck がFALSEになっていたためだったようです。 この数値をTRUE にしただけで動きだしました。 これで作業上は進むわけですが、当方的には思わぬところで躓いたと思いました。 当方的にはメタセコイヤ上でのオブジェクト階層を変えずにメッシュ部分だけ消去して作成したので、ここでいうフレームが変わったという認識ではありませんでした。 いい勉強になりました。ありがとうございます。

Page: 1 |