問題タブ [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.
android - glulookat は移動後に「リセット」されます (android の場合)
ここに私の問題があります:私はアンドロイドでビリヤードゲームを作っていて、テーブルの中心を中心にカメラを自由に回転させたいと思っています。問題は、動きを止めると、同じものしか何度も見ないため、glulookat がリセットされたように見えることです。誰かがこれを解決する方法、または私がやりたいことを行う別の方法を知っていれば、本当に感謝しています
これは私のレンダラークラスです:
アクティビティ クラスの onTouch メソッドは次のとおりです。
android - Android OpenGL はエミュレーターでは動作しますが、スマートフォンでは動作しません
レンダラーには次のコードがあります。
の現在のコードを使用するonDrawFrame
と、エミュレーターには完璧に機能しますが、電話でSurfaceView
は空白で何も得られません。GLU.gluLookAt(); を使用する必要がある投稿を見つけました。gl.glLoadIdentity(); の代わりに それを行うと(onDrawFrameでコメントされているコード)、機能し、背景を取得しますが、電話でもエミュレーターでもテクスチャが読み込まれません。それらを読み込んでアプリを動作させるにはどうすればよいですか?
EDIT1:関数のGLU.gluPerspective(gl, 45.0f, (float)w / (float)h, 0.1f, 100.0f);
行にコメントを付けたonDrawFrame
ところ、テクスチャが表示されるようになりましたが、数秒後にプログラム強制が閉じます。
次の LogCat エラーが表示されます。
それが何を意味するのでしょうか?
opengl - この四角が画面の中央にないのはなぜですか?
画面の中央に正方形が表示されることを期待して、いくつかのコードを書きましたが、代わりに、正方形が画面の上部近くの縦横比で少し左に表示されます。
別のアスペクト比の場合:
私のコードの関連部分は次のとおりです。
0,0,0 は画面の中央にあるはずではありませんか? gluLookAt は、指定した座標を画面の中央に配置することになっていませんか?
opengl - glu.LookAt は、任意の垂直軸方向の傾斜オーバーヘッド カメラ用です。
[2012 年 9 月 23 日編集] FPS コントロール (機銃掃射、方向転換) をトップダウンの視点から想像してみてください。ここで、プレイヤーが画面全体を回転させて、常にモニターの上部を向くようにすると想像してください。ここで、これを投影する「カメラ」を想像してみてください。これは常に、プレイヤーの向きに対して上下 10 フィートです。これは、カメラが 45 度の角度で風景を見下ろし、プレイヤーが向きを変えると回転することを意味します。これに必要なコードを把握しようとして頭がおかしくなっています。これは、これまでのところさまざまな結果が得られたものです。
Update_Camera プロシージャで行っていることの概要を次に示します。
1) カメラを一時的に 10 フィート後方に移動します (カメラはプレーヤーに緩やかに追従します)。
2) 3 点を計算します。1 つはプレイヤーの位置、つまりカメラのターゲットです。2 番目と 3 番目は移動したカメラの位置で、一方はプレーヤーを中心にわずかに時計回りに、もう一方はわずかに反時計回りに回転しています。
3) ステップ 2 の 3 点を使用して「上」ベクトルを計算します。
4) glu.LookAt を使用して、「カメラ」を適切に配置および方向付けします。
これは最初はうまく機能しているように見えますが、カメラを低くしたり、プレイヤーからの距離を長くしたりすると、物事がゆがみ始めます。カメラがズームインして表示され、風景の垂直スケールが拡大して表示されます。ランドスケープに平行にレンダリングされたスプライトの四角形も、カメラが真上にあるかのようにレンダリングされますが、カメラが下がるにつれて遠近感が増してレンダリングされる必要があります。何が欠けている可能性がありますか?
opengl - gluPerspective、glViewport、gluLookAt、およびGL_PROJECTIONおよびGL_MODELVIEWマトリックス
元の質問
「gluPerspective」、「glViewport」、「gluLookAt」を使用してカメラと画面を操作したいと思います。
どのマトリックスモードにどの機能を適用しますか?そして、私はどのような順序でそれらを使用する必要がありますか?
たとえば、画面とカメラを次のように設定しようとしています:(しかし機能していません!)
私はオンラインドキュメントを探し回っていましたが、機能を理解していますが、どこにどのような順序で配置するかではありません。
今度いつか...
数か月後のことですが、OpenGLでレンダリングするために使用するシステムを表示するためのクイック編集を追加しています。これは、将来この質問を見る他の人を助けるためです。
私は主に2つの方法を使用します。
方法1:
このメソッドは、すべてをグループ化します。
これにより、ウィンドウ内の領域全体にレンダリングするためのビューポートが再作成されます。sfmlを使用すると、window.width()やwindow.height()のようなもの、または使用するウィンドウツールキット(glut、glfw、sdlなど)に応じて同様のことを行うことができます...
「glOrtho」、「gluPerspective」、「glFrustrum」の3つから1つを選択する必要があります。'gluOrtho2D'もありますが、注意して使用してください。(私は自分で近距離平面と遠距離平面を「glOrtho」で指定することを好みます。)「...」を関数の引数に置き換える必要もあります。
方法2:
2番目の方法は上記と同じですが、最初のステップを別の関数に移動します。次に、ウィンドウのサイズ変更イベントを検出して、この関数を呼び出す必要があります。glutを使用すると、コールバックを指定できます。SFMLを使用すると、ウィンドウのサイズが変更されたときにイベントを検出できます。SDLの仕組みを忘れましたが、似ています。glfwがどのように機能するかはまだ学びません。
うまくいけば、それはあなたを助けるでしょう。
一部のOpenGL初心者(おそらく私自身が一度に含まれている)は、PROJECTIONマトリックスでカメラの平行移動を指定しようとします。これをしないでください-私はそれが照明やおそらく他のものを台無しにすることに向かいます。
opengl - gluLookAt ベクトルと FPS スタイルのカメラ
EYE、DIR、UP の 3 つのベクトルを更新して、FPS スタイルのカメラを実装しようとしています。これらのベクトルは、gluLookAt で使用されるものと同じです (gluLookAt はカメラの位置、カメラが見ている方向、およびアップ ベクトルによって指定されるため)。
私はすでに左右と上下の機銃掃射の動きを実装していますが、静止したままカメラを周りを見回すための背後にある数学を理解するのに苦労しています. この場合、EYE ベクトルは同じままですが、DIR と UP を更新する必要があります。
以下は私が試したコードですが、正しく動作していないようです。助言がありますか?
回転メソッドは、軸を中心に角度を回転する回転行列を作成します。
--
編集:これを編集しました(「dir」を「center」にも切り替えました)が、それでも機能しませんでした。左右に回転させようとしても何も起こりません。上下に回転しようとすると、オブジェクトが消えます。
c++ - gluLookAt はどのように機能しますか?
私の理解から、
次と同等です。
しかし、ModelView
マトリックスを印刷すると、への呼び出しがglTranslatef()
正しく機能していないようです。コード スニペットは次のとおりです。
eye
ベクトルにどのような値を使用しても、または
300, 0, 0
平行移動ベクトルは同じですが、コードの順序が逆順であるため、最初に実行し、次に 2 つの回転を実行する必要
があるため、意味がありません。さらに、回転マトリックスは、(ModelView マトリックスの) 変換列から完全に独立しています。この奇妙な動作の原因は何でしょうか? 目のベクトルを使用した出力は次のとおりです。
0, 300, 0
0, 0, 300
glTranslatef
(0.0f, 300.0f, 0.0f)
T
列は(0, -300, 0)
! それで、誰かがこれを説明するのを手伝ってくれますか?
http://www.mesa3d.orggluLookAt
からの実装
opengl - 定義済みのパスに沿ってオブジェクトを移動する
数人の友人と私は小さなアニメーション セグメントをコーディングしようとしています。そこで、「プレイヤー」が放棄された鉱山をカートで移動する、ある種のホラー ハウス ツアーを作成することは、良い、まだやや単純なプロジェクトであると判断しました。
円や直線を作るのはちょっとつまらないので、「ちょっと」複雑なモーションを作ることにしました。移動するパスとして機能する単純な頂点ストリップを使用して .obj をインポートできると考えました。もちろん、このオブジェクトは画面に描画されません。そこで、このパスのインポートを処理する Trayectory クラスを作成しました。パスをインポートするために使用するコードは次のとおりです。
ただし、2 つの小さな問題があります。
- 頂点ストリップを使用しているため、法線を割り当てることができません。gluLookAt() で使用する法線を計算する方法はありますか?
- オブジェクトをレンダリングするとき、それを頂点リストの頂点に変換し、そのルックアットを行の次の頂点に割り当てます。ただし、これにより、.obj の頂点が必ずしも正しいとは限らないという問題が発生します。それらを注文する方法はありますか?それぞれの頂点に最も近い頂点を計算し、バブル ソートのようなソートを実行できると考えました。しかし、もっと簡単にできるでしょうか?
opengl - gluLookAt グリッチ
壁に接する 2 つの接線球で構成されるオブジェクトを描画しました (下のスキーマ)。gluLookAt() を使用して、カメラを x ポイント (最初の球の中心) に設定し、y ポイント (2 番目の球の中心) を見ているので、実際には壁に沿って見えます。しかし、その後、壁の内側が少し見えます(']' の一部)。
問題が何であるかを知っている人はいますか?
観察: 球体を壁から少し離すとグリッチは消えますが、球体が壁に非常に近いときにグリッチが存在する理由がわかりません。
opengl - gluLookAt なしでシーンではなくカメラを回転する
歩く地面を表すグリッドを作成しました。
ビューを回転/移動するために矢印キーをリンクしました。
z_trans は z の平行移動、y_angle は glRotatef() の y 軸の回転です。
「キャラクター」が前に歩いて左右に曲がってから、彼が向いている方向にまっすぐ歩き続けることができます。唯一の問題は、原点 (0,0,0) から離れると、カメラではなく原点の周りで回転が発生することです。したがって、原点から 100 ユニット離れている場合、キャラクターは基本的に半径 100 の円のパスをたどります。
gluLookAt を使用せずに、これを実装する方法を知っている人はいますか? 完全に困惑し、それを理解しようとしてここに2時間座っていました。
完全なコード: