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

iphone-sdk-3.0 - glOrtho()に相当するOpenGL ES 2.0?

私の iPhone アプリでは、計算のために 3D シーンを画面の 2D 座標に投影する必要があります。私のオブジェクトは、さまざまな回転、平行移動、およびスケーリングを経ます。したがって、最初に頂点に ModelView 行列を掛ける必要があると考え、次に直交射影行列を掛ける必要があると考えました。

まず第一に、正しい軌道に乗っていますか?

モデル ビュー マトリックスはありますが、射影マトリックスが必要です。ES 2.0 に相当する glOrtho() はありますか?

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

opengl - OpenGL-正射影行列、glViewport

これらがどのように機能するかについて頭を悩ませています。まず、2Dゲームでは、投影行列をオルソとして設定し、左、右、上、下をウィンドウに一致させる必要があります。しかし、ウィンドウのサイズが変更された場合、投影行列ではなく、glViewportを変更する必要がありますか?また、アスペクト比を維持するにはどうすればよいですか?

私がそれをよりよく理解できるように、誰かが2D正書法ゲームでこれら2つの目的を説明できますか?

OpenGLが2Dセットアップで多くの役に立たないことをしているように感じます。画像がすでに存在する場合にフラグメントをラスター化して計算し、頂点座標をNDCに変換して、glViewportによって既に存在する場所に変換し直します。

また、レガシーフリーのOpenGLで、glViewportが行う独自の計算ではなく、独自のマトリックスを作成する必要があるのはなぜですか?

ありがとう。

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

iphone - OpenGL ES 2.0(特にiPhone用)のレンダリングが少しずれています。最良の推測は、それが射影行列の問題だということです

そこで、O'reillyのiPhone 3Dプログラミングを購入し、そこにあるコードのバグであると私が信じているものを見つけました。しかし、私は問題が何であるかを理解することができません、そして私がそうしない限り、私は自分のコードで前進することができません。

適切なコードと思われるものをこの投稿に貼り付けますが、幸いなことに、すべてのコードはオンラインで入手できます: http ://examples.oreilly.com/9780596804831/HelloCone/

私が抱えている問題は、OpenGL ES 2.0レンダラーにあり、ES1.1レンダラーには表示されません。

だから私が気付いたのは、コーンが正確に正しい位置にレンダリングされないということです。これをテストするために、ModelViewMatrixを変更して、FrustumNear平面上に正確にレンダリングしました。したがって、コーンは完全に2つにカットされているように見えるはずです。ES 1.1レンダリングでこれを行うと、これが当てはまります。OpenGLES 2.0で同じことを行うと、そうではありません。コーンは大部分がそこにありますが、わずかに削られています。つまり、それは、fustrumの近くの顔に正確に着陸していません。

射影行列が作成および設定される初期化コードは次のとおりです。

そして、これがレンダリングコードです。ご覧のとおり、ModelVieMatrixを変更して、錐台の近くの面の左下隅に円錐を配置しました。

mat4 rotation(m_animation.Current.ToMatrix()); mat4 translation = mat4 :: Translate(-1.6、-2.4、-5);

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

projection - 斜めの遠近法 - 処理中の射影行列

斜めの投影 (キャビネットまたはキャバリエ) で 3D のものをレンダリングできるようにするために、処理を拡張したいと考えています。camera()、perspective()、ortho() メソッドのソースを調べた後、正射投影を設定し、PGraphics3D#camera マトリックスを適切な値に調整して部分的に成功させることができました。

これにより、正しい遠近感が得られますが、表面の塗りつぶしはありません。カメラと ortho メソッド呼び出しのいずれか、またはその両方を削除すると、後で上書きされる同じマトリックスで camera(...) が動作すると予想されますが、画面は空です。

さらに、PGraphics3D のマトリックス化 (camera、modelView、projection) について少し混乱しています。OpenGL は 2 つのマトリックス スタック (modelView とプロジェクション) を保持しますが、ここには 3 つ目のスタック (カメラ) があります。これらの行列の違いと関係に光を当てられる人はいますか?

これは、いつどれを使用/設定するかを知るのに役立ちます。

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

opengl-es - OpenGL で 2D (オルソ) の上に 3D (フラスタム) を描画できない

背景画像 (正射投影) の上に錐台投影を使用していくつかのメッシュをレンダリングしようとしています。私が何をしても、背景画像はシーンの上にあり続けます (メッシュを隠します)。

少しテストしてみました - 同じ射影行列で両方を正しい順序でレンダリングすると、背景画像がメッシュの背後にありました。

これらは射影行列と深度バッファ初期化です:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); でバッファーをクリーニングしています。

最後にもう 1 つ..GL_DEPTH_TEST を無効にすると、背景が最初に呼び出されるため、メッシュが背景画像の前に描画されます..

Depth-Buffer または Projection マトリックスのどちらがこの問題を引き起こしているのかわかりません.. screenWidth=960 および screenHeight = 640 のマトリックスの値:

私は何を間違っていますか?アミール。

編集:これは、正投影で画像を描画する方法です:

これは、錐台投影を使用してメッシュを描画する方法です。

0 投票する
5 に答える
3759 参照

opengl-es - Projection および ModelView マトリックスから CATransform3D を取得する方法は?

すべて、

特定のモデル ビュー マトリックスと特定の投影マトリックスに対して OpenGL-ES を使用して 3D モデルを描画する iphone プロジェクトがあります。3D モデルを CALayer に置き換える必要があったため、モデル ビュー マトリックスの値を CATransform3D 構造体に入れ、 に割り当てましたlayer.transform。それはうまく機能し、レイヤーが表示され、期待どおりに画面上で移動しましたが、しばらくして、レイヤーの動作が十分に正確ではないことに気付き、射影行列を考慮する必要があります。そして、問題が発生しました.2つのマトリックスを単純に連結すると、レイヤーが奇妙に見えるか(遠く離れているため、約300であるはずですが、非常に小さく、約2ピクセルです)、まったく見えません. どうすれば解決できますか?

コードの一部は次のとおりです。

どんな助けでも大歓迎です。

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

xna - 射影行列を理解する

投影されたベクトルの値の範囲を理解しようとしています。MSDNの言うことと矛盾しているようです。

以下のコードは、色付きの三角形を出力します。三角形が丸見えです。頂点が投影された後、次のことが当てはまると思います。

X と Y は -1 から 1 の範囲です。Z は 0 から 1 の範囲です。

ここからこの情報を入手しました:http://msdn.microsoft.com/en-us/library/bb195665.aspx

ただし、ビューと射影行列の積を使用して三角形の頂点を手動で変換すると、次の値になります。

{X:1,8 Y:0 Z:3,991996} {X:0 Y:3 Z:3,991996} {X:-1,8 Y:0 Z:3,991996}

三角形が完全に表示されているのに、値が表示範囲外になるのはなぜですか?

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

actionscript-3 - 透視投影行列を使用してオブジェクトのスケールを計算するにはどうすればよいですか?

私は現在、フラッシュで小さな3Dパーティクルエンジンを構築しており、スプライトを使用しています。

各スプライトの位置を設定するには、以下のprojectVector関数を使用しています。(viewTransformマトリックスは、パースペクティブプロジェクションマトリックスと連結されたパーティクルワールドマトリックスです)

これは非常にうまく機能し、スプライトを正確に配置する必要があります:D私が抱えている問題は、カメラからの距離に基づいて各パーティクルのスケールを計算する方法を理解しようとしていることです。

透視投影行列を使用していなかった場合、通常は次のようにします。

エースとなる透視投影行列を使用して「scaleRatio」を計算する方法を教えてくれる人がいたら

ありがとう!

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

c# - xnaの斜め投影

xnaフレームワークで斜め投影(http://en.wikipedia.org/wiki/Oblique_projection )を実現しようとしています:

ご覧のとおり、正投影と斜め投影を乗算するだけです。

私が得るものはこれです:

http://imageshack.us/photo/my-images/835/oblique1.png/

基本的には、正射投影がどのように見えるかを示しますが、奇妙なファー クリッピングがいくつかあります。

適切な斜め投影を実現するにはどうすればよいですか? 事前にThx

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

matlab - 透視投影結果の最適化

透視投影を使用して 2 次元平面に投影する必要がある座標系に 3 次元モデルがあります。この投影方程式 C*(RT * P') を使用しました。ここで、C はキャリブレーション行列です。

px と py は原点の座標です。両方をゼロで配置します。R は回転行列で、T は平行移動行列です。両方を表す 1 つの行列に両方を配置し、3 メートルの平行移動値を使用しました (ピクセル値で) : 約 9448.82、この変換が正しいかどうかはわかりません) Z 軸で、Y 軸で 1 メートル、f は焦点距離で、使用した値はわかりませんが、次の式で計算しました: f= (画像の幅) * (画像の焦点距離) / (7.81) 、カメラのブランドのウェブサイトから 7.81 の値を取得しました。これは、カメラの内部パラメーターであると想定されているためです。これが正しいかどうかはわかりません。 ここに画像の説明を入力

これは、投影しようとしているモデルのスクリーンショットです。

ここに画像の説明を入力

これは投影後のモデルです... X軸に沿ってスケーリングされているように見えますが、まったく同じモデルであるとは感じられず、いくつかの塗りつぶしアルゴリズムによってポイント間のギャップを埋めた後: ここに画像の説明を入力

これが結果です。元のモデルとは異なります...問題がどこにあるかについて何か助けてください。私はそれを修正できます..ありがとう:)