MV1GetFrameLocalMatrix の戻り値は MATRIX構造体なので特に
XYZ という要素は無いのですが、konさんの仰られるXYZとは
具体的には何を指されているのでしょうか?
あと、以下のようなプログラムで MV1GetFrameLocalMatrix の値が
全て0になってしまっているかを確認してみましたが、全て0に
なってしまうということはありませんでした
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int ModelHandle, AttachIndex ;
float TotalTime, PlayTime ;
ChangeWindowMode( TRUE ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 )
{
// エラーが発生したら直ちに終了
return -1 ;
}
// 3Dモデルの読み込み
ModelHandle = MV1LoadModel( "DxChara.x" ) ;
// 描画先を裏画面に変更
SetDrawScreen( DX_SCREEN_BACK ) ;
// 画面に映る位置に3Dモデルを移動
MV1SetPosition( ModelHandle, VGet( 320.0f, -300.0f, 600.0f ) ) ;
// 3Dモデルの0番目のアニメーションをアタッチする
AttachIndex = MV1AttachAnim( ModelHandle, 0, -1, FALSE ) ;
// アタッチしたアニメーションの総再生時間を取得する
TotalTime = MV1GetAttachAnimTotalTime( ModelHandle, AttachIndex ) ;
// 再生時間の初期化
PlayTime = 0.0f ;
// 何かキーが押されるかウインドウが閉じられるまでループ
while( ProcessMessage() == 0 && CheckHitKeyAll() == 0 )
{
// 画面をクリア
ClearDrawScreen() ;
// 再生時間を進める
PlayTime += 100.0f ;
// 再生時間がアニメーションの総再生時間に達したら再生時間を0に戻す
if( PlayTime >= TotalTime )
{
PlayTime = 0.0f ;
}
// 再生時間をセットする
MV1SetAttachAnimTime( ModelHandle, AttachIndex, PlayTime ) ;
// 3Dモデルの描画
MV1DrawModel( ModelHandle ) ;
MATRIX mat = MV1GetFrameLocalMatrix( ModelHandle, 5 ) ;
DrawFormatString( 0, 16 * 0, GetColor( 255,255,255 ), "[0][0]:%f [0][1]:%f [0][2]:%f [0][3]:%f", mat.m[0][0], mat.m[0][1], mat.m[0][2], mat.m[0][3] ) ;
DrawFormatString( 0, 16 * 1, GetColor( 255,255,255 ), "[1][0]:%f [1][1]:%f [1][2]:%f [1][3]:%f", mat.m[1][0], mat.m[1][1], mat.m[1][2], mat.m[1][3] ) ;
DrawFormatString( 0, 16 * 2, GetColor( 255,255,255 ), "[2][0]:%f [2][1]:%f [2][2]:%f [2][3]:%f", mat.m[2][0], mat.m[2][1], mat.m[2][2], mat.m[2][3] ) ;
DrawFormatString( 0, 16 * 3, GetColor( 255,255,255 ), "[3][0]:%f [3][1]:%f [3][2]:%f [3][3]:%f", mat.m[3][0], mat.m[3][1], mat.m[3][2], mat.m[3][3] ) ;
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}
よろしければ konさんの環境でも正常な結果が得られるかお試しに
なってみてください
( 使用しているモデル DxChara.x はDXライブラリのパッケージの
「サンプルプログラム実行用フォルダ」の中にあります )