スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

3Dキャラクターが動・・・かなかった。

昨日から、アニメーションの情報を持ったXファイルを表示しようと、
他のサイトを参考にしながら 仮想関数をオーバーライドしてみたのですが、

上手く行きませんでした。

ついでに、オーバーライドした仮想関数。( 4つ
----------------------------------------------------------------------------
STDMETHOD(CreateFrame)(THIS_ LPCSTR Name, LPD3DXFRAME *ppNewFrame);
STDMETHOD(CreateMeshContainer)(THIS_
LPCSTR Name,
CONST D3DXMESHDATA *pMeshData,
CONST D3DXMATERIAL *pMaterials,
CONST D3DXEFFECTINSTANCE *pEffectInstances,
DWORD NumMaterials,
CONST DWORD *pAdjacency,
LPD3DXSKININFO pSkinInfo,
LPD3DXMESHCONTAINER *ppNewMeshContainer);

STDMETHOD(DestroyFrame)(THIS_ LPD3DXFRAME pFrameToFree);
STDMETHOD(DestroyMeshContainer)(THIS_ LPD3DXMESHCONTAINER pMeshContainerBase);

----------------------------------------------------------------------------

"STDMETHOD"って何?と思うかもしれませんが、
どうやら下記のように変換されるようです。
------------------------------------------------------------------------
STDMETHOD(CreateFrame)(THIS_ LPCSTR Name, LPD3DXFRAME *ppNewFrame);

HRESULT CAllocateHierarchy::CreateFrame( LPCSTR Name, LPD3DXFRAME *ppNewFrame )
------------------------------------------------------------------------
(HRESULTを返す関数、という風に変換。"THIS_" は消えてなくなる


で、どういう風に上手く行かないかというと、
実行は出来るのですが、表示されない。
(色々とステップ実行などやって調べてみてはいるのですが)

うーん 悔しい。
あまりにも悔しいので、本を注文しました。
(DirectXにおける、アニメーションなどの解説もある本)

それでも上手く行かなかったら、
自分で3Dモデルの保存形式を定義してやろうか
とか思ってます。
Xファイルではない3Dモデルの記述形式 と、 それを読み込むクラス周辺すべて

実際、Xファイルは拡張子を".txt"にしたら中身が見れるんですよね。VRMLと同じで。
で、その情報を関数で読み込み・表示を行っているので、それと同じように
・アニメーションのタイプ(走る、飛ぶ、座る)
・それぞれのアニメーションで動かす頂点 及び どのように動かすかの情報

などを読み込んで実行する関数を作れば実現出来そうな気がしなくもないのです。

元々Xファイルという形式は存在せず、昔は色んな形式があったらしいですし。
まぁ、本の方が8月16日に届くらしいので、それから考えます。
(3Dモデルが表示されない原因の究明も平行)

【追記】
テクスチャ情報を持ったXファイルの表示は上手く行きました!(`・ω・´)
ロボ
メタセコイアのサンプル"robo"

スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメント
コメントの投稿
管理者にだけ表示を許可する



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。