#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int ModelHandle ;
VECTOR CameraPos, TargetPos, Vect1, Vect2 ;
MATRIX Matrix ;
float CenterY[2];
RECT Rect[2];
ChangeWindowMode ( TRUE ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 )
{
// エラーが発生したら直ちに終了
return -1 ;
}
// モデルの読み込み
ModelHandle = MV1LoadModel( "mmd_batokin_island/batokin_island5.x" ) ;
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK ) ;
TargetPos = VGet( 0.0f, 0.0f, 0.0f );
Vect1 = VGet( 0.0f, 0.0f, 100.0f );
Matrix = MGetIdent();
Rect[0].left = 0;
Rect[0].right = 640;
Rect[0].top = 0;
Rect[0].bottom = 240;
Rect[1].left = 0;
Rect[1].right = 640;
Rect[1].top = 240;
Rect[1].bottom = 480;
CenterY[0] = 120.0f;
CenterY[1] = 360.0f;
// ESCキーが押されるかウインドウが閉じられるまでループ
while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 )
{
// 画面をクリア
ClearDrawScreen() ;
if( CheckHitKey( KEY_INPUT_UP ) == 1 )
{
Matrix = MMult( Matrix, MGetRotX( PHI_F / 180.0f ) );
}
if( CheckHitKey( KEY_INPUT_DOWN ) == 1 )
{
Matrix = MMult( Matrix, MGetRotX( PHI_F / -180.0f ) );
}
Vect2 = VTransform( Vect1, Matrix ) ;
CameraPos = VAdd( TargetPos, Vect2 ) ;
SetCameraPositionAndTarget_UpVecY( CameraPos, TargetPos ) ;
for( int i=0; i<2; i++ )
{
SetDrawArea ( Rect[i].left, Rect[i].top, Rect[i].right, Rect[i].bottom );
SetCameraScreenCenter( 320.0f, CenterY[i] );
// モデルの描画
MV1DrawModel( ModelHandle ) ;
}
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}
上記の方法で描画して回転させると
下の領域で表示しているモデルだけが消える角度があります。
こういったことをしたい場合はどういう風に書くのがよろしいのでしょうか?
モデルは
http://loda.jp/batokin/?id=7
こちらを使わさせて頂きました。