問題タブ [glulookat]

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 投票する
3 に答える
2397 参照

c++ - OpenGL カメラ - SetCursorPos(x,y);?

カメラを更新しようとすると問題が発生します。

マウスを使用してカメラ (カメラが見ている場所) のピッチとヨーを変更したいのですが、マウスをウィンドウの中央に配置したままにします。

問題は、マウスが原点に戻るように設定されているため、カメラが特定のポイントにスナップバックすることです。

原点から移動した距離でカメラを更新したいのですが、原点までの距離ではありません。

私がそれを取り出すと、それは素晴らしく機能しますが、マウスは窓の外に出ることができます.

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

c++ - OpenGL と gluLookAt を使用して球の周りを回転する

わかりましたので、C++ と OpenGL を使用してオブジェクトをクリック アンド ドラッグして回転させようとしています。私が持っている方法は、原点を中心に gluLookAt を使用することであり、球のパラメトリック方程式を使用して目の座標を取得しています (eyex = 2* cos(theta) * sin(phi); eyey = 2* sin( theta) * sin(phi); eyez = 2* cos(phi);)。クリックして水平方向に回転できるため、これはほとんど機能しますが、垂直方向に回転しようとすると、垂直方向に回転するのではなく、きつい円になります。カメラの位置と xz 平面に沿って 90 度の角度のベクトルを使用し、その外積をとることで、アップ ベクトルを取得しようとしています。私が持っているコードは次のとおりです。

私はこれに基づいていますが、うまくいかないので、代わりに自分のやり方を試しました。

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

opengl-es - LookAtのターゲット位置は、z=0またはz=1000または-1000のどちらであるかは関係ありませんか?

OpenGL ESでLookAtを試していますが、

2行目はターゲットの位置です...だから、zからまたはに変更し0た場合、何が異なって見えるのではないかと思います。それらはすべて同じであることが判明しました、それはなぜですか?1000-1000

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

opengl - OpenGL の LookAt 関数の UP ベクトルとは正確には何ですか?

これは、z = 0 または z = 1000 または -1000 の場合、LookAt ターゲットの場所は問題ではありませんか?に関連しています。

私は試した

そして問題なく動作し、3 行目 (UP ベクトル) の最後の番号を次のように変更し0.8ます。

それはまったく同じです...次に、3行目の最初の番号を次のように変更してみました0.8

これで、ビューは左に 45 度回転したようになります。この UP ベクトルはどのように機能しますか?

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

opengl - OpenGLのLookAtで、顔がほぼ空を向いている場合でも、目の前にあるものを見ることができるのはなぜですか?

重複の可能性:
OpenGLのLookAt関数のUPベクトルは正確には何ですか?

これは次のことに関連しています。OpenGLのLookAt関数のUPベクトルとは正確には何ですか。

呼び出しが次の場合:

iPadを目の前に持って、まっすぐ前を向いている椅子に座っていると、頭のてっぺんが空を上に向けています。したがって、(0, 1, 0)3行目のように、UPベクトルの場合。に変更したらどう(0, 0.00001, 1)ですか?つまり、私はほとんど横になっていて、今は顔と目が空を向いているということです。では、どうして結果が私が使用したときとまったく同じになるの(0, 1, 0)でしょうか?

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

opengl - OpenGLで投影面を取得する方法

gluPerspective と glLookAt を使用して、投影マトリックスとビュー マトリックスを設定します。目の座標を取得したい場合は、gluLookAt の最初の 3 つの引数ですよね?

ただし、投影面、つまりワールド座標系でのスクリーンの位置を取得する必要があります。左下の角の点と右上の角の点を計算できれば、平面はすぐそこにあります。

この計算方法について誰かヒントをくれませんか?

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

c++ - OpenGL ウィンドウがモデルビューを切り取る

Qt と OpenGL (具体的には QGLWidget) を使用して、C++ でビリヤード ゲームをプログラミングしています。私は OpenGL の使い方をある程度知っていますが、あまり専門的ではありません。

私がやったこと:Qtウィジェット(ボタンなど)とQGLWidget(私自身の実装)を含むQtアプリウィンドウを作成します。

問題: このウィンドウにボールを描画して回転させることはできますが、ビューの縦横比が正しくありません + スペース全体を使用できないようです。

アスペクト比が間違っている 白い四角形は競技場です (寸法: float 座標で 1.4 x 2.7)

モデルを変換できますが、途切れているようです: モデルカットオフ

ビューを変換するとすぐに (関数については以下を確認してください)、モデルの一部が切り取られたように見えます。

これは長方形です (ボールはこれらの座標内で正しく描画されます):

OpenGL のサイズ変更機能:

そして最後に、ビューに関連するレンダー関数の一部:

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

c++ - Qt の OpenGL は赤い四角形を描画しません

QGLWidgetQt アプリケーションで OpenGL を使用するために を使用しようとしています。

etcのサブクラスを作って、QGLWidgetそれが動作するかどうかテストしようと思いました。

ただし、次のコードは期待どおりに機能しません。

私が想像したのは、赤い四角の中心を見ることです。代わりに、実行すると、正方形の中心を非常に短時間見ているように見え、その後ディスプレイが黒くなります。

私が間違っていることはありますか?私は他の場所で OpenGL を行っていません。上記の関数は、サブクラスの唯一の OpenGL コードです (今のところ、 と には何もありません::resizeGL()) ::initializeGL()

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

qt - OpenGL -- gluLookAt を使用してマウス入力に応じてシーンを移動する方法

Qt で OpenGL を使用しておりQGLWidget、基本的なマウスとキーボード駆動の対話を実装しようとしています。

たとえば、キーボードの矢印キーを使用してシーンを「パン」し、マウス ホイールを使用してシーンをズームし、マウスを使用してモデルを回転する必要があります。

パンとズームの実装方法はわかりましたが、回転の実装に問題があります。

これは私がこれまでに持っているものです:

したがって、基本的には初期gluLookAtパラメータを設定し、2 つの配列 と を追加float camDelta[3]float lookAtDelta[3]て、カメラの位置の変化と、ユーザーがシーンを操作するのに応じてカメラが見ている場所を追跡します。

マウス ホイールについては、次のようにします。

同様に、 では、左右にパンMyGLWidget::keyPressEventするためにデルタのフィールドを変更し、上下にパンするためにデルタを変更します。[0][1]

だから私の質問は、マウスでの回転をサポートするために似たようなものをどのように実装するのですか? カメラが見ている場所だけでなく、アップ ベクトルも何らかの方法で変更する必要があると推測しているため、ちょっと混乱していますが、それを行う方法について明確な考えがありません。

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

c++ - LookAt 実装の不正行為

LookAt( forward, up ) メソッドを実装することを楽しみにしています。

ウェブ上でいくつかの実装を見てきましたが、コードを分析すると、潜在的な不正行為が見つかりました...

私はそれらを最も簡単なものから最も難しいものまでリストします:

1) UP がゼロ ベクトルの場合、これは機能しません。

2) FORWARD がゼロ ベクトルの場合、これは機能しません。

3) UP と FORWARD が平行の場合、これは機能しません。

...

だから..このメソッドはどのように正しく実装する必要がありますか?

これが私が見つけたコード例です。