RenderMode?



  • Hallo Leute,

    ich habe am Wochenende mein Objekt mit der Beleuchtung versehen. Soweit alles ganz klar und sieht auch supi aus. Nun aber folgendes Problem: Das Objekt ist nicht glatt, das heisst, man kann die einzelnen Polygone erkennen.

    Wie kann ich das beseitigen. Hat das etwas mit glRenderMode zu tun?

    Anne.



  • Bist du die Anne von der Homepage hier?
    http://www.akreft.de/

    Ja oder nein?



  • wenn ja, darf ich dich mal kurz anficken??



  • dazu müssten wir zuerst wissen um was für ein objekt es sich handelt bzw. ob du normalen per polyon oder per vertex berechnest. mit dem rendermode hat es imho nichts zu tun. es sei denns du hast auf wireframe umgestellt 🙂



  • Die hast für jedes Vertex einen Normalvektor nehme ich an, oder?
    Außerdem muß du glShadeModel(GL_SMOOTH) setzen.



  • Ich find' es nicht gut, daß renderMan einfach so grundlos ignoriert wird... 🤡



  • das zweite war ich nicht!!!
    das war jemand anderers der mich gefaked hat! 😡👎



  • Hm... man kann direkt beim Rendermode auf Wireframe umstellen???
    Kann mir das vielleicht jemand kurz beschreiben?



  • dazu müssten wir zuerst wissen um was für ein objekt es sich handelt bzw. ob du normalen per polyon oder per vertex berechnest. mit dem rendermode hat es imho nichts zu tun. es sei denns du hast auf wireframe umgestellt

    Mein Objekt besteht aus tausenden von dreiecken. Die Normalen werden per Vertex berechnet. Dann habe ich jedem Dreieck die Normale zugeordnet. Das sieht dann bei mir ungefaehr so aus:

    //Normale
                                    glNormal3d (    Normale_x_End[Init_d],
                                                    Normale_y_End[Init_d],
                                                    Normale_z_End[Init_d]);
                                    //Punkt1
                                    glVertex3f (    Data_vertex_x[Init_a],
                                                    Data_vertex_y[Init_a],
                                                    Data_vertex_z[Init_a]);
                                    //Punkt2
                                    glVertex3f (    Data_vertex_x[Init_b],
                                                    Data_vertex_y[Init_b],
                                                    Data_vertex_z[Init_b]);
                                    //Punkt3
                                    glVertex3f (    Data_vertex_x[Init_c],
                                                    Data_vertex_y[Init_c],
                                                    Data_vertex_z[Init_c]);
    

    Wie bekomme ich da nun eine weichen Farbverlauf hin??? glShadeModel(GL_SMOOTH) hab ich auch schon gesetzt.

    Anne



  • Bist du nun die Anne von www.akreft.de oder nicht?
    antworte bitte!!


  • Mod

    anne schrieb:

    dazu müssten wir zuerst wissen um was für ein objekt es sich handelt bzw. ob du normalen per polyon oder per vertex berechnest. mit dem rendermode hat es imho nichts zu tun. es sei denns du hast auf wireframe umgestellt

    Mein Objekt besteht aus tausenden von dreiecken. Die Normalen werden per Vertex berechnet. Dann habe ich jedem Dreieck die Normale zugeordnet. Das sieht dann bei mir ungefaehr so aus:

    //Normale
                                    glNormal3d (    Normale_x_End[Init_d],
                                                    Normale_y_End[Init_d],
                                                    Normale_z_End[Init_d]);
                                    //Punkt1
                                    glVertex3f (    Data_vertex_x[Init_a],
                                                    Data_vertex_y[Init_a],
                                                    Data_vertex_z[Init_a]);
                                    //Punkt2
                                    glVertex3f (    Data_vertex_x[Init_b],
                                                    Data_vertex_y[Init_b],
                                                    Data_vertex_z[Init_b]);
                                    //Punkt3
                                    glVertex3f (    Data_vertex_x[Init_c],
                                                    Data_vertex_y[Init_c],
                                                    Data_vertex_z[Init_c]);
    

    Wie bekomme ich da nun eine weichen Farbverlauf hin??? glShadeModel(GL_SMOOTH) hab ich auch schon gesetzt.

    Anne

    du müßtest für jeden vertex eine normale bestimmen und nicht pro dreieck nur eine. das machst du z.B. indem du an jedem vertex alle normalen der angrenzenden dreiecke aufaddierst und am ende dann normalisierst.

    rapso->greets();



  • Bis jetzt habe ich also zu jedem Dreieck eine Normale berechnet. Dies habe ich nach folgendem Schema
    gemacht:

    Bei 3 Punkten (P1, P2, P3) in einem Raum kann man von einem Punkt 2 Vektoren (V1 und V2) bilden.
    Von P1 nach P2 und von P1 nach P3. Um nun die Normale zu erhalten müssen wir von diesen Vektoren das
    Kreuzprodukt (V3 = V1 X V2) berechnen. Daraus resultiert ein neuer Vektor (V3), der unsere Normale darstellt.

    Das Kreuzprodukt wird folgendermaßen berechnet

    Normalx = (vtx1y - vtx2y) * (vtx2z - vtx3z) - (vtx1z - vtx2z) * (vtx2y - vtx3y)
    Normaly = (vtx1z - vtx2z) * (vtx2x - vtx3x) - (vtx1x - vtx2x) * (vtx2z - vtx3z)
    Normalz = (vtx1x - vtx2x) * (vtx2y - vtx3y) - (vtx1y - vtx2y) * (vtx2x - vtx3x)

    Anne

    Wenn ich nun aber nur einen Punkt P1 (x,y,z) habe, wie muss ich dann die normale berechnen?


  • Mod

    rapso schrieb:

    ...das machst du z.B. indem du an jedem vertex alle normalen der angrenzenden dreiecke aufaddierst und am ende dann normalisierst.

    rapso->greets();



  • Ja aber es muss doch auch eine Moeglichkeit (Gleichung) geben, mit welcher ich direkt nach dem einlesen der Punkte die Normalen zu diesen berechnen kann, oder. Ich gehe jetzt davon aus, das ich noch keine Normalenberechnung fuer irgendwelche Dreiecke ausgefuehrt habe.



  • moin

    😡 wann wird den Unregistrierten Usern das Posten verboten??? So langsam nervt dat.

    renderMan schrieb:

    wenn ja, darf ich dich mal kurz anficken??

    Was sollen dieser Scheiß?????


  • Mod

    Anne schrieb:

    Ja aber es muss doch auch eine Moeglichkeit (Gleichung) geben, mit welcher ich direkt nach dem einlesen der Punkte die Normalen zu diesen berechnen kann, oder. Ich gehe jetzt davon aus, das ich noch keine Normalenberechnung fuer irgendwelche Dreiecke ausgefuehrt habe.

    ist doch eine einfache gleichung

    für alle dreiecke:
    normale berechnen
    normale auf eckpunkt 1 addieren
    normale auf eckpunkt 2 addieren
    normale auf eckpunkt 3 addieren
    //nicht vergessen am anfang die normalen der eckpunkte auf 0|0|0 zu setzen

    für alle eckpunkte:
    normalisieren

    //wobei das entfallen kann falls du glEnable(GL_NORMALIZE) benutzt.

    rapso->greets();



  • Danke Rapso, hat geklappt ... obwohl die berechnung ja auch einfacher gehen wuerde.

    double		x = 16.548052 , y = -31.02938, z= 21.721382;
    	double		test;
    
    	double		Erg1[10], Erg2[10], Erg3[10], Erg4[10]
    		         Erg5[10], Erg6[10], Erg7[10], Erg8[10];
    
    	Erg1[0] = (x * x);
    	Erg2[0] = (y * y);
    	Erg3[0] = (z * z);
    
    	Erg4[0] = sqrt(Erg1[0] + Erg2[0] + Erg3[0]);
    
    	Erg5[0] = (x/Erg4[0]);
    	Erg6[0] = (y/Erg4[0]);
    	Erg7[0] = (z/Erg4[0]);
    

    auf jeden fall ein dickes danke. 🙂

    Anne



  • so können wir jetzt ****** ?


  • Mod

    Anne schrieb:

    ...hat geklappt ...
    auf jeden fall ein dickes danke. 🙂

    Anne

    wie wäre es mit nem screenshot? *g*

    rapso->greets();



  • Wuerd ich ja gern machen, aber da haben hier ein paar leute was dagegen ... wenn du willst, kannst mir an AnneK@gmx.de deine Adresse schicken. Lasse dir dann mal was zukommen.

    Bis dahin. 😉
    Anne.


Anmelden zum Antworten