問題タブ [skeletal-animation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
101 参照

c# - スケルタル スキニング アルゴリズムは、モデルの足元にあるすべてのものをまとめます

Collada ファイルに保存されている骨格アニメーションを使用してスキニングを実装しようとしています。それを読み込んで正しくスキニングせずにモデルをレンダリングすることはできましたが、スキニング アルゴリズムを適用するとすべてのパーツがまとまってしまう理由がわかりません。モデルの足元、または極端に変形しています。プロジェクト全体は、参照用にGitHubに保存されています (スキン ブランチ)。

恒等変換をボーンに渡すとデフォルトのポーズ モデルが得られるので、頂点シェーダーは正しいと思います。ファイル内の骨格アニメーションに基づいてボーン変換が計算されますが、これは.dae何らかの形で壊れています。これは、モデルがデフォルトのポーズでどのように見えるかに対して、私の問題がどのように見えるかです:

スキニングあり スキニングなし

私の問題は、再帰的な骨の変換を適用しているときにどこかにあると思います:

または、変換を使用してボーン データの再帰構造を構築する場合:

ボーンから頂点への重みが正しく収集され、シェーダーにアップロードされ、最終的なボーン配列のユニフォームが正しくアップロードされていると思います (ただし、正しく計算されていない可能性があります)。また、行列の乗算の順序と、シェーダーにアップロードするときに何かを転置するかどうかもわかりませんが、すべての試行で両方の方法を試しました.

0 投票する
1 に答える
123 参照

gltf - glTF ジョイントマトリックスを理解する

glTF の githubチュートリアルのスキン セクションを読みましたが、どのように動作するのか理解できませんでしたjointMatrix

チュートリアルでは、次のように定義されています。

globalTransformとキャンセルで迷っています。私の考えでjointMatrixは、次のようなものです

そして頂点シェーダーで

私の質問は

  • jointMatrixがそのように定義されているのはなぜですか?
  • 私のバージョンの何が問題になっていますか?