2017-04-18 22 views
1

私はLWJGLで作業していますが、投影行列をスケーリングした後にタイルを選択することを検討していますが、わかりません。私はJOMLを線形代数ライブラリに使用しています。射影行列は、まずOrt​​ho変換が適用されてから、プレイヤーの位置に変換され、最後にスケーリングされます。すべてが拡大されているので、投影行列を拡大縮小すると、マウスが正しいタイルを選択しなくなりました。投影行列のスケーリングと平行してカーソル位置を変換する方法OpenGL

float cursorX = input.getCursorPosX() + getX(); 
float cursorY = input.getCursorPosY(true) + getY(); 
cursorX *= (1/cameraScalar); 
cursorY *= (1/cameraScalar); 

最初の2行はGLFWからカーソルを取得し、それにプレイヤーの位置を追加します。これは、マウスの位置を補正する私の試みでした。 3行目と4行目はカメラスケールの逆数だけを掛けます。

答えて

0

私はJOMLに精通していないですが、あなたは何をしたいのための一般的なアプローチは、このようなものです:キューブ座っているシステムを、座標のOpenGL画面にピクセル単位での実際の画面COORDSを変換

  1. 長さ2の側面と(0,0,0)で(おそらくY軸を反転する必要があります):世界にcoordsの(がscreenX、screenYの、1)と

    float screenX = 2.0f * mouseX/screenWidth - 1.0f; float screenY = 1.0f - 2.0f * mouseY/screenHeight;

  2. プロジェクト画面ベクトルを使用して投影マトの逆数IX(proj):

    Vector3 screen = new Vector3(screenX, screenY, 1); Vector3 world = proj.inverse().mul(screen);

  3. world.xworld.yが正しい世界が含まれているがJOMLはGLUの "unproject" 機能と "unprojectRay" の追加を提供

0

を調整します。

関連する問題