スキニング

DirectX

DXR でスキニング対応をする (2)

前回は DXR におけるスキニングの実装の流れ(コンピュートシェーダー版) を軽く紹介しました。今回はその実装について踏み込んでいきます。 バッファの準備 コンピュートシェーダーによるスキニングによる頂点変形では、変形処理前の頂点列と変形後の頂点列の2つのバッファが必要になります。従来のレンダリングパイプラインの場合では変形前のバッファのみで済みましたが、今...
DirectX

DXR でスキニングを対応する (1)

DirectX Raytracing でモデル(3D形状)を描画できるようになると、次にキャラクターを出したくなります。このキャラクターというのが多くの場合スキニングモデル(エンベロープモデル)で作られているので、これに対応する必要が出てきます。 スキニングについて 各関節に見立てたボーンが動くことで、それによる頂点変形を施して描画する、という処理は、従来の...
DirectX

スキニングメッシュのバウンディングボックス

久しぶりにスキニングメッシュ(エンベロープモデル)のネタです。 キャラクターのモデルでバウンディングボックスやスフィアを使って、あたり判定を行っていましたが、 結構無駄な部分が出来てしまい、結果厳密なチェックが出来ないという残念な結果になってしまいます。 かといって、頂点変形をCPUで全ての頂点で行って厳密なバウンディングボックスを作るのもこのご時世に何かあ...
DirectX

Vertex Texture Fetchによるスキニング

Vertex Texture Fetchを利用して、スキニングメッシュのサンプルを動かしてみました。 ひにけにxnaさんのところでは、XNAを用いての解説があったので、 ここでは、普通のDirectX SDKとC++による組み合わせでこれをやってみたいと思います。 ■ 使用するもの SkinnedMeshのサンプルプログラム ShaderModel 3.0に...
OpenGL

GLSLスキニング

■GLSLでスキニングシェーダー書いてみた わりとGLSLでスキニングシェーダーをやったという記事を見かけないので ここで書いてみます。 大変だった点はGLSLでは、Cのようなキャストを受け付けない点。 そのためブレンドインデックスをどうやってint型にするかで悩みました。 実際には、下記のソースコードに示すように int( )で囲ってやる程度で済む話なので...
DirectX

SkinnedMeshで複数描画したい

DirectXのサンプルSkinnedMeshをいじって、 リソースは1つ、描画用インスタンスは複数なんてものを作成してみました。 色々と、DirectXの仕様で躓く点が多かったように思います。 ■実現の為のポイント AnimationControllerは単純にCloneで作成しても、ボーン構造(FRAME)は共有されてしまう 独立させたいのは、マトリック...