問題タブ [volume-rendering]
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.
matlab - Matlabの3Dボリュームの視覚化と3Dオーバーレイ
質問はほとんどタイトルです。
生データとしてロードされた3Dボリュームがあります[256, 256, 256] = size(A)
。これには、0と1の値のみが含まれます。ここで、1は構造を表し、0は「空気」を表します。
MATLABで構造を視覚化し、アルゴリズムを実行してオーバーレイを配置したいと思います。たとえば、赤色で表示します。
より正確に言うと、次のようになります。
- 3Dボリュームを視覚化するにはどうすればよいですか。0は透明、1は半透明?
- オーバーレイとして3Dビジュアライゼーションに線をプロットしますか?
私はすでにMathWorksチュートリアルを読みましたが、役に立ちませんでした。コマンドを使用してみset
ましたが、すべてのプロパティに対して「無効なルートプロパティ」を試してみると完全に失敗します。
mesh - メッシュをメタボールに変換する
既存のポリゴン メッシュをメタボール (ブロブ) から作成された静的な形状に変換する必要があるプロジェクトを行っています。binvox を使用してメッシュを「.raw ファイル」にボクセル化しました ( binvoxの説明によると) が、データがどのように格納されているかはわかりません。したがって、それをロードする方法もわかりません。
質問 1: PHD 以外で行う方法はありますか? ポリゴン メッシュからメタボール モデルを作成します。質問 2: binvox の前述の .raw ファイル形式を使用したことがある人はいますか?
c++ - 生の3Dテクスチャとスライスキューブを読む
以下を使用して、生の3D(256x256x256セル)テクスチャ(8ビット)を読み取ります。
ここで、画像のrgbaは
次に、立方体を垂直方向に「スライス」して、次のようにデータを表示します。
これらのスライスをつかむための賢い方法は何ですか?ループを使用してデータを取得する方法について頭を悩ませようとしましたが、データがどのように編成されているか正確にはわかりません。また、このループは簡単ではありません。
直感的なスライス構文を使用できるように、データをより簡単な形式にマッピングできますか?
opengl - ボリュームレンダリング:.rawファイルをopenglに適した等値面に変換するにはどうすればよいですか?
マーチング四面体を使用して、.rawボリューム医療データセットの3Dビジュアライザーを作成したいと思います。
この実装はGPLライセンスで見栄えがよく、Paul Bourkeの情報に基づいていますが、3Dテクスチャとして読み込まれる.rawファイルを使用して作業する方法がわかりません。
次のいずれかを行う必要があるかどうかわかりません。a)pValueから直接値にアクセスするb)3Dテクスチャにロードした後に値にアクセスする
各x、y、zで等値面強度を取得するためにpVolumeにインデックスを付ける方法がわかりません。pVolumeが1D配列の場合。x、y座標が除算とモジュールを使用して1D配列からマップされることは知っていますが、x、y、zをどのようにマップしますか?
一方、.rawファイルを3Dテクスチャとしてロードすると、
glTexCoord3f
与えられたx、y、zでの等値を教えてください。
明確化:問題は、「OpenGLはこれから直接等値面を描画できるか」ではありません。問題は、各四面体を適切に評価するために必要な.rawジオメトリのアイソレベルにインデックスを付ける方法です。画像では、等値面がその上にあるか下にあるかに基づいて、各四面体のケースにマークが付けられていることがわかります。等値面は、.rawファイルのx、y、z座標でインデックス付けされますが、データセットのx、y、zごとにどのようにアクセスできますか?glTexCoord3fは、与えられたx、y、zでの強度を教えてくれますか?pVolume配列から直接ax、y、z変換を行う方が良いですか?
c - C-1Dバイト配列のx、y、z座標のインデックス付け
マーチング四面体アルゴリズムを実装するためにサーフェスの値を評価したいのですが、.rawのフォーマットされていないデータを処理する方法がわかりません。
ボリュームデータセットを含む.rawファイルを1Dバイト配列にロードした後、そこからX、Y、Zに関連付けられた値を取得するには、どの算術変換を適用する必要がありますか?これは、.rawファイルをロードするために私が知っている唯一の方法です。これの代わりに3Dバイト配列を作成できますか?どのように?
c++ - .raw ファイルからの 3D バイト配列の読み込み
前の質問のように、ボリューム データセットの .raw ファイルをバイト配列にロードすることに関心があります。3D バイト配列を使用すると、X、Y、Z 座標にインデックスを付けるときに作業が簡単になると思いますが、ボリュームをロードするために使用する必要がある読み取りサイズについてはわかりません。このサイズ宣言により、ボリューム データに正しくインデックスを付けることができますか?
c++ - 1D 配列での不規則なグリッド X、Y、Z 座標のインデックス付け
前の質問のように、.raw ファイルのボリューム データを含む 1D 配列を読み込んでいます。Jonathan Leffler による回答は役に立ちましたが、現在、異なる次元 (X、Y、Z は同じではありません) のボリューム データセットを使用しています。How would the formula be generalized?
opengl - レイ キャスティング アルゴリズムを使用したボリューム レンダリング (glsl を使用)
レイ キャスティング アルゴリズムを使用してボリューム レンダリングを学習しています。ここで良いデモとチュートリアルを見つけました。しかし問題は、nVidia ではなく ATI グラフィック カードを使用しているため、デモで cg シェーダーを使用できないため、cg シェーダーを glsl シェーダーに変更したいと考えています。私は OpenGL のレッド ブック (第 7 版) を読みましたが、glsl と cg には詳しくありません。デモの cg シェーダを glsl に変更するのを手伝ってくれる人はいますか? または、レイキャスティングを使用したボリュームレンダリングの最も単純なデモの材料はありますか(もちろんgslで)。 これがデモの cg シェーダです。友人の nVidia グラフィック カードでも動作します。私を最も混乱させているのは、cg のエントリ部分を glsl に変換する方法がわからないことです。たとえば、次のようになります。
さらに、たとえば、画面を描画するときに 2 つの texcoord を割り当てれば、シェーダーに 2 つのテクスチャー ユニットを持つ 2 つのテクスチャー オブジェクトをバインドするプログラムを記述できます。
glMultiTexCoord2f(GL_TEXTURE0, 1.0, 0.0);
glMultiTexCoord2f(GL_TEXTURE1, 1.0, 0.0);
デモでは、プログラムは 2 つのテクスチャ (1 つの 3D に対して 1 つの 2D に対して 1 つの 2D に対してbackface_buffer
1 つの 3D に対して 1 つvolume texture
)にバインドしますが、ユニットはボリューム テクスチャに対してglMultiTexCoord3f(GL_TEXTURE1, x, y, z);
だと思いますが、どちら (テクスチャ ユニット) が? 私が知る限り、シェーダーでテクスチャ obj をバインドするには、バインドするテクスチャ ユニットを取得する必要があります。GL_TEXTURE1
backface_buffer
プログラムは正常にコンパイルされ、正常にリンクされています。しかし、3 つの場所 (texloc、volume_texloc、stepsizeloc) のうち -1 しか取得できませんでした。最適化されている可能性があることはわかっています。cg シェーダーを glsl シェーダーに変換するのを手伝ってくれる人はいますか?
編集: glslを使用した最新の OpenGL API 実装 (C++ ソース コード) に興味がある場合: Volume_Rendering_Using_GLSL