C++ DXライブラリ ゲーム開発

DXライブラリで3Dモデルを表示するまで【C++/DXライブラリ】

 


 

まとめ

  • DXライブラリで描画するためのモデルデータの作成手順を記載
  • DXライブラリでの描画手順を記載

はじめに

アイキャッチは詐欺です.
こんなに立派な車のモデルの描画はしません.

3Dモデルを用意する

まずは,
DXライブラリで扱える形式の 3D モデルを用意する必要がある.

3D モデルをロードする関数,
MV1LoadModel() で読み込むことができる形式は以下の通り.

  • x
  • mqo
  • mv1
  • pmd( + vmd )
  • pmx( + vmd )

今回は,
fbx で出力 → mv1 に変換したものを使用する.

Blender で fbx をエクスポート

使用した bLender のバージョンは 2.81a.

blenderを開いたら,
最初からボックスが配置してある.

f:id:gothlab:20210802225344j:plain

今回は,そのボックスをエクスポートする.

ファイル > エクスポート > fbx
を選択.

f:id:gothlab:20210802224555j:plain

オプションは,

  • オブジェクトタイプ > メッシュのみ選択
  • (必要なら)拡大縮小 を 0.01に

で,後はデフォルトで良い.

box.fbx と名前をつけてエクスポートする.

DxLibModelViewer で fbx を mv1 に変換

Dxライブラリ付属のモデルビューア,
DxLibModelViewer で mv1 に変換する.

DxLib を解凍したフォルダの

  • DXLib\DxLib_VC\Tool\DxLibModelViewer\DxLibModelViewer_64bit.exe

がそれに当たる.

起動して,
先程出力した fbx をドラッグ & ドロップ.
でボックスを読み込む.
f:id:gothlab:20210802225647j:plain

ファイル > 名前を付けてメッシュのみ保存
で,box.mv1 と名前を付けて保存する.

DXライブラリでロードして描画する

box.mv1 を読み込んで描画するサンプルコードは以下.
※vcxproj があるディレクトリに box.mv1 を配置してある前提.

#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int ModelHandle ;
ChangeWindowMode( true );
// DXライブラリの初期化
if( DxLib_Init() < 0 )
{
// エラーが発生したら直ちに終了
return -1 ;
}
// 3Dモデルの読み込み
ModelHandle = MV1LoadModel( "box.mv1" ) ;
SetCameraPositionAndTarget_UpVecY( VGet(0, 0, -1000), VGet(0, 0, 0) );
// 画面に映る位置に3Dモデルを移動
MV1SetPosition( ModelHandle, VGet( 0.0f, 0.0f, 0.0f ) ) ;
// 3Dモデルの描画
MV1DrawModel( ModelHandle ) ;
// モデルハンドルの削除
MV1DeleteModel( ModelHandle ) ;
// キーの入力待ち
WaitKey() ;
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}

エクスポート時の拡大縮小の設定次第で,
カメラの位置とかは要調整かも.

f:id:gothlab:20210802230951j:plain

以上.

  • この記事を書いた人

GOTH

鹿児島県出身,吉祥寺在住の27歳.職業はゲーム会社でプログラマー.趣味はバイク,車,キャンプ,ガジェット,読書,そしてゲーム開発. サイトのテーマはプログラミングとガジェットでライフハック.たまに趣味に関する雑感や記録を残していく備忘録.ツイッターもやってます.
自己紹介
お問い合わせ

-C++, DXライブラリ, ゲーム開発