[OpenGL] Picking und Rotation / Skalierung



  • hi!

    ich habe mal wieder ein paar probleme! ich arbeite mit picking und das funktioniert auch alles ganz gut, jedoch nur, wenn ich das objekt nicht rotiere, verschiebe und/oder skaliere! worauf muss ich achten? meine picking funktion sieht im moment so aus (arbeite mit dem c++ builder):

    if(Button != 0&& Button != 2 && Shift.Contains(ssShift))
      {
        GLint viewport[4];
    
        glGetIntegerv(GL_VIEWPORT, viewport);
    
        glSelectBuffer(BUFSIZE, selectionBuffer);
        glRenderMode(GL_SELECT);
    
        glInitNames();
        glPushName(0);
    
        glMatrixMode(GL_PROJECTION);
        glPushMatrix();
        glLoadIdentity();
    
        gluPickMatrix((GLdouble) X, (GLdouble) (viewport[3] - Y),
                      1.0f, 1.0f, viewport);
    
        glOrtho(-GetOrtho*sx, GetOrtho*sx, -GetOrtho*sy, GetOrtho*sy, -10000, 10000);
        DrawScene(true);  //hier wird das objekt 'dargestellt'
    
        glMatrixMode (GL_MODELVIEW);
        glPopMatrix();
        glFlush();
    
        numOfHits = glRenderMode(GL_RENDER);
    
        collisionbool = true;
        MyResize(); /* MatrixMode, Viewport einlesen, Objectfunktion aufrufen*/
        Manipulate(); /*Objekt manipuilieren (skalieren, rotiere, verschieben) */
      }
    

    enddeckt jemand einen fehler? 😕 danke für die hilfe 🙂

    mr. blubbermann


Anmelden zum Antworten