[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

ホームへ戻る

 3d.01 3Dモデルを表示してみよう

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