ゲームつくろ〜質問箱
(現在 過去ログ5 を侮ヲ中)

HOME HELP 新規作成 新着記事 トピック侮ヲ 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■4558 / inTopicNo.1)  D3DXMESHからskinweightsとボーンオフセット行列を取得したいのですが
  
□投稿者/ yopo -(2011/06/28(Tue) 00:11:28)
    はじめまして。
    一応過去ログも読んだのですが、見つけられなかったので質問させてください。

    私もスキンメッシュの実装のために勉強しています。
    それで、仕組みはだいたい理解したので
    DirectX9で頂点ブレンディングの処理を自分で実装してみようとしています。

    Xファイルを用意しまして、D3DXLoadMeshFromX()関数でXファイルを読み込み、
    D3DXMESH::GetVertexBuffer()関数で頂点バッファにアクセスしたところ、
    頂点座標やuv値を取得できました。
    D3DXMESH::LockIndexBuffer()関数でインデックスバッファも取得できました。

    これでDrawPrimitiveを使ってXファイルのモデルを表示することはできそうなのですが、
    さてスキンメッシュを表示しようと思ったところ、
    SkinWeightsのデータの取得方法、およびボーンオフセット行列の取得方法が分かりません。

    D3DXLoadMeshHierarchyFromX()関数によってボーンのツリー構造と、ボーン行列、
    およびメッシュコンテナが取得できていることは確認したのですが…

    現在はDirextXのヘルプを読んでいますが、なかなかわからなくて難儀しています…
    「ここ見れ」だけでもいいので、なにかご存知なら教えてください。
    よろしくお願いいたします。

引用返信 削除キー/
■4562 / inTopicNo.2)  Re[1]: D3DXMESHからskinweightsとボーンオフセット行列を取得したいのですが
□投稿者/ IKD -(2011/06/28(Tue) 19:41:59)
http://marupeke296.com
     yopoさん、ご質問頂きましてありがとうございます。
     
     マルペケのスキンメッシュ関連の記事はご覧になりましたでしょうか?DirectX技術編その27辺りでスキンメッシュに必要な事をあれこれやっております。また、その23〜26で内部の細かい話をしておりますので、もしまだご覧になっていないのであれば、その辺りから情報をお探し頂ければと思います。
引用返信 削除キー/
■4564 / inTopicNo.3)  Re[2]: D3DXMESHからskinweightsとボーンオフセット行列を取得したいのですが
□投稿者/ yopo -(2011/06/28(Tue) 22:27:57)
    ありがとうございます。
    もちろん拝見しました。国内唯一と言っていい詳しい記事をありがとうございます。
    記事はもちろん読んだのですが…SkinWeightがわからないのですよねぇ。

    今は諦めてXファイルから直接読んでみようと思っています。
    FBX SDKを使えばもっと良いのかもしれませんが、Xファイルのほうが慣れ親しんでいるものでして。
引用返信 削除キー/
■4565 / inTopicNo.4)  Re[3]: D3DXMESHからskinweightsとボーンオフセット行列を取得したいのですが
□投稿者/ IKD -(2011/06/29(Wed) 01:29:17)
http://marupeke296.com
     ウェイトは通常頂点に埋め込まれています。D3DXLoadMeshFromX関数を通しているならばID3DXMeshがすでにあるはずで、ID3DXMesh::GetVertexBufferメソッドで頂点バッファが取得できます。さらに、ID3DXMesh::GetDeclarationメソッドで頂点宣言の情報がわかります。このメソッドが返すD3DVERTEXELEMENT9構造体の配列には1頂点の情報が詰まっています。ここからD3DVERTEXELEMENT9::UsageがD3DDECLUSAGE_BLENDWEIGHTである配列要素を探します。見つけたらそのOffsetの値に注目です。これが1頂点の先頭から頂点ブレンド重み値(float×3)までのオフセット値です。詳しくはマニュアルのD3DVERTEXELEMENT9構造体を参考にしてみて下さい。
     
     ボーンオフセット行列はID3DXSkinInfoインターフェイスが持っています。これは先に紹介しましたマルペケの記事に情報がありますのでそちらをご参照下さい。D3DXFRAMEのツリーのどこかにぶら下がっているD3DXMESHCONTAINER構造体が持っているはずです。
引用返信 削除キー/
■4566 / inTopicNo.5)  Re[4]: D3DXMESHからskinweightsとボーンオフセット行列を取得したいのですが
□投稿者/ yopo -(2011/06/29(Wed) 10:09:51)
    ありがとうございます。
    本当にお詳しいですね。やはり海外のサイトなども読んでらっしゃるのでしょうか。
    助かりました。早速実装してみたいと思います。
    ひとまず済にしておきますね。
済!
引用返信 削除キー/
■4568 / inTopicNo.6)  Re[5]: D3DXMESHからskinweightsとボーンオフセット行列を取得したいのですが
□投稿者/ yopo -(2011/06/29(Wed) 16:24:49)
    2011/06/29(Wed) 16:38:09 編集(投稿者)

    すみません。
    一つだけ質問なのですが、頂点ブレンド重み値(float×3)は
    なぜfloatx3なのでしょうか?
    重み値は頂点に影響するボーンの数だけあると思っていたのですが…
    つまりその頂点に影響するボーンが4つならweight値は4つあったりするのかな
    と思っていたのですが。
    見当違いな質問だったらすみません。
引用返信 削除キー/
■4570 / inTopicNo.7)  Re[6]: D3DXMESHからskinweightsとボーンオフセット行列を取得したいのですが
□投稿者/ IKD -(2011/06/29(Wed) 17:25:20)
http://marupeke296.com
     あ、これはですね、最後の4つ目が、

     4つ目の重み = 1.0f - (3つの重みの合計)

    で計算されるという仕様になっているため必要が無いんです。代わりに4つ目には浮動小数点(float)では無く「ブレンド行列番号」が4byte内に1byteずつパックされています。必ずそうであるというわけでも無いのですが、Xファイルであれば十中八九そうなっています。
引用返信 削除キー/
■4571 / inTopicNo.8)  Re[7]: D3DXMESHからskinweightsとボーンオフセット行列を取得したいのですが
□投稿者/ yopo -(2011/06/29(Wed) 18:04:48)
    どうもありがとうございます。
    やはりこれもヘルプに書いてあったのでしょうか?
    かなり入り組んでいるんですね。

    ありがとうございました。
済!
引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

書き込み不可

Pass/

HOME HELP 新規作成 新着記事 トピック侮ヲ 検索 過去ログ

- Child Tree -