.[ ČeskéHry.cz ].
openGL translation, rotation a suradnice

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
hybr1D



Založen: 02. 09. 2007
Příspěvky: 22

PříspěvekZaslal: 11. listopad 2013, 14:45:04    Předmět: openGL translation, rotation a suradnice Odpovědět s citátem

Zdravim.
Mam menší problém s mojim programom. Ide o to, že keď kliknem na obrazovku, má sa mi na danom mieste vykresliť guľa. Funguje to super, až kým nepohnem scénou (urobim Translate alebo Rotate). Potom mi vykreslí guľu na veľmi vzdialenom mieste alebo nevykreslí vôbec. Všetky matice sú rovnaké aj vo funkcii glDraw aj v openGLPos (kontroloval som ich). Z-tovu súradnicu som dal 0, lebo keď som ju počítal pomocou glReadPixels, nevykreslilo sa vôbec nič.
Tu je časť kódu:

kód:

private Vektor openGLPos(int x, int y)
        {   //prepocet suradnic kliku v okne, na suradnice v 3D OpenGL
 
            double outX, outY, outZ;    //vysupne suradnice
            float z = 0;
 
            Vektor win = new Vektor((float)x, (float)viewport[3] - y, z);
            unsafe  //pracujem s pointrami tak musim byt v unsafe mode
            {
                GL.glReadPixels(x, (int)win.Y, 1, 1, GL.GL_DEPTH_COMPONENT, GL.GL_FLOAT, (&outZ));  //zizkam Ztovu suradnicu
            }           
 
            //funkcia prepocita suradnice
            GL.gluUnProject((float)win.X, (float)win.Y, z, modelview, projection, viewport, out outX, out outY, out outZ);           
 
 
            //vratime prepocitane suradnice uz aj s posunom sceny a zoomo
            Vektor temp = new Vektor(outX, outY, 0); // outZ - zoom / 100
 
            return temp;
        }


 
        public override void glDraw()
      {
            //vykreslenie sceny
 
            GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
            InitGLContext();
            //GL.glLoadIdentity();
 
            GL.glPushMatrix();  //pushnem si maticu
 
            //posun
            GL.glTranslatef(xpos, ypos, zoom);
 
            //rotacia
            GL.glRotatef(xrot, 1.0f, 0.0f, 0.0f);
            GL.glRotatef(yrot, 0.0f, 1.0f, 0.0f);
 
            foreach (BodGL B in poleBodov)  //prejdem vsetky body
            {
                GL.glTranslatef((float)(B.bod.Pozicia.X * 100), (float)(B.bod.Pozicia.Y * 100), (float)(B.bod.Pozicia.Z * 100));    //nastavim sa na poziciu bodu
                //if (Math.Round((B.bod.Pozicia.Z * 100 + 10) + zoom) == 0) B.bod.Farba = Color.FromArgb(B.bod.Farba.R, B.bod.Farba.G, B.bod.Farba.B);    //zjasnenie bodov na aktualnej rovine zoomu
 
                VykresliAtrBod(B.Quad, B.bod.Priemer, B.bod.Farba, B.bod.Fill); //vykreslim gluSphere
 
                //if (Math.Round((B.bod.Pozicia.Z * 100 + 10) + zoom) == 0) B.bod.Farba = Color.FromArgb(B.bod.Farba.R,B.bod.Farba.G, B.bod.Farba.B);    //ztmavnutie bodov mimo akt. roviny zoomu
                GL.glTranslatef(-(float)(B.bod.Pozicia.X * 100), -(float)(B.bod.Pozicia.Y * 100), -(float)(B.bod.Pozicia.Z * 100)); //vratim sa naspet na povodnu poziciu
            }
 
            GL.glGetDoublev(GL.GL_MODELVIEW_MATRIX, modelview);
            GL.glGetDoublev(GL.GL_PROJECTION_MATRIX, projection);
            GL.glGetIntegerv(GL.GL_VIEWPORT, viewport);
 
            GL.glPopMatrix();   //popnem si maticu
 
      }


Prosím poraďte, kde robím chybu.

Ďakujem.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
hybr1D



Založen: 02. 09. 2007
Příspěvky: 22

PříspěvekZaslal: 13. listopad 2013, 16:09:47    Předmět: Odpovědět s citátem

Problem vyriešený. Mal som tam zle nastavené počiatoćné súradnice a tak to blblo cele.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna