問題タブ [projection-matrix]

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 に答える
263 参照

c - 透視図の座標系を設定しますか?

錐台表示システムの背後にある概念を理解しています。ピラミッドのような形をしており、オブジェクトが中央に近づくにつれて、最終的に切り取られるまで小さくなります。ただし、OpenGL(ヘッドアップ:非推奨の機能は使用しません)などの表示投影を使用する場合は、次のように座標系を設定します。

オルソ例(左、右、下、上、近く、遠く);

それはすべて問題ありませんが、視点に関して言えば、物事は少し奇妙になります。

PerspectiveExample(field_of_view_y、aspect、near、far);

このような機能で座標系を設定するにはどうすればよいですか?!?左、右、下、上などを指定することはできません。遠近法は錐台投影のバリエーションにすぎないことを私は知っています...

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

c - OpenGL マトリックスの問題

私は NSOpenGLView をセットアップしており、うまく機能していますが、常にビューを完全に塗りつぶし、クリップされていない四角形を描画する必要があります (それは意味がありますか?)。サイズが常に 1100x850 ピクセルになるビューがあります。基本的に、私がやろうとしているのは、y 値 0.4 が常にオブジェクトをビューの一番上に、-0.4 が一番下に描画されるようにする方法を見つけることです。ある程度の遠近感も必要なので、できませんglOrtho

これを行う方法はありますか?

うまく説明できなかった場合は、次のように言います。

  • その中心線の x 値は常に 0.0 です。

  • 左の線の x 値は -0.55、右の値は 0.55 です。

  • 上の線の y 値は 0.4、下の線は -0.4 の値です

したがって、画面を完全に埋めるが、画面を離れないようにするには、次の頂点を持つ四角形が必要です。

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

opengl - OpenGLでMODELVIEWマトリックスを定義する方法

私はカメラキャリブレーションを行っていますが、内因性と外因性のパラメーターがあります。私は仮想カメラをほとんど持っておらず、それぞれに錐台を描く必要があります。射影行列(m [int] * m [ext] =射影行列)を見つけて、ほぼ解決しましたが、Modelview行列を見つける方法がまだわかりません...現在の角度錐台を見つけるために必要です。また、カメラのローカル座標系を描画します。

0 投票する
3 に答える
1742 参照

math - 画面左下を原点とする正射投影

私はpython OpenGLバインディングを使用しており、最新のopengl呼び出しのみを使用しようとしています。頂点を持つ VBO があり、頂点シェーダーに渡された正投影行列を使用してレンダリングしようとしています。

現在、次の値を使用して射影行列を計算しています。

私がここから得たそのコード:

正射影行列の式?

これで問題ないようですが、Origin を画面の左下隅に配置したいと思います。これは、マトリックスに適用できる関数なので、すべてが「うまく機能する」のでしょうか、それともすべてのオブジェクトを w/2 h/2 で手動で変換する必要がありますか?

補足:これが正しく機能すると、座標はピクセル位置と一致しますか?

私は最新の OpenGL 技術を使用しているため、gluOrtho2d または GL_PROJECTION 呼び出しを使用する必要はないと思います。

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

opengl - 透視投影行列: 水平方向の FoV とアスペクト比だけから垂直方向の FoV を計算する方法は?

呼び出し元によって指定された垂直視野とアスペクト比だけで (完全に問題なく) 動作する次の透視投影マトリックスを考えてみましょう。

これをサポートするためにこの関数の本体を拡張するにはどうすればよいでしょうか: 呼び出し元は、垂直 (fovY) または水平 (fovX) の視野を指定できますが、両方とアスペクト比を指定することはできません。この関数は、指定されたアスペクト比と fovX だけから不足している fovY をどのように計算できますか?

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

objective-c - OpenGLESがプロジェクションを追加

私はOpenGLESを学び始め、現在このチュートリアルを読んでいます

投影の追加の段落に到達しましたが、そこで立ち往生しています。

著者はでいくつかの変数を使用し、populateFromFrustumLeft...それらを説明していません。将来この関数を使用できるように、変数選択のロジックを理解したいと思います。

論理を理解するために私を助けてください!

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

matrix - この種のマッピングを行うThree.jsに射影行列を設定するにはどうすればよいですか?

以下のルールで説明されている3Dポイントから画面座標へのマッピングを行うThree.jsで投影行列を作成するにはどうすればよいですか?

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

android - OpenGL ES 2.0は、ランドスケープモードで画面をカットします

私はOpenGLを学び始めており、次のサイトを使用しています:http: //www.learnopengles.com/android-lesson-one-getting-started/

しかし、私はこの部分で問題が発生したようです(ポートレートモードでは正常に動作します):

しかし、横向きモードで三角形を(左または右に)移動しようとすると、三角形をいずれかの辺に移動すると、三角形が「切り取られ」ます(三角形全体が表示されません)。実際には画面の外にいるのに、画面の外にいるかのように振る舞われているようです。前述のように、ポートレートモードでは正常に機能するようです。

横向きモード(Galaxy Tab 2)では、高さは752、幅は1280です。

これは、ここで設定されているプロジェクトマトリックスと関係がありますか?

助けてくれてありがとう!

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

android - ネストされた glPushMatrix が機能しない (スタック サイズ 1?)

古い OpenGL ES 1 を使用する Android プロジェクトがあります。この種のネストされた呼び出しを使用しています。

エミュレーターと私の電話では正常に動作していますが、私のタブと兄弟のタブでは動作していません (オブジェクトの位置が間違っています)。私のテストによると、ネストされた glPushMatrix はサポートされていないようです。たとえば、スタック サイズが 1 の場合のように、最初の POP は前の PUSH 状態に戻るのではなく、最初の PUSH 状態に戻ります。ネストされた呼び出しを使用せずに回避策を試みたところ、問題なく動作しましたが、そのような解決策は次の作業を複雑にします。それは既知のことですか?一部のデバイスのスタック サイズは 1 だけですか? 少なくとも 32 かそこらであるべきだと思いました。どういうわけか検出可能および/または構成可能ですか? 何らかの方法でマトリックスを何らかの配列または別の構造にエクスポートして、独自のスタックを作成し、そこから手動でロードできますか? ありがとう。

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

c++ - 現在の射影行列に一致するglClipPlanesを作成するにはどうすればよいですか?

ユーザーが手動で回転、パン、ズームし、最後に目的のセクションに選択長方形を描画した空間内のポイントのコレクションをレンダリングしています。彼らがこれを行うとき、レンダリングモードを使用して選択した領域のポイントを見つける前に、呼び出しgluPickMatrixgluPerspectiveから投影行列を作成します。GL_SELECT

選択したエリアのポイントのみを表示したい。テストでは、各ポイントにブール値isSelectedがあります。正しいポイントが選択されているため、選択が機能することはわかっています。ただし、これを実現するにはポイントが多すぎるため、ユーザーの選択した長方形によって定義された直角プリズム(編集:錐台を意味しますglClipPlane)に対応する4つの平面を構築するために使用したいと思います。射影行列を設定した後、渡す係数をどのように導き出すことができますか?glClipPlane

今私はこれをやっています、しかしそれは結局すべてのポイントを切り取ってしまいます:

また、平面座標を正規化および/または否定しようとしましたが、それでもすべてのポイントがクリッピングされるようです。