2015■サンプル以下のリンクでサンプルをダウンロードできます。※サンプルはアニメーション処理も入っています。サンプル■概要このページでは階層有りXFileの読み込み、更新、描画を行います。以下のリンクから確認をお願いします。-準備-■読み込み階層有りのXFileの読み込みには「D3DXLoadMeshHierarchyFromX」を使用します。この関数の第四引数に「ID3DXAllocateHierarchy」を継承したクラス、または構造体を指定します。この時に「CreateFrame」「CreateMeshContainer」が自動で呼び出されます。※サンプルのHierarchyXFileクラスのLoad関数が読み込み処理の部分です。ppAnimControlle:ID3DXAnimationControllerインターフェイスのポインタアニメーションとフレームは別々に扱われるので、アニメーションに関するデータはこのID3DXAnimationControllerで使用、確認する内容:階層有りのXFileを読み込んで分解してくれます。分解されたフレーム、メッシュコンテナは第三引数の変数の「CreateFrame」「CreateMeshContainer」を呼び出して、そこで詳細なデータの初期化を行います。「CreateFrame」「CreateHierarchy」内で不正アクセスなどのエラーが行った場合、各関数ではなく、別の箇所で停止しているように見えることがあります。D3DXLoadMeshHierarchyFromXで失敗、エラーになった場合は「CreateFrame」「CreateMeshContainer」も合わせて疑ってください。各階層のフレームはルートの行列に変化が起こるたびに更新を行う必要があります。開発側で実装をしなくてはいけません。※サンプルのHierarchyXFileクラスのUpdateFrame関数が更新処理の部分です。●フレームの遷移方法フレームを更新するには全てのフレームに対してアクセスする必要があり、そのための方法として使用されているのが、ルートフレームの情報を使用した再帰呼び出しです。ルートフレームの中には兄弟フレーム、子フレームの情報が格納されている「pFrameSibling」「pFrameFirstChild」があります。これらの変数に値が格納されていれば、その値を使用して更新関数を呼び出します。することで、ルートから始まり、再帰を繰り返すことでフレームの末端まで更新処理が行き届くことになります。XFileの描画は各フレームごとのメッシュコンテナ毎に描画をする必要があります。そのため、更新の時と同じようにルートから各フレームを遷移する再帰関数を作成し、その中でそのフレームが持っているメッシュコンテナを描画させます。container_data->pNextMeshContainer;}●メッシュコンテナの描画メッシュコンテナの描画は通常のXFileの描画同じで、マテリアルの数だけDrawSubsetを呼び出します。注意点があるとしたら更新で作成した各フレーム毎の行列をきちんと設定する必要があります。mesh_container->m_TextureList[i]);mesh_container->MeshData.pMesh->DrawSubset(i);}探している内容が見つからなかったら以下のサイトにあるかもしれません。筆者が開発にかかわらせてもらったアプリのリンクです。