本章では3Dプログラムについて学んでいきましょう。
まず、この章で使用する素材を含んだプロジェクト一式を ダウンロード(2013/02/23更新) して下さい。
使用するモデルは「Lat式ミク」と「バトーキン島」です。(両方とも改変・再配布が許可されているモデルです)

上のように解凍してください。
ソースファイルはsrcフォルダに追加していきます。
既に追加されているmain.cppには以下のように記述してあります。
/***** main.cpp *****/
#include <DxLib.h>
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );
//3Dモデルの読み込み
int ModelHandle = MV1LoadModel( "dat/Lat式ミク/Lat式ミクVer2.3_Normal.pmd" ) ;
//奥行0.1~1000までをカメラの描画範囲とする
SetCameraNearFar( 0.1f, 1000.0f ) ;
//(0,10,-20)の視点から(0,10,0)のターゲットを見る角度にカメラを設置
SetCameraPositionAndTarget_UpVecY( VGet( 0, 10, -20 ), VGet( 0.0f, 10.0f, 0.0f ) ) ;
while(!ScreenFlip()&&!ProcessMessage()&&!ClearDrawScreen()){
// 3Dモデルの描画
MV1DrawModel( ModelHandle ) ;
}
DxLib_End();
return 0;
}
まず「MV1LoadModel」でモデルをロードします。画像と同様ハンドルとして以降はこのint型ハンドル番号を利用してモデルを扱います。
続いてカメラの設定をします。「SetCameraNearFar」でどこからどこまでを描画領域とするかを設定します。正直この値は適当です。
ただし、引数はfloatなので、floatの有効桁数以上の範囲で指定しないでください。
たとえば、floatの有効桁数は6~7桁ですから
SetCameraNearFar(0.1, 1000000000);
なんて設定すると正常動作しなくなります。
「SetCameraPositionAndTarget_UpVecY」でどこからどこを見るかを設定します。
第一引数はカメラの場所、第二引数は見るターゲットとなる場所です。ベクトル形式で指定するのでVGet関数を利用してベクトルを取得しています。
最後に「MV1DrawModel」でモデルを描画します。
結果以下のように描画されたら成功です。
実行結果 ※スペックが低いと実行までに少し時間がかかる場合があります。

- Remical Soft -