本章では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 -