スポンサーサイト

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

スキンメッシュアニメーションクラスの作成状況 (順調!)

現在、スキンメッシュアニメーション再生クラスの作成を行っているのですが、
順調に進んでおります。 (`・ω・´)

とりあえず、アニメーション無しで表示する事に成功しました。
(現段階では、"AnimationSet"というキーワードを読むと 読み込み終了するようにしてある)

で、実際に表示してみた際の画像です。

【参考画像】
Skin_System3.jpg
細長い棒状のモデルに、猫らしき画像を貼り付けて表示してみた。


で、前回スキンメッシュアニメーションを実装した時との相違点。
----------------------------------------------------------------
【1】描画はDrawIndexedPrimitive関数を利用。
(前回は、DrawPrimitiveUp関数)

【2】複数のストリームを使って描画。
(前回は、ストリーム1つ。)

【3】画像などを切り替えられる仕様に変更。
(前回は、読み込んで表示するだけ。 柔軟性も何も無い。)
----------------------------------------------------------------

【1】にした理由は、
DrawIndexedPrimitive関数の方が読み込みが楽
だからです。

DrawPrimitiveUpだと、
インデックスを元に頂点座標の配列をゴチャゴチャと入れ替える処理
とかが必要になってくるんですよ。

int index[6] = {1,0,2, 2,1,0};
D3DXVECTOR3 pos[3] = { D3DXVECTOR3(0.0f, 1.0f, 0.0f),
D3DXVECTOR3(0.0f, 1.0f, 0.0f),
D3DXVECTOR3(0.0f, 1.0f, 0.0f) };
std::vector<D3DXVECTOR3> PosVec;

for(int i = 0; i < 6; i++){
PosVec.push_back(pos[index[i]]);
}
単純に読み込むと、上記みたいな感じで 簡単なんですけども、

テクスチャごとに頂点座標の配列を分割し始めたり、
三角ポリゴン、四角ポリゴンでの場合分け に対応させると、

std::vector<std::vector<int>> indexVec;
//インデックスは省略

std::vector<std::vector<D3DXVECTOR3>> PosVec;
std::vector<D3DXVECTOR3> tempPosVec;
D3DXVECTOR3 pos[] = { // 中略 //};

for(int i = 0; i < 9; i++){
if(index[i].size() == 3){
for(int j = 0; j < 3; j++){
tempPosVec.push_back(pos[indexVec[i][j]]);
}
PosVec[TextureNum[i]].push_back(tempPosVec);
tempPosVec.~vector();
}else{
int tempindex[] = {0,1,2, 1,3,2};
for(int j = 0; j < 6; j++){
tempPosVec.push_back(pos[indexVec[i][tempindex[j]]]);
if(j == 2 || j == 5){
PosVec[TextureNum[i]].push_back(tempPosVec);
tempPosVec.~vector();
}
}
}
}
こんな風に、
ものすっごい汚くなって大変でした。
パッと見て どう動くのか分からないですもの。

※上記のソースコードは大まかに書いたので、誤字・脱字があるかも。


次に【2】にした理由は、
色んな頂点情報の組み合わせに対応出来るからです。

何回か述べましたが、
----------------------
頂点座標、法線
頂点座標、法線、UV座標
頂点座標、頂点色、法線

----------------------
上記のように、どんな組み合わせのモデルを読み込むか分からないので、

まず構造体を分解し、そして
--------------------------
ストリーム0番は頂点座標、
ストリーム1番は法線、
ストリーム2番はUV座標、

--------------------------
みたいに、どのストリームにどの情報を流すかを固定しておきました。
(読み込まれなかった情報のストリーム番号のバッファはNULLにしておけば良い。)


【3】は言わずもがな。

他にも変更点や説明したい点はありますが、 それは実装できてからにします。


まぁ、ともかく、
さっさと作り上げて早くゲーム本体のプログラミングに移ろう
と思います。
頑張るぞ~! (・ω・´)
スポンサーサイト

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

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



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