Keresés

Új hozzászólás Aktív témák

  • Mr_Oizo

    csendes tag

    Sziasztok!

    Olyan kérdésem lenne, hogy hogyan lehet a legújabb opengl fájlokhoz hozzájutni, mert én csak az 1.1-est találtam meg neten ami letölthető, de semmi újabbat :F .

  • Mr_Oizo

    csendes tag

    válasz sghc_toma #131 üzenetére

    Így van felépítve a talaj:

    glBegin (GL_QUADS);
    glNormal3f (0,0,1);

    glTexCoord2f (0.0f,1.0f);
    glVertex3f (0.0f,0.0f,offset);

    glTexCoord2f (1.0f,1.0f);
    glVertex3f (width,0.0f,offset);

    glTexCoord2f (1.0f,0.0f);
    glVertex3f (width,height,offset);

    glTexCoord2f (0.0f,0.0f);
    glVertex3f (0.0f,height,offset);
    glEnd();

    De, ha glShadeModel (GL_SMOOTH); -ra be van állítva, akkor nem úgy van hogy pixelenként képezi le a fényt, és elvileg jónak kellene lennie?

    Most így néz ki egyébként, hátul látszódik a spotlight eredménye:

    [link]

    Megpróbálom rácsra felosztani.

  • Mr_Oizo

    csendes tag

    válasz sghc_toma #129 üzenetére

    display list, vertex array, vertex buffer object - ezekről már hallottam, de akkor pontosan megnézem, hogy kell alkalmazni.

    A spotlightokat az utcai lámpáknak szeretném, azért kellene spot-tal megoldani.

    Olyan mintha túl nagy szögben világítaná meg, tehát nem fókuszál kis területre erősen a spotlight, úgy mint a linken amit lentebb beszúrtam. Pedig ennyire állítottam:

    Ja és a négyzet GL_SMOOTH-ra van állítva

    glLightf(GL_LIGHT2, GL_SPOT_CUTOFF, 10);

    A direction pedig ekkor jó:

    float direction[] = {10.0f, 10.0f, 0.0f};

    //spot direction
    glLightfv(GL_LIGHT2, GL_SPOT_DIRECTION, direction);

    Igazából valami ilyesmit szeretnék, de nem akarok összejönni:

    [link]

    Nem tudom hogyan lehetne a spotlighot jól beállítani, egy textúrázott négyzethez, ami a z-tengelyen 0-ban van, x, y-on pedig kb. (0,0), (19,19) között kifeszítve.

    Meg a spotlight-ot ha megtanultam használni, akkor a kocsik fényszóróját is tudnám vele imitálni, ami jól nézne ki.

  • Mr_Oizo

    csendes tag

    válasz sghc_toma #127 üzenetére

    Hm...... :) .

    Mindjárt kipróbálom. :DD Köszi a segítséget!

    Áááh! Ez nagyon király cucc :D . Tudtam, hogy van ilyen material-os dolog, de nem tudtam hogy ezt ilyen egyszerű megadni vele :)

    Köszi mégegyszer :R !

    Lenne még két kérdésem :B . Nem akarok pofátlan lenni, de ha már itt a fórum, akkor kihasználom :) .

    .3ds fájlokat töltök be a progiba, és erre van egy függvényem, amivel felépíti ezeket a betöltött object-eket GL_TRIANGLES-ből. Hogyan lehetne ezt optimalizálni, mert beolvasok kb. 100 kisebb objektumot, azokat mozgatom(kocsik egyébként :) ), és mikor kb. már 100-an vannak bent, akkor lemegy az fps ilyen 10-re :(( . A .3ds betöltőt a www.spacesimulator.net-ről töltöttem. Nem értem mitől lassul be ennyire, pedig elég jó kis gépem van, szóval nem itt lenne a gond sztem. Esetleg rakjak be forráskódot?

    Második kérdés:

    Próbálok spotlight-okat berakni a környezetbe, de nem igazán boldogulok vele. Nem azt csinálja, mint ahogy leírják.

    Van egy textúrázott négyzetem, ez a föld, ezen mennek a kocsik össze-vissza. Úgy, hogy a földnél most az z tengely van a felfele. Ide beraktam szépen spotlightot, de a direction-t elég érdekesen kell megadnom hogy megvilágítsa a földet. Elvileg úgy kellene megadnom a direction-t hogy (0.f, 0.f, -1.f), és ekkor világit merőlegesen rá a földre. De nem ezt csinálja. Hanem ahogy most megvan adva a direction, így világítja meg a földet, de ilyen furán. Itt a kód:

    //Spotlight

    float noAmbient[] = {0.2f, 0.2f, 0.2f, 1.0f}; //low ambient light
    float diffuse[] = {0.2f, 0.2f, 0.2f, 1.0f};
    float position[] = {17.0f, 17.0f, 0.2f, 1.0f};

    GLfloat specularLight[]={0.2,0.2,0.2,1.0}; // set specular light parameters
    glLightfv(GL_LIGHT2,GL_SPECULAR,specularLight);

    //GLfloat specularReflection[]={1.0,1.0,1.0,1.0}; // set specularity
    //glMaterialfv(GL_FRONT, GL_SPECULAR, specularReflection);
    //glMateriali(GL_FRONT,GL_SHININESS,128);
    glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE);

    //properties of the light
    glLightfv(GL_LIGHT2, GL_AMBIENT, noAmbient);
    glLightfv(GL_LIGHT2, GL_DIFFUSE, diffuse);
    glLightfv(GL_LIGHT2, GL_POSITION, position);

    //Spot properties

    // define the spot direction and cut-off

    float direction[] = {10.0f, 10.0f, -1.0f};

    //spot direction
    glLightfv(GL_LIGHT2, GL_SPOT_DIRECTION, direction);
    //angle of the cone light emitted by the spot : value between 0 to 180
    glLightf(GL_LIGHT2, GL_SPOT_CUTOFF, 3);

    //exponent propertie defines the concentration of the light
    glLightf(GL_LIGHT2, GL_SPOT_EXPONENT, 7.0f);

    //light attenuation (default values used here : no attenuation with the distance)
    glLightf(GL_LIGHT2, GL_CONSTANT_ATTENUATION, 1.0f);
    glLightf(GL_LIGHT2, GL_LINEAR_ATTENUATION, 0.0f);
    glLightf(GL_LIGHT2, GL_QUADRATIC_ATTENUATION, 0.0f);

    Köszönöm előre is a helpet! :R

  • Mr_Oizo

    csendes tag

    válasz sghc_toma #125 üzenetére

    Ez így elég egyszerű megoldás lenne :DD , csak elfelejtettem írni hogy textúrázottak a gömbök.

    Egyébként most azt találtam ki, hogy rakok be fényeket, és míg a négyzetet rajzolom ki, addig glDisable(GL_LIGHTING), aztán pedig glEnable(GL_LIGHTING), és így a négyzet szép világos, a többire pedig hat a fény.

  • Mr_Oizo

    csendes tag

    Sziasztok!

    Olyan kérdésem lenne megvilágítással kapcsolatban, hogy hogyan tudom azt megcsinálni opengl-ben, hogy van egy négyzetem például, körülötte meg gömbök, és a négyzet világos legyen, úgy hogy van egy fényforrásom(pl.: directional light) ami megvilágítja a gömböket és a négyzetet, de a négyzet sokkal világosabb legyen, mint amennyit ez a fényforrás ad, és az hogy a négyzet olyan világos, az ne hasson a gömbök megvilágítására.

    Olvastam valami gl_emission-ról, kipróbáltam de nem igazán azt csinálja amit szeretnék.

    Köszönöm előre is a segítségeket!

Új hozzászólás Aktív témák

Hirdetés