MV1GetFrameLocalWorldMatrix 辺りを使用すると出来るのではないでしょうか?
以下のスレッドのレス(No.3)にある管理人さんのソースが参考になると思います。
> h t t p://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=2674
いちおう、私なりに試してみました。
//-- 以下、テストコード ("DxChara.x"を使用)--//
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int )
{
ChangeWindowMode( TRUE );
SetWindowText( "DxLib:" DXLIB_VERSION_STR );
if ( DxLib_Init( ) == -1 ) return -1;
int white = GetColor( 255, 255, 255 );
int mh = MV1LoadModel( "DxChara.x" );
SetDrawScreen( DX_SCREEN_BACK );
SetCameraPositionAndTarget_UpVecY( VGet( -800.0f, 0.0f, 0.0f ), VGet( 0.0f, 0.0f, 0.0f ) );
MV1SetPosition( mh, VGet( 0.0f, -300.0f, 0.0f ) );
int ai = MV1AttachAnim( mh, 0, -1, FALSE );
float att = MV1GetAttachAnimTotalTime( mh, ai );
float at = 0.0f;
while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) {
ClearDrawScreen( );
at += att / (60.0f * 2);
if ( at >= att ) at = 0.0f;
MV1SetAttachAnimTime( mh, ai, at );
{ // 分かりづらいのでモデルのZ方向への移動をキャンセル
MATRIX mat;
MV1ResetFrameUserLocalMatrix( mh, 2 );
mat = MV1GetFrameLocalMatrix( mh, 2 );
mat.m[3][2] = 0.0f;
MV1SetFrameUserLocalMatrix( mh, 2, mat );
}
MV1DrawModel( mh );
MATRIX mat = MV1GetFrameLocalWorldMatrix( mh, 26 ); // 右手指先
float fx, fy, fz;
GetMatrixXYZRotation( &mat, &fx, &fy, &fz );
DrawLine3D( VGet(0.0f, 0.0f, 0.0f), VTransform( VGet( 0.0f, -100.0f, 0.0f ), MGetRotX( fx )), white );
DrawFormatString( 0, 0, white, "TEST %f %f %f", fx, fy, fz );
ScreenFlip( );
}
DxLib_End( );
return 0;
}