問題タブ [orthographic]
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.
opengl - 正投影から遠近法への調整計算
正投影のように見えるように遠近投影を調整するにはどうすればよいのでしょうか。たとえば、正投影ではすべてがうまく整列する、それぞれが異なるz値を持つ10x10の点のグリッドがあるとします。透視投影では、もちろん、カメラとz深度を基準にした位置を調整します。各ポイントを、まだ整列して正投影で表示されているように見せるために、どのような調整を行う必要がありますか?(もちろんカメラが動くまで)。
私は、目の位置からz平面を通る光線を計算する線に沿って考えています(それがあなたがそれを呼んでいる場合)、それを表示したいポイントで、必要な深さまで光線を追跡します。これを実装する方法はよくわかりませんが。
visual-c++ - アルファブレンディングがオルソで機能しないのはなぜですか?
これは、3Dオブジェクトを描画した後に正投影をオンにする方法です。
そして、これは私が3Dオブジェクトを描画した後、オルソでテクスチャをブレンドして描画する方法です。
Quad1はQuad2より少し大きく、Quad2の一部をカバーしています。両方のテクスチャには、RGBAとしてのアルファチャネルがあります。
問題は、Quad1とQuad2が3Dオブジェクトをアルファで正しくオーバーレイしますが、Quad1のアルファがQuad2の上にある場合は機能しないことです。RGBのみのようにQuad2の上に描画します。
どうすればこの問題を解決できますか?
android - glOrthofとglViewPortの違い
OpenGL-ESでは、設定の違いが何であるかについて混乱しています
それぞれのパラメータで。見える部分はすべて指定の座標(幅、高さ)に設定していると思います。どちらを使うべきですか?
android - 正射影行列の変更に関する問題
私はopenglesを試していて、画面上を移動するいくつかの単純な正方形を作成しました。
単純で、オブジェクトを画面に描画します(引き続き機能します)。ここで、タッチ入力に基づいて投影行列を変換することにより、画面をドラッグするのが好きになりました。以前のコードの上にこのコードを追加しました(オブジェクトを描画する前に)
updateGameは、MyPanel.getDiffX()からそれらを取得します。ここで、DiffXは、指がどれだけ動いたかを示します。
これで、コードを使用して投影マトリックスを変換すると、画面にオブジェクトが表示されなくなります(glClearカラーのみ)。誰かが何が起こっているのか知っていますか?行列を間違って使用していますか?
ios - OpenGL ES 2.0:このパースペクティブプロジェクションマトリックスが正しい結果をもたらさないのはなぜですか?
約2日前に、Model-View-Projection( "MVP")マトリックスを明示的に計算して、その動作を理解するためのコードを作成することにしました。それ以来、私が使用している射影行列のせいで、問題が発生しただけです。
iPhoneディスプレイを使用して、次の4つの角の頂点で表される画面中心の正方形を作成します。
OGLES 2.0を使用しているので、MVPをユニフォームとして頂点シェーダーに渡し、次に変換を現在の頂点位置に適用します。
今のところ、MVPを単純化してP行列にしました。以下に示すコードには、2つの射影行列がリストされています。1つ目は標準のパースペクティブ射影行列で、2つ目はオンラインで見つけた明示値射影行列です。
明示的な値マトリックスを使用する場合、正方形は画面の中央に正確な寸法で正確にレンダリングされます。透視投影行列を使用する場合、画面には何も表示されません。透視投影行列によって画面の中心に生成された位置の値を印刷しましたが(screenWidth/2, screenHeight/2, 0)
、それらは膨大です。明示的な値の行列は正しくゼロを生成します。
明示的な値行列は正射影行列だと思います-そうですか?私のフラストレーションは、パースペクティブプロジェクションマトリックスが機能しない理由を理解できないことです。
誰かがこの問題で私を助けてくれたら、私は非常に感謝しています。どうもありがとう。
クリスチャンラウの更新:
更新2
新しいMVPコード:
それでも画面の中心には何も表示されず、画面の中心の変換されたx、y座標はゼロではありません。
更新3
ts
上記のコードで代わりにの転置を使用すると機能します!しかし、正方形はもはや正方形に見えません。アスペクト比が設定されているように見えます。screenHeight/screenWidth
つまり、(短い)画面の幅に平行な長い寸法と、(長い)画面の高さに平行な短い寸法があります。
transpose(ts)
(a)転置が必要な理由と、それが有効な修正であるかどうか、(b)非正方形の次元を正しく修正する方法、および(c)使用するこの追加の行列がどのように適合するかを知りたいです。ビューポート*プロジェクション*ビュー*モデル*ポイントの変換チェーン。
(c)の場合:マトリックスが何をするか、つまり、範囲[-1、1]にどのように変換するかについてのChristianRauによる説明を理解しています。しかし、この追加の作業を別個の変換行列として含めるのは正しいですか、それともMVPチェーンの一部が代わりにこの作業を行う必要がありますか?
これまでの貴重な貢献をしてくれたChristianRauに心から感謝します。
更新4
「tsがどのように適合するか」についての私の質問はばかげていますね。要点は、頂点に画面座標を使用することを選択しているため、マトリックスが必要なだけです。最初から世界空間の座標を使用する場合、この作業は必要ありません。
すべてのあなたの助けをクリスチャンに感謝します、それはかけがえのないものでした:)問題は解決しました。
ios - iOS で OpenGL-ES 2.0 を使用して横向きの正投影を設定する正しい方法は何ですか?
これはすべてOpenGL ES 2.0にあります...
ゲームの 3D シーンの上に HUD を配置できるように、3D 透視投影と 2D 正射投影を組み合わせようとしています。
ゲームは横向きで実行され、デバイスの向きを処理する方法が本当に混乱しています。
適切な投影マトリックスを使用して 3D のものをレンダリングし、modelView マトリックスと照明を 90 度回転させて、3D シーンが正しい方向になるようにします。このビットはすべて正常に動作します。
私の問題は、2D プロジェクション マトリックスを適切に設定する方法がわからないため、デバイスが横向きで左側にホーム ボタンがある場合、原点が左上隅にあることです。
これが発生するように正射行列を正しく構築するにはどうすればよいですか? 私は現在これを使用しています
ただし、デバイスが縦向きでホームボタンが下部にある場合、これは原点を左上に配置するだけであり、デバイスを手で回転させると、すべてが横向きになります.
2D 射影行列を変更しようとする必要がありますか、それとも他に何かする必要がありますか?
opengl - 現代のOpenGLの正射影
最新のOpenGL技術のみを使用して正投影を設定したいと思います(つまり、即時モードのものは使用しません)。これに取り組む方法について、ウェブ上で矛盾する情報を見ています。
glMatrixMode(GL_PROJECTION)
何人かの人々はそれから電話してそしてそれから大丈夫だと言っていglOrtho
ます。これは過去に常に機能してきましたが、これが最新のOpenGLで非推奨になっているのではないかと思います。
もしそうなら、頂点シェーダーは今日の正投影を行うための標準的な方法ですか?GLSLは、正投影を設定するための便利な組み込み関数を提供しますか、それとも頂点シェーダーでその数学を自分で書く必要がありますか?
opengl - 深度バッファで OpenGL 正投影を使用するには?
glFrustum()
パースペクティブ モードを使用して 3D シーンをレンダリングしました。次に、2D オブジェクトを 3D シーン上に配置して、特定の 3D オブジェクトのラベルとして機能させます。gluProject()
2D ラベル オブジェクトを配置する位置を使用して 3D オブジェクトの 2D 位置を計算しました。glOrtho()
2D ラベル オブジェクトは、正投影モードを使用してレンダリングされます。これは完全に機能し、2D ラベル オブジェクトが 3D オブジェクトの上に移動します。
ここで、2D オブジェクトに az 値を与えて、深度バッファーを使用してシーン内の他の 3D オブジェクトの背後に隠すことができるようにします。2D オブジェクトに az 値を指定しましたが、深度バッファーによって非表示にする必要があることがわかっていますが、オブジェクトをレンダリングすると常に表示されます。
問題は、なぜ 2D オブジェクトがまだ表示されているのに非表示になっていないのかということです。
正射投影と遠近投影が互換性のない深度バッファー値を格納することをどこかで読みました。これは本当ですか?もしそうなら、どうすればそれらの間で変換できますか?
orthographic - 説明されているように投影するようにオルトグラフィックカメラを設定するにはどうすればよいですか?
投影を次のようにしたいと思います。
あれは、(x,y,z) -> (x-y/sqrt(2),y/sqrt(2)-z)
射影行列を見つける方法は?
opengl - glOrthoを使用して2D線グラフビューポートを自動化するための一般化された式
動的データに基づいて、openGLを使用して動的に2D線グラフを描画する必要があります。データが変化するため、グラフの最終的な描画も、X軸とY軸の両方の最大値と最小値が表示されるように調整する必要があります。私はglorthoを使用していくつかの方法を試しましたが、誰かが私にこれの公式を提案できますか?
私のx軸の最大値は10,000.0fで、Y軸の最大値は64,468.0fです(x軸のn y軸の最小値が約1.0fであると仮定します)
上記のパラメータを使用すると、グラフの最大値と最小値を表示できません
上記の値は、最大値が大きい場合に正常に機能します。
上記の例で最大値が1未満の場合、左側の値が1であり、同様に下部の値が1であるため、表示領域がクリップされていますか?