MV1SetFrameUserLocalMatrixを使って左腕を曲げているのですが、
位置がおかしくなっています。
左腕が本来の位置から離れて体の中心にくっついているように見えます。
理由がわからないので、どなたか教えていただけませんでしょうか。
ソースプログラムは次の通りです。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int ModelHandle ;
// DXライブラリの初期化
if( DxLib_Init() < 0 )
{
// エラーが発生したら直ちに終了
return -1 ;
}
// 3Dモデルの読み込み
ModelHandle = MV1LoadModel( "初音ミク.pmd" ) ;
// 描画先を裏画面にする
SetDrawScreen(DX_SCREEN_BACK);
// ESCキーが押されるかウインドウが閉じられるまでループ
while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 )
{
// 画面をクリア
ClearDrawScreen();
MV1SetScale(ModelHandle, VGet(2, 2, 2));
int MaterialNum = MV1GetMaterialNum(ModelHandle);
for(int i=0; i<MaterialNum; i++)
{
// マテリアルの元々の輪郭線の太さを取得
float dotwidth = MV1GetMaterialNum( ModelHandle );
// マテリアルの輪郭線の太さを5分の1にする
MV1SetMaterialOutLineDotWidth( ModelHandle, i, dotwidth / 100.0f );
}
// 画面に映る位置に3Dモデルを移動
MV1SetPosition( ModelHandle, VGet( 320.0f, 225.0f, -350.0f ) ) ;
int RightHandFrameNo;
RightHandFrameNo = MV1SearchFrame(ModelHandle, "左肩");
MV1SetFrameUserLocalMatrix( ModelHandle, RightHandFrameNo, MGetRotZ(PHI_F / 4.0f));
// 3Dモデルの描画
MV1DrawModel( ModelHandle ) ;
// 裏画面の内容を表画面に反映
ScreenFlip();
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}