5

現在の位置からのオフセットを与えるだけでなく、現在のレンダリング位置を任意の値に設定できますか?

これは私が現在やっていることです:

gl.glTranslatef(3.0f, 0.0f, 2.0f);

「左に移動したい」と言うことができますが、「ポイント(2、1、2)に移動したい」とは言えません。後者を行う方法はありますか?

私はJOGLでOpenGLを使用しています。

更新

@Bahbar は次のことを提案しています。

gl.glLoadIdentity();
gl.glTranslatef(...);

これを行うと、6 行以外のすべてが消えます。理由はわかりません。ファー クリッピング プレーンが近すぎるという問題があるため、レンダリングするには遠すぎる可能性があります。

4

2 に答える 2

6

はい。単位行列から始めてください。

gl.glLoadIdentity();
gl.glTranslatef(...);
于 2010-09-17T18:40:12.267 に答える
0

はい、gluLookAtコマンドを使用してビューの位置を設定できます。OpenGL FAQを見ると、問題に最も関連性のある行がある質問があります。8.060シーン内のポイントの周りでカメラを「軌道」にするにはどうすればよいですか。

シーン/オブジェクトを変換/回転し、カメラを同じ場所に置いたままにすることで、軌道をシミュレートできます。たとえば、原点を継続的に見ながら、Y軸上のどこかに配置されたオブジェクトを周回するには、次のようにします。

gluLookAt(camera[0], camera[1], camera[2], /* look from camera XYZ */
          0, 0, 0, /* look at the origin */
          0, 1, 0); /* positive Y up vector */ 
glRotatef(orbitDegrees, 0.f, 1.f, 0.f); /* orbit the Y axis */ 
          /* ...where orbitDegrees is derived from mouse motion */
glCallList(SCENE); /* draw the scene */

カメラ位置を物理的に周回することを主張する場合は、表示変換で使用する前に、現在のカメラ位置ベクトルを変換する必要があります。

いずれの場合も、gluLookAt()を調査することをお勧めします(このルーチンをまだ使用していない場合)。

gluLookAt呼び出しに注意してください:作成者はカメラの位置を3つの値の配列に格納しています。同じことをすれば、あなたはあなたが望むように正確に絶対座標であなたの視点を指定することができるでしょう。

注:目の位置を移動する場合は、ビューの方向も指定する必要がある可能性があります。この例では、作成者は点(0、0、0)に目を向け続けることにしました。

この質問があなたがやろうとしていることに関連している可能性は十分にあります。JavaOpenGLバインディングのGLU.gluLookAtは何もしないようです

于 2011-02-24T17:02:10.123 に答える