DXライブラリ:テクスチャの入れ替え
Posted: 2009年12月14日(月) 04:38
DXライブラリVC++で、3D空間にアニメエフェクトを作ろうとしているものです、
強力な静電気を表現しようと思ってはじめました。
そこで、3Dで表示するのは面倒そうなので3D空間に2Dアニメーションを表示にすることにしました。
2Dアニメーションの経験はある程度あります。(2Dゲームでアニメーション作るぐらいなら楽勝)
が、3Dにきてつまずきました。
方法1:テクスチャをいれかえる。
MV1SetTextureGraphHandle(charge_light, textIndex, lightning[index%16], FALSE) ;
を使おうとしたのですが、どうも変わらない。
戻り値は0。
以下、引数説明
int MHandle : モデルのハンドル
には、int charge_light = MV1LoadModel("materials/lightning.mqo");
こんな感じでロードした charge_lightを指定。
int GrHandle : テクスチャとして使用するグラフィックハンドル
には、ちゃんと、64×64の画像。LoadDivGraph でpngを、ロードしたハンドル。
lightning[index%16]
こんな感じで指定。indexは毎フレーム増加
int TexIndex : テクスチャの番号
には
int textIndex = MV1GetMaterialDifMapTexture(charge_light, 0);
こんな感じで取得した番号を指定。
方法2:フレームの利用。
UV操作でメタセコがうまく使えないorz
これ、未経験者には操作がかなり難しいです。
方法3:画像をファイル単位で分割、mqoをアニメのこま数だけ容易。
確実にできるけど、一番よくない方法だと思う。
こんな状況です。解決策教えてください。
強力な静電気を表現しようと思ってはじめました。
そこで、3Dで表示するのは面倒そうなので3D空間に2Dアニメーションを表示にすることにしました。
2Dアニメーションの経験はある程度あります。(2Dゲームでアニメーション作るぐらいなら楽勝)
が、3Dにきてつまずきました。
方法1:テクスチャをいれかえる。
MV1SetTextureGraphHandle(charge_light, textIndex, lightning[index%16], FALSE) ;
を使おうとしたのですが、どうも変わらない。
戻り値は0。
以下、引数説明
int MHandle : モデルのハンドル
には、int charge_light = MV1LoadModel("materials/lightning.mqo");
こんな感じでロードした charge_lightを指定。
int GrHandle : テクスチャとして使用するグラフィックハンドル
には、ちゃんと、64×64の画像。LoadDivGraph でpngを、ロードしたハンドル。
lightning[index%16]
こんな感じで指定。indexは毎フレーム増加
int TexIndex : テクスチャの番号
には
int textIndex = MV1GetMaterialDifMapTexture(charge_light, 0);
こんな感じで取得した番号を指定。
方法2:フレームの利用。
UV操作でメタセコがうまく使えないorz
これ、未経験者には操作がかなり難しいです。
方法3:画像をファイル単位で分割、mqoをアニメのこま数だけ容易。
確実にできるけど、一番よくない方法だと思う。
こんな状況です。解決策教えてください。