DirectXのサンプルSkinnedMeshをいじって、
リソースは1つ、描画用インスタンスは複数なんてものを作成してみました。
リソースは1つ、描画用インスタンスは複数なんてものを作成してみました。
色々と、DirectXの仕様で躓く点が多かったように思います。
■実現の為のポイント
- AnimationControllerは単純にCloneで作成しても、ボーン構造(FRAME)は共有されてしまう
- 独立させたいのは、マトリックスパレット.
- 一緒にボーンオフセット行列もインスタンスごとに保持させてしまうと、楽にはなる。
- マトリックスパレットは、MeshContainerが保持するのではなく、一段外に追いやってみる。
- 自分では FRAMEの中に追い出しました。MeshContainerと並列して存在する感じに。
このような点から、
描画用のオブジェクト生成時には、
- FRAME構造をコピー(別インスタンス作成)
- AnimationControllerをcloneする
- 上記でそれぞれ描画用のインスタンス用としてのデータができたので、関連づける.
- D3DXFrameRegisterNamedMatrices()を使用する
これで画像のようにインスタンスごとにアニメーションデータを持った感じで
描画ができるようになりました。
面倒といえば面倒なので、要望があったらlib化してしまうかも。
コメント