アップしていただいたモデルを使って以下のような「キーボードの上下左右キーでモデルを移動する」
テストプログラムを組んでみたのですが、原点に向かってモデルの一部が変形するということはありませんでした
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int ModelHandle ;
VECTOR Position ;
// ウインドウモードで起動
ChangeWindowMode( TRUE );
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1;
// モデル読み込み
ModelHandle = MV1LoadModel( "re_Amelia.mv1" ) ;
// 描画先を裏画面へ変更
SetDrawScreen( DX_SCREEN_BACK ) ;
// カメラの位置と向きを設定
SetCameraPositionAndTarget_UpVecY( VGet( 0.0f, 600.0f, -1000.0f ), VGet( 0.0f, 180.0f, 0.0f ) );
// カメラのクリップ距離を設定
SetCameraNearFar( 10.0f, 1750.0f );
// 座標を初期化
Position = VGet( 0.0f, 0.0f, 0.0f ) ;
// メインループ
while( ProcessMessage() == 0 )
{
// 画面クリア
ClearDrawScreen() ;
// 背景を緑色にする
DrawBox( 0, 0, 640, 480, GetColor( 0,128,0 ), TRUE ) ;
// 上下左右キーで3DモデルのXY座標変更
if( CheckHitKey( KEY_INPUT_LEFT ) ) Position.x -= 8.0f ;
if( CheckHitKey( KEY_INPUT_RIGHT ) ) Position.x += 8.0f ;
if( CheckHitKey( KEY_INPUT_DOWN ) ) Position.y -= 8.0f ;
if( CheckHitKey( KEY_INPUT_UP ) ) Position.y += 8.0f ;
MV1SetPosition( ModelHandle, Position ) ;
// 3Dモデルを描画
MV1DrawModel( ModelHandle ) ;
// 3Dモデルの座標を表示
DrawFormatString( 0, 0, GetColor( 255,255,255 ), "Position:%.1f, %.1f, %.1f",
Position.x, Position.y, Position.z ) ;
// 裏画面の内容を表画面に反映する
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End();
// ソフトの終了
return 0;
}
よろしければ煮浸しさんの環境でも上記のプログラムが正常に動作するか試してみていただけないでしょうか? m(_ _)m