問題タブ [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.
c++ - OpenGL カメラ - SetCursorPos(x,y);?
カメラを更新しようとすると問題が発生します。
マウスを使用してカメラ (カメラが見ている場所) のピッチとヨーを変更したいのですが、マウスをウィンドウの中央に配置したままにします。
問題は、マウスが原点に戻るように設定されているため、カメラが特定のポイントにスナップバックすることです。
原点から移動した距離でカメラを更新したいのですが、原点までの距離ではありません。
私がそれを取り出すと、それは素晴らしく機能しますが、マウスは窓の外に出ることができます.
c++ - OpenGL と gluLookAt を使用して球の周りを回転する
わかりましたので、C++ と OpenGL を使用してオブジェクトをクリック アンド ドラッグして回転させようとしています。私が持っている方法は、原点を中心に gluLookAt を使用することであり、球のパラメトリック方程式を使用して目の座標を取得しています (eyex = 2* cos(theta) * sin(phi); eyey = 2* sin( theta) * sin(phi); eyez = 2* cos(phi);)。クリックして水平方向に回転できるため、これはほとんど機能しますが、垂直方向に回転しようとすると、垂直方向に回転するのではなく、きつい円になります。カメラの位置と xz 平面に沿って 90 度の角度のベクトルを使用し、その外積をとることで、アップ ベクトルを取得しようとしています。私が持っているコードは次のとおりです。
私はこれに基づいていますが、うまくいかないので、代わりに自分のやり方を試しました。
opengl-es - LookAtのターゲット位置は、z=0またはz=1000または-1000のどちらであるかは関係ありませんか?
OpenGL ESでLookAtを試していますが、
2行目はターゲットの位置です...だから、z
からまたはに変更し0
た場合、何が異なって見えるのではないかと思います。それらはすべて同じであることが判明しました、それはなぜですか?1000
-1000
opengl - OpenGL の LookAt 関数の UP ベクトルとは正確には何ですか?
これは、z = 0 または z = 1000 または -1000 の場合、LookAt ターゲットの場所は問題ではありませんか?に関連しています。
私は試した
そして問題なく動作し、3 行目 (UP ベクトル) の最後の番号を次のように変更し0.8
ます。
それはまったく同じです...次に、3行目の最初の番号を次のように変更してみました0.8
:
これで、ビューは左に 45 度回転したようになります。この UP ベクトルはどのように機能しますか?
opengl - OpenGLのLookAtで、顔がほぼ空を向いている場合でも、目の前にあるものを見ることができるのはなぜですか?
重複の可能性:
OpenGLのLookAt関数のUPベクトルは正確には何ですか?
これは次のことに関連しています。OpenGLのLookAt関数のUPベクトルとは正確には何ですか。
呼び出しが次の場合:
iPadを目の前に持って、まっすぐ前を向いている椅子に座っていると、頭のてっぺんが空を上に向けています。したがって、(0, 1, 0)
3行目のように、UPベクトルの場合。に変更したらどう(0, 0.00001, 1)
ですか?つまり、私はほとんど横になっていて、今は顔と目が空を向いているということです。では、どうして結果が私が使用したときとまったく同じになるの(0, 1, 0)
でしょうか?
opengl - OpenGLで投影面を取得する方法
gluPerspective と glLookAt を使用して、投影マトリックスとビュー マトリックスを設定します。目の座標を取得したい場合は、gluLookAt の最初の 3 つの引数ですよね?
ただし、投影面、つまりワールド座標系でのスクリーンの位置を取得する必要があります。左下の角の点と右上の角の点を計算できれば、平面はすぐそこにあります。
この計算方法について誰かヒントをくれませんか?
c++ - OpenGL ウィンドウがモデルビューを切り取る
Qt と OpenGL (具体的には QGLWidget) を使用して、C++ でビリヤード ゲームをプログラミングしています。私は OpenGL の使い方をある程度知っていますが、あまり専門的ではありません。
私がやったこと:Qtウィジェット(ボタンなど)とQGLWidget(私自身の実装)を含むQtアプリウィンドウを作成します。
問題: このウィンドウにボールを描画して回転させることはできますが、ビューの縦横比が正しくありません + スペース全体を使用できないようです。
白い四角形は競技場です (寸法: float 座標で 1.4 x 2.7)
モデルを変換できますが、途切れているようです:
ビューを変換するとすぐに (関数については以下を確認してください)、モデルの一部が切り取られたように見えます。
これは長方形です (ボールはこれらの座標内で正しく描画されます):
OpenGL のサイズ変更機能:
そして最後に、ビューに関連するレンダー関数の一部:
c++ - Qt の OpenGL は赤い四角形を描画しません
QGLWidget
Qt アプリケーションで OpenGL を使用するために を使用しようとしています。
etcのサブクラスを作って、QGLWidget
それが動作するかどうかテストしようと思いました。
ただし、次のコードは期待どおりに機能しません。
私が想像したのは、赤い四角の中心を見ることです。代わりに、実行すると、正方形の中心を非常に短時間見ているように見え、その後ディスプレイが黒くなります。
私が間違っていることはありますか?私は他の場所で OpenGL を行っていません。上記の関数は、サブクラスの唯一の OpenGL コードです (今のところ、 と には何もありません::resizeGL()
) ::initializeGL()
。
qt - OpenGL -- gluLookAt を使用してマウス入力に応じてシーンを移動する方法
Qt で OpenGL を使用しておりQGLWidget
、基本的なマウスとキーボード駆動の対話を実装しようとしています。
たとえば、キーボードの矢印キーを使用してシーンを「パン」し、マウス ホイールを使用してシーンをズームし、マウスを使用してモデルを回転する必要があります。
パンとズームの実装方法はわかりましたが、回転の実装に問題があります。
これは私がこれまでに持っているものです:
したがって、基本的には初期gluLookAt
パラメータを設定し、2 つの配列 と を追加float camDelta[3]
しfloat lookAtDelta[3]
て、カメラの位置の変化と、ユーザーがシーンを操作するのに応じてカメラが見ている場所を追跡します。
マウス ホイールについては、次のようにします。
同様に、 では、左右にパンMyGLWidget::keyPressEvent
するためにデルタのフィールドを変更し、上下にパンするためにデルタを変更します。[0]
[1]
だから私の質問は、マウスでの回転をサポートするために似たようなものをどのように実装するのですか? カメラが見ている場所だけでなく、アップ ベクトルも何らかの方法で変更する必要があると推測しているため、ちょっと混乱していますが、それを行う方法について明確な考えがありません。
c++ - LookAt 実装の不正行為
LookAt( forward, up ) メソッドを実装することを楽しみにしています。
ウェブ上でいくつかの実装を見てきましたが、コードを分析すると、潜在的な不正行為が見つかりました...
私はそれらを最も簡単なものから最も難しいものまでリストします:
1) UP がゼロ ベクトルの場合、これは機能しません。
2) FORWARD がゼロ ベクトルの場合、これは機能しません。
3) UP と FORWARD が平行の場合、これは機能しません。
...
だから..このメソッドはどのように正しく実装する必要がありますか?
これが私が見つけたコード例です。