RenderMode?
-
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!!
-
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?
-
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ß?????
-
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 setzenfü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 ****** ?
-
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.
-
???? schrieb:
so können wir jetzt ****** ?
Gibt es hier keine IP-Sperre?
-
Guten Morgen,
nun doch noch ein kleines Problem hinisichtlich der Beleuchtung:
Wenn ich pro Dreieck ein Normale berechne und anschliessend mit
glEnable(GL_LIGHTING)
usw. ein Licht definiere, dann behaelt die Lichtquelle ihre Poition beim bewegen des Objektes.
Wenn ich nun aber pro Vertex eine Normale berechne, dann haut das mit der Beleuchtung nicht mehr so ganz hin. Wenn ich das Objekt bewege (Rotation oder Translation) dann veraendert sich auch die Lichtquellenposition. Am Beispiel von einem Spotlicht sieht das so aus: beim ersten Fall(Normale pro Dreieck) habe ich immer exakt den selben Punkt, auf dem mein Spot auftrifft. Dieser bleibt auch da, wenn ich das Objekt drehe. Wenn ich nun aber pro Vertex eine Normale habe, dann sieht das so aus: wenn das Objekt nach rechts gedreht wird (also gegen Uhrzeigersinn), dann bewegt sich der Spot nach Links, bis er dann hinter dem Objekt verschwunden ist.
Wie kann ich nun erreichen, das der Spot auf meinem Punkt bleibt???
Anne
PS: Nicht AnneK@gmx.de sondern AnneK3@gmx.de