問題タブ [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.

0 投票する
1 に答える
254 参照

opengl - OpenGL アルファ関数

2D テクスチャ ベースのボリューム レンダリング プロジェクトに取り組んでおり、プログラムにアルファとブレンドを適用しようとすると問題が発生します。プログラムは 1 つのファイルから 2D フレームを読み取り、これらのフレームに基づいてテクスチャを設定します。これは私のプログラムです:

ご覧のとおり、ここの InitTextures2D 関数では、生データを RGBA データに変換しています。1 ピクセルの輝度値が 20 未満の場合は黒と見なし、アルファ値を 0 (透明) に設定します。他のピクセルのアルファ値はすべて 255 (不透明) に設定されています。したがって、私の意見では、ピクセルのアルファ値は 0 または 255 のいずれかになる可能性があるため、関数 glAlphaFunc(GL_GREATER, reference_value) の 2 番目のパラメーターに割り当てる値に関係なく、最終結果の外観は常に同じである必要があります。いくつかのテストを行いましたが、残念ながら結果はまったく異なります。

glAlphaFunc(GL_GREATER, 0.1f) glAlphaFunc(GL_GREATER, 0.1f) の結果 の結果: glAlphaFunc(GL_GREATER, 0.5f) の glAlphaFunc(GL_GREATER, 0.5f) の結果 結果: glAlphaFunc(GL_GREATER, 0.99f) の結果: glAlphaFunc(GL_GREATER, 0.99f) の結果

理由を教えてください。

0 投票する
0 に答える
472 参照

c++ - openGL es 3.0 によるボリューム レンダリング

3D ボリュームをレンダリングしようとしています。生データはメイン メモリからグラフィックス メモリに正常にアップロードされますが、画面には何も表示されません。私のシェーダー コードは、誰かが問題を特定するのを手伝ってくれます。

0 投票する
1 に答える
1316 参照

vtk - VTK - 簡単なコードの説明

簡単なコードに従って説明してもらえますか?

ここで、VolumeScalarOpacityとVolumeGradientOpacity はvtkPiecewiseFunctionの型です...これらのメソッドの説明はどこにもありません ...

CTボリュームをレンダリングするのに苦労しています...ありがとう。

0 投票する
1 に答える
472 参照

c++ - ボリューム レンダリングのアルファ ブレンディング

ボリューム レンダリングに関するこのチュートリアルhttp://www.codeproject.com/Articles/352270/Getting-started-with-Volume-Renderingを見つけて、独自のレンダラーを実装しようとしました。アルファテストですべてのスライスを一度に描画できるようになりました。これにより、多かれ少なかれチュートリアルのような結果が得られます。ここで、一歩進んでアルファブレンディングを適用したいのですが、その後、変更はありません (そして、あったとしても、チュートリアルのように見栄えがよくありません)。

これが私のレンダリングコードです:

ここで、z はスライスの数です。テクスチャ生成コードは次のようになります。

もちろん、DataAccessor は生のテクスチャ データへのアクセスを提供するクラスです。

ウィンドウに何かを設定するのを忘れましたか、それともコードに何か問題がありますか?

0 投票する
1 に答える
1565 参照

matlab - 等値面から面/頂点に変換を適用し、結果をプロットする

Matlabで取得した輪郭がある場合

表面に変換を適用し、結果を滑らかな表面としてきれいにプロットするきれいな方法はありますか? 変換Tは非線形です。

この変換をandと useのT両方に適用しようとしましたが、うまく機能しませんでした。fvertpatch

0 投票する
1 に答える
239 参照

opengl - レイ キャスティングでいくつかのボクセルを破棄する

GPU レイキャスティング技術を使用するシェーダーでボリューム レンダリングを実装しています。基本的に、シーンの中心にユニット キューブがあります。頂点シェーダーでユニット キューブの頂点をレンダリングし、次のようにテクスチャ座標をフラグメント シェーダーに渡します。

単位立方体の座標は -0.5 から 0.5 になるので、0.5 を足してテクスチャ座標を 0.0 から 1.0 に固定します。

フラグメント シェーダーで、ラスタライザーによって補間されるテクスチャ座標を取得しました。

私のレンダリングはうまくいきます。

これで、パーティクル (ワールド座標の実際の頂点) で問題なく動作する選択アルゴリズムが実装されました。

私の質問は、どうすればボリュメトリック データセットで動作させることができるかということです。私が持っている頂点だけが単位立方体の頂点だからです。データ ポイントはラスタライザーによって補間されるため、ボクセルの実際の (世界の) 座標はわかりません。

ボクセルの中心座標を取得し、それらをパーティクルのように扱って、フラグメント シェーダーで必要なボクセル (vUV 座標だと思いますか?) を省略または含めることができれば十分です。

0 投票する
2 に答える
220 参照

opengl - ウィンドウ伝達関数

ボリューム レンダラーを実装しています。ウィンドウ伝達関数を使用して、ユーザーが一部の領域の不透明度を変更できるようにしたいと考えています。私が理解している限り、window、offset、scale の 3 つの変数があります。

ウィンドウは、アルファを変更したい値の量であり、オフセットはウィンドウが最小値からどれだけ離れているかです。しかし、私はスケールが何であるか分かりませんか?あるアルファ値から次のアルファ値への増加ですか、それとも現在のウィンドウの最大アルファですか?

私は何かを見逃していますか、それとも間違っていますか?

これは私が念頭に置いていることです

これは私が念頭に置いていることです

0 投票する
1 に答える
75 参照

graphics - さまざまな形式でのボクセルの表現

私はグラフィックスが初めてです。誰かがボクセルをさまざまな形式で表現する方法を教えてもらえますか (例: 直線グリッド)

0 投票する
1 に答える
912 参照

three.js - ボリューム レンダリングは、ある方向から別の方向へより透過的です

three.js とレイ マーチング GLSL を使用して、ボリューム レンダリングについて理解を深めようとしています。numpy 配列から合成したデータがあります。

レンダリングされているデータの立方体は、片側がより不透明で、反対側が徐々に透明になります - このように (ワイヤ フレームは無視してください。これはちょっとした方向付けのためです) ここに画像の説明を入力

ただし、透明度の高い端から立方体を見ると、透明度が透明度の低い端を「ブロックアウト」しているように見えます (意味があることを願っています)。このような: ここに画像の説明を入力

これが関係しているかどうかはわかりませんが、カメラが立方体の少し内側に入ると、正しくレンダリングされなくなるという問題もあります。次のように、カメラに最も近いビットを切り取ります。 ここに画像の説明を入力 これは関連する問題ですか、それとも方法の制限にすぎませんか。

コードはこちら https://github.com/niallrobinson/test-volume-rendering/blob/master/viewer.htmlhttps://github.com/niallrobinson/test-volume-rendering/blob/master/viewer.js https://github.com/niallrobinson/test-volume-rendering/blob/master/viewer.html ://github.com/niallrobinson/test-volume-rendering/blob/master/viewer.html

2 番目のパス シェーダーは次のようになります。

よろしくお願いします

編集:少し実験した後、立方体の外側だけがレンダリングされていることが問題のようです。立方体の真ん中にデータの塊を置いても、何も見えません。

EDIT:実際には、前面の唯一のレンダリングデータです。レイ マーチングの方向を逆にすると (つまり、カメラに向かう方向に変更すると)、裏側の表面でしか見ることができません。

0 投票する
0 に答える
160 参照

glsl - z 平面に沿って見たときのボリューム レンダリング アーティファクト

WebGL ボリューム レンダリングを起動して実行しようとしています。3D データを 2D テクスチャにタイル化することができました (横方向と RGB チャネルの両方にタイル化)。そして、いくつかの合成データ (球体) が表示されるようになりました。

x、y 平面に沿って見ると (つまり、タイルを正面から見ると)、すべて問題ないように見えます。 x,y 平面で OK

しかし、キャストされたレイが別の側からキューブに入るのを見始めるとすぐに、このように、レンダリングされているボリュームをブロックする奇妙なヘイズ効果があります。 少しファンキーになり始めています

そして、z 平面に沿って直接見ると (つまり、タイルに端を合わせると)、物事は本当にめちゃくちゃになります。 重量

誰もこれを見たことがありますか?完全なコードはこちらから入手できます

これが私のシェーダーの業務上の目的です。タイル配列をサンプリングし、レイ マーチングを行うように見える部分です。

みんな助けてくれてありがとう!