[過去ログ] ニート、無職、フリーターがゲームを作るスレ 34 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
143(1): 名前は開発中のものです。 [sage] 2018/09/24(月) 15:51:51.14 ID:TEGra55z(1/4) AAS
>>141141(2): 名前は開発中のものです。 [sage] 2018/09/24(月) 10:07:39.85 ID:jZnbHINP(1) AAS
>>138
ボーン行列にワールド変換行列を乗算した行列の配列になってる
float4x4 g_Mat[ 512 ]; //←こんな感じで定義
モデルA(ボーン無し)、モデルB(ボーン3つ)があって、
A→B→B→Aの順に生成した場合、下記の様に計算した行列を格納して
g_Mat[ 0 ] → 一つ目のAのワールド変換行列
g_Mat[ 1 ] → ボーン1×ワールド変換行列
g_Mat[ 2 ] → ボーン2×ボーン1×ワールド変換行列
g_Mat[ 3 ] → ボーン3×ボーン2×ボーン1×ワールド変換行列
g_Mat[ 4〜6 ] →同上
g_Mat[ 7 ] → 二つ目のAのワールド変換行列
Aをまとめて描画 ( 添え字0,7のバッファを作成し、入力レジスタに渡す)
Bをまとめて描画 ( 添え字1,4のバッファを作成し、入力レジスタに渡す)
みたいに実装してる
HLSL側はこんな感じ
for ( int i = 0; i < 3; i++ )
{
//モデルBの場合、In.indexにはボーン番号0〜2のいずれかが入る
t_CombSkinMat += g_Mat[ In.offset.x + In.index[ i ] ] * w[ i ];
}
t_CombSkinMat += g_Mat[ In.offset.x + In.index[ 3 ] ] * ( 1.0f - w[ 0 ] - w[ 1 ] - w[ 2 ] );
Out.pos = mul( float4(In.pos, 1.0f), t_CombSkinMat );
SSはロボットだったけど、スキンメッシュみたく頂点ブレンドまでしてるのかな?
ボーン行列はオフセットの往復処理込みなのかな?
気になったんだけど、下みたいになってるんじゃない?
g_Mat[ 1 ] → ボーン1×ワールド変換行列
g_Mat[ 2 ] → ボーン2×ワールド変換行列
g_Mat[ 3 ] → ボーン3×ワールド変換行列
ボーンが3つなら4つ目の重みは0になるから ( 1.0f - w[ 0 ] - w[ 1 ] - w[ 2 ] )を掛けるス
テップは要らないんじゃない(というか添え字がオーバーする)
折角なので個体別に動きを変えて「わちゃわちゃ」させたカオスなSSでドヤって欲し
144: 名前は開発中のものです。 [sage] 2018/09/24(月) 15:56:13.15 ID:TEGra55z(2/4) AAS
ありゃ余計な改行が。更に最後の「い」が抜けた
146(1): 名前は開発中のものです。 [] 2018/09/24(月) 18:04:45.86 ID:TEGra55z(3/4) AAS
>>145145(1): 名前は開発中のものです。 [sage] 2018/09/24(月) 17:43:40.87 ID:jZMKGMla(1) AAS
>>143
そうそう、ボーン1とかで結構省略して書いてしまったけど
オフセットして原点に移動、そして回転・拡縮等して元の位置へオフセットした後にワールド座標変換行列を乗算したヤツがg_Matに入ってる
ボーンの親子関係は、Bone1→Bone2→Bone3だから
Bone1に影響する頂点に適用する行列(ボーン1×ワールド変換行列)は
Bone1_OffsetMat × Bone1_TransMat × Bone1_InverseMat × WorldMat
Bone2に影響する頂点に適用する行列は(ボーン2×ボーン1×ワールド変換行列)
Bone2_OffsetMat × Bone2_TransMat × Bone2_InverseMat × Bone1_TransMat × Bone1_InverseMat × WorldMat
コレの計算は再帰関数を使ってプログラム側で処理してる
あと、とりあえず1つのHLSLで全部描画しようとしてるから、
たしかに重みをかける所とかは無駄な処理が入ってる
(ボーンが無いモデルでも、Bone1と重みを4つ生成して(w[0]がBone1の影響度、あとの3つは影響度0の無駄な重み)
無理やりスキンメッシュアニメーションを行うモデルを描画するかの様に処理してる)
ここら辺は修正した方が良いかな…
今は福岡ゲームコンテスト2019用の作品制作中だから、余裕が出来たらカオスSS上げたい(笑
(まだ基本的な描画システム自体出来てねーのかよって感じだが)
>>142
Xファイルの仕様把握や、Xファイルの読み込みと頂点ブレンディングあたりは理解するまでが面倒臭いw
DirectX9にはスキンメッシュする機能が無くて、自分でコールバック関数を作って頑張ってねって感じだから結構不親切かも
頂点位置変換の親子関係とブレンドがごっちゃになってないか
SSを見る限り、頂点ブレンドが必要な様には見えないんだがな・・・
148: 名前は開発中のものです。 [sage] 2018/09/24(月) 19:07:09.88 ID:TEGra55z(4/4) AAS
まあ頑張ってくれたまへ
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.037s