Xファイル(*.x)の読み込みと表示をするプログラムを作ってみました。
メッシュを読み込む!!(2) 〜Xファイル〜★ 1.はじめに…
Xファイル(*.x)の読み込みと表示をするプログラムを作ってみました。
★ 2.ファイルフォーマット
今回はDirectXやXNA GameStudioなどで使われているXファイル(*.x)の読み込みを作ってみました。
まず,ファイルフォーマットですが,MSDNに詳しい説明が載っているで http://msdn.microsoft.com/ja-jp/library/cc372023.aspx を参照してください。ファイルフォーマットの説明をすると長くなってしまうので今回も手を抜いて省略しちゃいます。スイマセン。 ★ 3.使い方
Xファイルには大きく分けて2つのフォーマットがあります。1つ目はバイナリフォーマット,2つ目はテキストフォーマットです。
今回のプログラムではテキストフォーマットのみ対応しています。またフレームの構造などは読み込んでないのでスキニングとかやりたい人は自分で,修正を加えてみてください。 ※[2011/01/12 追記] Xファイルを読み込んでスキニングを行うサンプルプログラムを書きました。こちらからダウンロードできます。 今回読み込みプログラムの作成にあたり,『3D格闘ゲームプログラミング(著者:松浦健一郎/司ゆき 出版社:SoftBank Creative)』を参考にさせていただきました。 モデルファイルの読み込みをXLoader.h, XLoader.cppファイルにまとめました。自分のプログラムで利用したいときはこの2つのファイルをプロジェクトに追加してください。 使うときはまず,XLoader.hをインクルードします。 00020: // 00021: // include 00022: // 00023: #include <iostream> 00024: #include "XLoader.h" 00025: #include "Mouse.h" 00026: using namespace std;つぎに,グローバルなどでXModel型の変数を定義しておきます。 00046: XModel model;変数を定義したら,初期化処理などを行う関数などで,モデルファイルのロードを行います。 00121: // モデルファイルの読み込み 00122: model.Load("Models/dosei.x");一応このLoad()関数を呼び出すと,関数内部でComputeBoundingSphere()関数を呼び出し,XModelクラス内に定義されているXBoundingSphere型の変数sphereにバウンディングスフィアの半径と中心座標が格納されるようになっています。 描画処理はRender()関数を呼び出して行います。 00239: //-------------------------------------------------------------------------------------------------- 00240: // Name : Render3D() 00241: // Desc : 3次元シーンの描画 00242: //-------------------------------------------------------------------------------------------------- 00243: void Render3D() 00244: { 00245: // モデルの描画 00246: float scale = 1.0f/model.sphere.radius; // 拡大係数 00247: model.Render(scale); // 描画 00248: }一応使い方はこんな感じです。 ★ Download
本ソースコードおよびプログラムを使用したことによる如何なる損害も製作者は責任を負いません。
本ソースコードおよびプログラムは自己責任でご使用ください。 プログラムの作成にはMicrosoft Visual Studio 2005 SP1 Professionalを用いています。 |