ご報告ありがとうございます
簡単なテストを行ってみたのですが、設定は反映されているようでした
私がテストに使用したプログラムをこちらに載せますので、よろしければ
computermaniaさんの環境でも正常に動作するかご確認になってみていただけないでしょうか?
3Dの描画スケールを2倍にした状態で、奥行き方向に回転する DxChar.x の左手
の3D座標を ConvWorldPosToScreenPos でスクリーン座標に変換して、その座標に
緑色の16x16サイズのボックスを描画するというものです
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int ModelHandle ;
int rotX, rotY, rotZ ;
VECTOR WorldPos, ScreenPos ;
ChangeWindowMode( TRUE ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 )
{
// エラーが発生したら直ちに終了
return -1 ;
}
// 3Dモデルの読み込み
ModelHandle = MV1LoadModel( "DxChara.x" ) ;
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK ) ;
// 描画スケールを2倍にする
SetDraw3DScale( 2.0f ) ;
rotZ = 0 ;
while( ProcessMessage() == 0 )
{
ClearDrawScreen() ;
rotZ ++ ;
if( rotZ >= 360 ) rotZ = 0 ;
// 画面に映る位置に3Dモデルを移動
MV1SetPosition( ModelHandle, VGet( 320.0f, 0.0f, 600.0f ) ) ;
// 3DモデルのZ軸を画面左上方向に向ける
MV1SetRotationZYAxis( ModelHandle, VGet( -0.5f, 0.5f, 0.0f ), VGet( 0.5f, 0.5f, 0.0f ), rotZ / 180.0f * 3.1415926535897932384626433832795f ) ;
// 3Dモデルを描画
MV1DrawModel( ModelHandle ) ;
// 左手のワールド座標をスクリーン座標に変換する
WorldPos = MV1GetFramePosition( ModelHandle, MV1SearchFrame( ModelHandle, "WristL" ) ) ;
ScreenPos = ConvWorldPosToScreenPos( WorldPos );
// 取得したスクリーン座標にボックスを描画する
DrawBox( ScreenPos.x - 8, ScreenPos.y - 8, ScreenPos.x + 8, ScreenPos.y + 8, GetColor( 0,255,0 ), TRUE ) ;
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}