問題タブ [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 投票する
0 に答える
4679 参照

matrix - Opengl ES 2.0 で透視投影を設定するとオブジェクトが消える

私は opengl-es 2.0 を使用するプロジェクトに取り組んでおり、透視投影の設定に問題があります。

透視投影を設定せず、オブジェクトからワールドへのマトリックス (モデル マトリックスとも呼ばれると思います) に頂点位置を単純に掛けると、画面上のオブジェクトは正しくレンダリングされ、引き伸ばされて表示されますが、私は知っています、それは射影行列が修正するものです。問題は、パースペクティブ マトリックスを設定して使用するたびに、画面上のオブジェクトが消え、どれだけ動かしても画面に表示されないことです。

Model-View-Projection マトリックスを取得するための計算は CPU で行われ、MVP-Matrix と実際のオブジェクト空間の頂点データとの最後の乗算は頂点シェーダーで行われます。これが、問題がプロセスにあると思われる理由です。その MVP-Matrix を取得します。一連の単体テストを実行しましたが、それらのテスト (および線形代数に関する私の基本的な知識) によると、これらの行列は正しく計算されており、1 日中インターネットで調査しても今のところ役に立ちません。:-/

これは、MVP-Matrix を計算するために使用するコードです。

このコードは一目瞭然だと思いますが、念のため、これらの Matrix4D は 4x4 マトリックスであり、それらに対して makePerspective/makeIdentity を呼び出すと、そのマトリックスがパースペクティブまたはアイデンティティ マトリックスになります。Matrix4D オブジェクトの getRawData() 呼び出しは、行列データを列優先表記の float 配列として返します。mMesh 変数は別のオブジェクトであり、draw が呼び出されると、すべての頂点とマテリアル データをシェーダーに単純に送信します。

makePerspective 関数のコードは次のとおりです。

getWorldMatrix() 呼び出しはこれを行います (いくつかの関連コードを使用):

最後に、頂点シェーダーはほぼ次のとおりです。

念のため、レンダリングされるオブジェクトは、3 つの軸すべてに 0.5f スケールが適用された位置 (0.0f、0.0f、-3.0f) にレンダリングされます。

何が間違っている可能性があるのか​​ よくわかりません。誰かが私が見逃している可能性があるものを見つけてくれることを願っています。シェーダーで頂点ごとの結果を取得できれば、これをデバッグするのがずっと簡単になります:-/。

補足として、私が知っている限り、ビューまたはカメラの行列を計算する方法について疑問があります。カメラを右に 100 単位移動します。私は左に 100 単位移動しますよね?

編集:より多くの情報を提供しようとしているだけで、誰かが私を助けることができるかもしれません. 上記のコードではモデル マトリックスが正しくないことに気付きました。主にマトリックスの順序が原因で、次のように変更したところ、モデル マトリックスは適切に見えます。

それにもかかわらず、まだ運がありません。私のテストデータから得られた行列は次のとおりです。

そして、これらすべてをテストするために私が使用しているメッシュは、原点を中心として、各軸で 1.0f から -1.0f までの単純な立方体です。私が知る限り、これにより、z 軸に沿って -2.0f の位置に近い限界 (0.0001f) に最も近い頂点を配置する必要があるため、立方体はカメラの前にあり、視錐台の内側にあります。誰かの手がかりはありますか?

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

opengl-es - 以下で説明するように、OpenGL プロジェクト マトリックスを設定してプロジェクションを取得する方法を教えてください。

z座標を使用せずに透視投影を模倣したいだけです(つまり、2D環境のみを使用しています)。y 軸が上に向かって増加するにつれて、x 軸は縮小する必要があります。

次のコードを用意しました。

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

opengl - 同じマーカー位置、異なる回転および平行移動行列-OpenCV

私はOpenCVを使用して拡張現実マーカー検出プログラムに取り組んでおり、同じマーカーに対して2つの異なる回転値と平行移動値を取得しています。

3Dモデルは、カメラを少し動かすと、制御なしでこれらの状態を自動的に切り替えます。上記の2つの状況のスクリーンショットを以下に追加します。Image#1を正しいものにしたいと思います。これを修正する方法と場所は?

AndroidのOpenGLESでOpenCVの回転と平行移動のベクトルを使用する方法をフォローしましたか?OpenGLのプロジェクションマトリックスを作成します。元:

画像#1 ここに画像の説明を入力してください

画像#2 ここに画像の説明を入力してください

追加

ティーポットをマーカー面に置く方法を誰かが提案してくれたら嬉しいです。回転行列を編集する必要があることはわかっています。しかし、それを行うための最良の方法は何ですか?

0 投票する
4 に答える
22013 参照

3d - Three.JSは、y軸がz軸になるように投影を回転させます

従来、3D投影では、Y軸は「上下」を表す軸です。その軸がZ軸であるとして、他のエンジンでそれを考えることを学びました。私が疑問に思っていたのは、Three.JSにZ軸を「上/下」軸にする方法があるかどうかでした。もしそうなら、それに何か影響はありますか?

これが私が欲しいものの図です: ここに画像の説明を入力してください

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

image-processing - 2D 座標から円筒座標への画像変換

Jpeg 画像 (その座標 (x,y)) を円柱座標に変換したいと思います。

これを直接実行できるopencvの関数はありますか? または、opencv のどの関数を使用して独自の関数を作成できますか??

2 次元座標、3 次元座標、円筒座標の間で混乱しています。誰かがこれについて簡単に議論できますか?

2D を 3D に変換する数学アルゴリズムはありますか? 2次元から円柱座標? 3D から円筒座標へ?

このトピックに関する以前の投稿を読みましたが、理解できません..

画像処理のコースを受講したことはありませんが、急いで本を読んでいます.経験と他のプログラマーのコードを勉強することで学びます..ソースコードは非常に高く評価されます..

みんなのおかげで、私の初歩的な投稿でごめんなさい、、

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

xna - KinectRGBカメラの遠近法に一致する投影およびビューマトリックス

Kinect RGBカメラと一致させるために、XNAレンダリングの投影およびビューマトリックスを設定するための正しい値を知っている人はいますか?

たとえば、スケルトンヘッドのジョイント座標が(X、Y、Z)の場合、3D空間でこれらの座標に球を描画すると、レンダリングはRGBイメージのヘッドとオーバーラップする必要があります。

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

r - QR分解、SVD(およびコレスキー分解?)を介して射影/ハット行列を計算します

PRで任意の N x J 行列の射影行列を計算しようとしていますS

私は次の関数でこれを実行しようとしています:

しかし、これを使用すると、次のようなエラーが発生します。

これは、 r-helphereなどの多くの場所で説明されているように、数値のアンダーフローおよび/または不安定性の結果であると思いますが、SVD または QR 分解を使用して問題を解決したり、この既存のコードをアクション。システムとしてソルブを書くことである提案されたコードも試しました:

しかし、それでもうまくいきません。任意の提案をいただければ幸いです。

直交ダミー変数の行列でこれをテストしようとしたが、まだ機能しないという理由だけで、行列が可逆であり、共線形性がないことはかなり確信しています。

また、これをかなり大きな行列に適用したいので、きちんとした一般的な解決策を探しています。

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

math - 正射影行列が機能しないのはなぜですか?

直交投影で平面 (z=0) にあるいくつかのクワッドをレンダリングしようとしています。正射影行列の公式を読んだ後、射影行列を設定しましたか? しかし、私は何か間違ったことをしたと思います。

私の最初の試みは次のマトリックスでした。W と H は、目的のビューポートの幅と高さで、次の例では 640x640 です。

左上隅が (0,0,0) にあるクワッドをレンダリングしたときに得られたものは次のとおりです。

ダメ

垂直に反転したため、マトリックスを次のように変更しました。

私が得ました :

より良い


その後、クワッドを動かそうとしましたが、結果は予想外でした。3D 空間の X と Y をビューポートの X と Y に合わせたかったのです。ただし、クワッドを X 軸に沿って移動すると、次のようになります。

痛い


Y 軸に沿って移動すると、同様に予想外の結果が得られました。

痛い痛い


3D 空間の X 軸と Y 軸がビューポートの軸と一致するように行列を修正するにはどうすればよいですか? よろしくお願いします。

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

orthographic - 説明されているように投影するようにオルトグラフィックカメラを設定するにはどうすればよいですか?

投影を次のようにしたいと思います。

3軸投影

あれは、(x,y,z) -> (x-y/sqrt(2),y/sqrt(2)-z)

射影行列を見つける方法は?

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

ios - iPad 2 back-facing camera field of view

I want to render virtual content over the camera image from the back-facing camera of the iPad 2. To achieve this, OpenGL ES is used to transform the content into the correct screen coordinates.

The problem is the field of view parameter.

There were several posts about iPhone or the iPad 1; however, I couldn't find one yet for iPad 2.

What is the field of view of the iPad 2 in landscape 16:9 HD mode?