トップページ > プログラム > 2016年04月04日 > x6EHiaDc

書き込み順位&時間帯一覧

4 位/206 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000001003200001029



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止]©2ch.net

書き込みレス一覧

【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止]©2ch.net
586 :デフォルトの名無しさん[]:2016/04/04(月) 12:36:23.52 ID:x6EHiaDc
ちょっと根本的な質問させてください。
Xファイルが以下みたいになってるとして
[メッシュ頂点]
[ボーン行列1]
[ボーン行列2]

この場合プログラムでは

ボーン行列1のトランスフォーム

ボーン行列2のトランスフォーム

メッシュ頂点の描画

みたいになってるんですが(SDKのUtil系クラスを使ってる)
これってどういう風に各ボーンのweight値をメッシュの頂点に設定すればいいんでしょうか?…
ボーンは2つあるので各weight値がどの頂点に影響を与えるのかも
それぞれ違いますので、別々に設定しないといけないと思うのですが
頂点配列の同じ要素に違うweight値は設定出来ないので
どういう風に設定すればいいのかなと思いまして…
struct MYVERTEX{
float x,y,z;
float nx,ny,nz;
float tu, tv;
float weight;
};
各ボーンのweight値を頂点配列の同じ要素に足したらだめですよね?
myVertex[idx].weight += Skin.bone1.weight;
myVertex[idx].weight += Skin.bone2.weight;
別々にしようにも、メッシュの描画は一回で
各ボーンのトランスフォームが別々にあってと…よく分からなくなってきました。
【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止]©2ch.net
589 :デフォルトの名無しさん[sage]:2016/04/04(月) 15:29:57.01 ID:x6EHiaDc
>>587
返信ありがとうございます!
bone_indices;ですがDirectX7だと
頂点にbone_indicesが入れられないんじゃないかと思うんですよね…
DrawIndexedPrimitive()で渡すフラグにもindices関係のが見当たらないので
新しいバージョンならあるみたいなんですが…
と言う事は別に管理しなければいけないという事でしょうかね。

https://msdn.microsoft.com/ja-jp/library/cc372063.aspx
それからXファイルのSkinWeightsの項目にある↑
matrixOffsetですが、これはボーンの行列をトランスフォームする時に
一緒に別途ワールドでトランスフォームすれば良いのでしょうか?
以下みたいな感じで?
pd3dDevice->SetTransform(D3DTRANSFORMSTATE_WORLD, &matWorld);
pd3dDevice->SetTransform(D3DTRANSFORMSTATE_WORLD1, &matOffset);

色々複雑でしかも情報がないので
かなり苦戦してます 汗

ファイルフォーマットはとりあえず今のXファイルが
正常にアニメーション出来て色々分かってきたら移行していければなと思います。
【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止]©2ch.net
591 :デフォルトの名無しさん[sage]:2016/04/04(月) 15:47:38.00 ID:x6EHiaDc
>>590
いや、出来るところは固定機能使う事にしましたw
やっぱなるべく簡潔にしたいので。
【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止]©2ch.net
593 :デフォルトの名無しさん[sage]:2016/04/04(月) 15:54:42.98 ID:x6EHiaDc
という事はどう管理したらいいのでしょうかね。
何かどっかに動くサンプルコードでもあれば最高なんですけどねえ。
色々探してるんですけど見つからない…
【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止]©2ch.net
595 :デフォルトの名無しさん[sage]:2016/04/04(月) 16:16:40.49 ID:x6EHiaDc
>>594
一応、SkinWeightsが無いファイルなら
しっかり読み込めてアニメーションも出来ています。
SkinWeightsがあるファイルでもモデルの表示までは上手くいっているようです。
ただスキンメッシュのアニメだけが上手くいってない感じですねえ…
【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止]©2ch.net
597 :デフォルトの名無しさん[sage]:2016/04/04(月) 16:49:27.55 ID:x6EHiaDc
>>596
すいません汗
D3DFVF_XYZB5はあるみたいです。
D3DFVF_XYZB1 から D3DFVF_XYZB5 となっているので。
頂点バッファにしなきゃいけないんですかね?
一応、ヘルプは持ってるんですよ。アップしますか?
【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止]©2ch.net
600 :デフォルトの名無しさん[sage]:2016/04/04(月) 21:54:06.64 ID:x6EHiaDc
>>598
自作のライブラリが基本的に7で書いてまして…
いや当時から新しいバージョンあったのですが
知らなくて7で開発してしまっててw
ほとんど不満ないくらいの機能は一通りあるんですが
どうしても3Dモデルのスキンアニメだけ機能追加したいんです。
>>599
昔のソース見てみたいです!
暇な時にでも宜しくお願いしますm(__)m
【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止]©2ch.net
602 :デフォルトの名無しさん[sage]:2016/04/04(月) 23:08:02.12 ID:x6EHiaDc
>>601
ありがとうございます!

それから>>587のようにweightを頂点に含める方法ですが
ある程度複雑なモデルだとweightの要素の最大数を超えてしまうのですが
DirectXの方でもDrawIndexedPrimitive()に渡すフラグが D3DFVF_XYZB1〜B5 しかなく
最大でも5しか持たせられないと思うのですが、これって外部で管理しないと無理って事になりますか?

というか、コードの要所だけアップするので
どなたか見てもらえないでしょうか?…(基本的にSDKサンプルの改造なので)
【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止]©2ch.net
604 :デフォルトの名無しさん[sage]:2016/04/04(月) 23:50:34.72 ID:x6EHiaDc
>>603
最大数を超えないモデルを予め作るという事ですかね?
それともXファイルに最大数を超える数があってもプログラムで無視すれば良いという事ですかね?

FVF関係無いというのは具体的にどういう事でしょうか?色々質問してしまってすみません…

やっぱコードがあるのが一番分かりやすいと思うので
とりあえず要所だけまとめて後からアップしておきます。
もしよろしければどなたか何かアドバイス頂けたらすっごい助かります!


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。