はじめして、MATRIX寄りの質問になりますが例えば
モデル(A)がモデルBの方向を向く事は比較的簡単に出来るのですが
MV1SetScaleで指定したスケールが反映されず行き詰ってしまいした。
予想ではLookAtで作成したビューMATRIXにモデルのサイズを
CreateScalingMatrixなどで作りMMultで
掛け合わせると反映されるものと思っていましたが駄目でした
そこで何か良い方法はないかと思い質問してみました
簡易的なサンプルです
#include "dxlib.h"
int WINAPI WinMain (HINSTANCE, HINSTANCE, LPTSTR, int) {
ChangeWindowMode(TRUE );
if (DxLib_Init()<0) return -1;
SetDrawScreen(DX_SCREEN_BACK);
int ModelA=MV1LoadModel( "DxChara.x" );
MV1SetPosition(ModelA,VGet(0.0f,-1000.0f,1500.0f));
MV1SetScale( ModelA, VGet(3.5f,3.5f,3.5f) ) ;
int ModelB=MV1LoadModel( "DxChara.x" );
MV1SetPosition(ModelB,VGet(800.0f,-1000.0f,1500.0f));
MV1SetScale( ModelB, VGet(3.5f,3.5f,3.5f) ) ;
while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) {
ClearDrawScreen() ;
MATRIX hMATRIX;
VECTOR vec_from=MV1GetPosition(ModelA);//ビューの位置
VECTOR vec_lookat=MV1GetPosition(ModelB);//ビューの注視点
VECTOR vec_up=VGet(0, 1, 0);// ビューの上方向
CreateLookAtMatrixRH(&hMATRIX,&vec_from, &vec_lookat, &vec_up);//ビュー行列の作成
hMATRIX=MInverse(hMATRIX) ;
MV1SetMatrix( ModelA,hMATRIX) ;
MV1DrawModel(ModelA);
MV1DrawModel(ModelB);
ScreenFlip() ;
}
DxLib_End();
return 0;
}