問題タブ [zbuffer]
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.
c++ - 各ピクセルのカメラから深度を取得する
メッシュ モデルがあり、VTK を使用して、特定のカメラ位置 (x、y、z) からのビューをレンダリングしました。これを RGB 画像 (640x480) に保存できますが、各ピクセルがカメラからの深度の値を格納する深度マップも保存したいと考えています。
この例Zbufferに従って、レンダー ウィンドウで指定された値を使用してみました。問題は、範囲 [0,1] の値のみが格納されることです。代わりに、カメラからの各ピクセルの深度/距離を保存する合成距離画像を作成しようとしています。Kinect で生成された画像と同様に、メッシュ モデルの特定の視点からの画像を作成しようとしています。Zbufer
編集- いくつかのコードを追加する
私の現在のコード:
メッシュをロードする
カメラを作成してどこかに配置する
z バッファから結果を取得する
この例では、これにより 0.999995 が得られます。値が [0,1] の間であるため、これを解釈する方法がわかりません。ご覧のとおり、カメラを z 軸上で 650 単位離れた位置に設定したため、このピクセルでの z 距離を想定しています (レンダリングされた RGB のオブジェクト上にあります) は 650 に近いはずです。
opengl - 対数深度バッファーの線形化
対数深度バッファを線形化するには?
フラグメント シェーダーでの線形深度バッファーの視覚化
球頂点シェーダー
左の部分は、対数深度バッファーの線形化またはその欠如を示していますが、右の部分はlog、 gl_Position = matrix * vec4(position,1.0f);

opengl - DirectX と OpenGL 間のステンシル オプション
エミュレーションレイヤーを実装しています。ステンシルのものを除いて、それ以外の場合はすべて機能します(私の影が重なっています)。
私は物事を論理的に行っているかどうか疑問に思っています-適切な結論/仮定を作成している場合:
以下は上記で使用されます。glAble() は単に glEnable/glDisable のラッパーです。
graphics - 回転球データセットのオクルージョン カリング
私は現在、球体データセット用の CPU のみのラスタライザーを実装する必要がある課題に取り組んでいます。データセットは静的であるため、セット全体がカメラの前で回転できる場合でも、実行時に変更されません。
現在のアイデアは、オクルージョン カリング メソッドを実装して、カメラの視点から他の球体によってオクルージョンされた球体がラスタライザーの次の段階に進まないようにすることです (Z バッファーとピクセルのシェーディングに対するテスト)。 CPU 時間。
これを達成するための可能な方法を検討してきました。最初に、シーン モデルを octree で維持する階層型 Z バッファリングの実装について考えました。ただし、データセットが回転するため、フレームごとに octree を再計算する必要があり、かなりコストがかかる可能性があります。私は正しいですか?
このシナリオでは、球体データセットの階層構造を計算するための空間ハッシュまたは安価な方法がより有益であるかどうかはわかりません。これについて何か考えはありますか?これは CPU に完全に実装する必要があることに注意してください。
opengl - openGL glDepthFunc() が機能しないのはなぜですか?
私はopenGLで遊んでいて、青いマークの三角形を取り除こうとしています。私はそれにこのコードを使用します:
はい、私は使用します
私のメインループで。問題は射影行列である可能性があると読みました。私はこれらの値を使用します:
近くと遠くの値を変更しようとしましたが、それでも同じです。glDepthFunc のパラメーターを変更しようとしていましたが、それも役に立ちませんでした。それで、何かアイデアはありますか?? どうもありがとう

three.js - Three.js - TrackballControls で回転させたときに透明なオブジェクトが透明のように動作しない
シーンに 2 つのオブジェクトを追加し、それらの透明度を true に設定して不透明度を設定し、TrackballControls を使用してマウスでシーンを回転すると、最初はカメラから離れていたオブジェクトの透明度が失われます。
これは Z バッファの問題であり、カメラからのさらなるオブジェクトが最初に表示されることを読みました。しかし、TrackballControls を使用してシーンを回転すると、カメラの位置が変わるため、透明なオブジェクトが正しく表示されるはずです。しかし、そうではありません。
この写真では、右側が正面図、左側が正しく表示されていない背面図です。
http://www.foto-ondruskova.cz/Experiment/lenses.jpg
解決策はありますか?
opengl - Z バッファー (深度バッファー) 値の絶対制限
Z バッファーを使用して距離を測定しようとしていますが、予期しない問題が見つかりました。
私のコードでは、z-buffer が 0..1 の浮動小数点数を返すことを認識しています。
次に、コールバック関数を使用して z バッファー値を後処理します。
以下に示すように、距離単位が24に達するまで、すべてがうまく機能します。
Nearplane (ビューポート)、farplane、 camera_highの3 つの変数があります。最後は地面からカメラまでの距離です。それは平面を見ています (これは地面であることを意味します)。それがプログラムの出力です:
const float ニアプレーン = 0.2; const float farplane = 200;
const float ニアプレーン = 20;
const float ニアプレーン = 24;
nearplaneとfarplaneの位置にもかかわらず、24を超える z-buffer に違いはありません。
java - カスタム 3D レンダリング
ということで、最近ネットで熱心につっこんでいて、面白いゲームに出くわしました。基本的な例はMinecraft4kです。数年前に Java4k コンテスト用に作成されたものですが、私が本当に興味を持っているのはレンダリングがどのように行われたかです。このようなゲームは毎年たくさん作られていますが、作成者がどのようにして 3D 世界を合成したのか、ましてや最小限のコードで作ったのかについては、あまり見つけることができません。
実装される基本は、ポリゴンの塗りつぶし、z オーダー、および風景が描かれすぎるのを防ぐためのある種の「霧」です (実際にはオプションです)。私は走査線の塗りつぶしアルゴリズムを読み、実際の例を持っていますが、どのような形式の z バッファリングも機能させる方法がわかりません。質問は、この種のカスタム 3D レンダリング作業の経験がある人はいますか? もしそうなら、あなたが私に向けることができるヒント/ポインター/リソースはありますか?
これは少し浅はかで、おそらく不適切な質問であることは承知していますが、ここで試してみることにしました。前もって感謝します!