何でもプログラミングスマートフォン用の表示で見る何でもプログラミングこの広告は、90日以上更新していないブログに表示しています。Direct3Dボリュームレンダリングの手法はいくつかありますが、今回はもっとも単純な、下図のように長方形のスライスを何枚も重ねて実現したものを実装したいと思います。ボリュームデータ下記ページにある、bunnyのデータを利用いたしました。archiveもとは1ボクセルあたり16bitだったため、8bitに変換して1ファイルにまとめました。アプリケーションコード下図のような、マウスの位置によって回転角度の変わるアプリケーションを実装します。main関数とWndProcは下記の様に実装しました。今回はRender関数のみをメンバとして持ったものとしました。Render;};HWNDを受け取りVolumeRendererを作成する関数を定義します。複数のスライスを重ねてボリュームを描画する際、横から見てしまうとボリュームにならないため、X、Y、Z三方向のスライスセットを用意しておき随時適切なものを利用して描画するようにしています。陰影はTextureのX、Y、Z方向の勾配を計算して、それを法線として利用しています。};}VertexConstとVertexは下記の様に定義してあります。一方向のスライスセットでは横から見たときボリュームにならないため、三方向のスライスセットを用意しておきます。Slices構造体は下記の様に定義します。IndexBufferZ;};Slicesを作成する関数を下記の様に実装します。depth)のボックスのSlicesを作成しています。};}変換行列から適切なスライスセットを返す関数も定義します。視線方向に向いているスライスセットを選択しています。};}Direct3D11用関数群コード内で利用したDirect3D11関連の関数は下記の様に実装してあります。state;}Vector3、Matrix4動作確認レベルの実装ですので、お好みの行列ライブラリで置き換えてください。テクスチャ貼り付け下記記事にて三角形を描画するところまで実装しました。IDirect3DSurface9をWPFで表示しました。月別アーカイブ参加グループプログラミングはてなブログをはじめよう!any-programmingさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。