Smooth Shading
-
Anne schrieb:
Ich moechte aber z.B. die einzelnen Verlaeufe der Steine sehen. Reicht es nun aus, das Objekt einmal zu zeichnen und die Beleuchtung darauf anzuwenden???????
Ja.
-
Nun hab ich aber folgendes Problem:
Zuerst zeichne ich mit Hilfe vonglutSolidCube(1.0);
meine Wuerfel. Wenn ich diesen beleuchte, kann ich deutlich die Kanten erkennen.
Wenn ich nun aber genau diesen gleich Wuerfel mit Hilfe von
glBegin (GL_POLYGON); glVertex3f (...); glVertex3f (...); glVertex3f (...); glVertex3f (...); glEnd();
nachbaue, dann sehe ich keine Kanten.
D.h., alle Objekte, die ich von der Glut nehme, sprechen auf meine Lichtquelle an. Was muss ich machen, damit ich meine eigenen Objekte mit der entsprechenden Beleuchtung darstellen kann?
-
Normalen vergeben. Aber benutze lieber mal ein passendes Programm oder malst du Bilder auch so auf den Bildschirm:
SetPixel(0,0, 0x001000 ); SetPixel(0,1, 0x000000 ); ... SetPixel(1024,768, 0x101000 );
-
Ich male gar nicht
Dat sollte ja just ein Beispiel fuer mein Problem darstellen.
Wie vergebe ich nun @Normalen@???? Noch nie was davon gehoert. Kann man sich dazu irgendwo belesen???
-
Anne schrieb:
Wie vergebe ich nun @Normalen@???? Noch nie was davon gehoert. Kann man sich dazu irgendwo belesen???
mit glNormal(...)
die normalen musste aber erst berechnen...
sihe vektorrechnung...mfg
Plassy
-
Guten Morgen. Gestern abend habe ich mich mal dran gemacht, um ein kleines Programm zur Berechnung der Normalen zu schreiben.
Dat haut ja auch alles wunderbar hin, wenn ich jedoch z-Werte ins Spiel bringe, dann geht gar nichts mehr, das heisst, ich bekomme Normalen Daten mit 5 stellen hinterm Komma und erhalte fuer die Normalen ausserdem zwei Werte (x und y oder y und z).
Kann mir jemand sagen, was ich da falsch gemacht habe?
//TRIANGLE //vertex3f ( 0.0, 0.0, 0.0 ); //vertex3f ( 1.0, 1.0, 0.5 ); //vertex3f ( 2.0, 0.0, 0.0 ); //vertex3f (x_value[0], y_value[0], z_value[0]); -> 1.Punkt //vertex3f (x_value[1], y_value[1], z_value[1]); -> 2.Punkt //vertex3f (x_value[2], y_value[2], z_value[2]); -> 3.Punkt x_value[0] = 0.0; y_value[0] = 0.0; z_value[0] = 0.0; x_value[1] = 1.0; y_value[1] = 1.0; z_value[1] = 0.5; x_value[2] = 2.0; y_value[2] = 0.0; z_value[2] = 0.0; temp_1[0] = (y_value[0] - y_value[1]); //(vtx1y - vtx2y) temp_2[0] = (z_value[1] - z_value[2]); //(vtx2z - vtx3z) temp_3[0] = (z_value[0] - z_value[1]); //(vtx1z - vtx2z) temp_4[0] = (y_value[1] - y_value[2]); //(vtx2y - vtx3y) temp_5[0] = (x_value[1] - x_value[2]); //(vtx2x - vtx3x) temp_6[0] = (x_value[0] - x_value[1]); //(vtx1x - vtx2x) //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) Normal_x = (temp_1[0] * temp_2[0]) - (temp_3[0] * temp_4[0]); Normal_y = (temp_3[0] * temp_5[0]) - (temp_6[0] * temp_2[0]); Normal_z = (temp_6[0] * temp_4[0]) - (temp_1[0] * temp_5[0]); one_1[0] = Normal_x; two_1[0] = Normal_y; three_1[0] = Normal_z; cout << "---------------------------\n"; cout << "Normale:\n"; cout << "x:" << one_1[0] << "\t" << "y:" << two_1[0] << "\t" << "z:" << three_1[0] << "\n"; cout << "---------------------------\n"; one_2 [0] = one_1 [0] * one_1 [0]; two_2 [0] = two_1 [0] * two_1 [0]; three_2 [0] = three_1 [0] * three_1 [0]; test2 = one_2[0] + two_2[0] + three_2[0]; //Wurzel ziehen test3 = sqrt(test2); one_4[0] = (one_1[0]/test3); two_4[0] = (two_1[0]/test3); three_4[0] = (three_1[0]/test3); cout << "----------------------------\n"; cout << "Normalisierung der Normalen:\n"; cout << "x:" << one_4[0] << "\t" << "y:" << two_4[0] << "\t" << "z:" << three_4[0] << "\n"; cout << "----------------------------\n";
-
Anne schrieb:
Dat haut ja auch alles wunderbar hin, wenn ich jedoch z-Werte ins Spiel bringe, dann geht gar nichts mehr, das heisst, ich bekomme Normalen Daten mit 5 stellen hinterm Komma und erhalte fuer die Normalen ausserdem zwei Werte (x und y oder y und z).
Man erhält sogar 3 Werte x,y und z, Nachkommastellen sind auch nichts Ungewöhnliches. Wären die Variablen (temp_bla, one_bla) noch sinnvoll bennant, könnte man wahrscheinlich auch leicht erkennen, ob der Code ebenfalls korrekt ist.
-
Also wenn ich dich richtig verstehe, dann kann eine Normale auch wie folgt aussehen:
glNormal3*(-2.234, 4.523, 2.456);
Ich dachte immmer, die Normale besteht aus zwei 0.0 werten und einem pos. bzw. neg. 1.0 Wert, welcher mir die entsprechende Richtung der Flaeche weist, also z.B.:
glNormal3*(0.0, 1.0, 0.0);
Noch mal zu den Bezeichnungen der Varialben: dahinter ist doch eindeutig zu sehen, welchen Inahlt sie haben, oder ging es dir bei der Bezeichnung echt nur um die Bezeichnung. Wenn ja, dann Vorschlag zur Guete.
Anne
-
Anne schrieb:
Ich dachte immmer, die Normale besteht aus zwei 0.0 werten und einem pos. bzw. neg. 1.0 Wert, welcher mir die entsprechende Richtung der Flaeche weist
Unsinn. Jeder beliebiger n-dimensionaler Vektor kann eine Normale im n-dimensionalen Raum sein.
Anne schrieb:
Noch mal zu den Bezeichnungen der Varialben: dahinter ist doch eindeutig zu sehen, welchen Inahlt sie haben, oder ging es dir bei der Bezeichnung echt nur um die Bezeichnung. Wenn ja, dann Vorschlag zur Guete.
Mach was du denkst, musst selbst damit leben. Aber dann rechne nicht damit das andere freiwillig den Code lesen.
-
Ich dank dir trotzdem erst mal bis hierher.
-
Ein Normalenvektor (hat nichts mit einem "normalisierten Vektor" zu tun!!) ist lediglich ein Vektor, der zu 2 anderen Vektoren senkrecht steht...
Entsprechend ist (0.0, 1.0, 0.0) ein Normalenvektor zur X/Z-Ebene (denn er ist parallel zur Y-Achse und steht damit senkrecht zur X- und Z-Achse)...
...und in diesem konkreten Fall ist er sogar noch "normalisiert" (Länge = 1).
Zu Ebenen die irgendwo im Raum stehen haben dann natürlich auch die Normalenvektoren ganz irrsinnige Werte...
Gegen ein Foto von Deinen Br**ten hätt' ich allerdings auch nix!
HEY! HEY!! War nur ein böser Spaß!!
this->DontTakeTooSerious();
-
Sgt. Nukem schrieb:
Gegen ein Foto von Deinen Br**ten hätt' ich allerdings auch nix!
OK, hier sind ein paar Fotos.
So sahen meine Brüste früher aus:
http://www.centralklinik.de/plast6_si1.jpg
http://www.centralklinik.de/plast6_si2a.jpgAlso hier werden meine Brüste mit Silikon gemacht:
http://www.spiegel.de/img/0,1020,214780,00.jpgUnd so sehen sie heute aus:
http://www.cosmetic-aesthetic.com/images/Brustaugmentation-1.jpgGEIL, NE?
-
Anne schrieb:
OK, hier sind ein paar Fotos.
[...]
GEIL, NE?Hehe... wenigstens versteht sie Spass...
BTW, da fällt mir ein...
Im Profil steht immer "Unregistrierter"...
Aber um von unserem Monopol noch was weiter wegzurücken sollte man das letzte 'r' doch eigentlich klammern...!Oder?
-
Sgt. Nukem schrieb:
Ein Normalenvektor (hat nichts mit einem "normalisierten Vektor" zu tun!!) ist lediglich ein Vektor, der zu 2 anderen Vektoren senkrecht steht...
Abgesehen davon, das dies auf jeden Vektor zutrifft, also der zweite Halbsatz sinnfrei ist, komm doch mal weg davon, nur in 3 Dimensionen zu denken.
Und Witze, für die man sich unaufgefordert gleich zweimal entschuldigt, sollte man vielleicht gleich lassen ;).
-
So Leute, da ihr ja in letzter Zeit eure Spaeschen mit angeblichen Bildern gehabt (ich weiss ja nicht, welcher Knilch da sein Spaeschen gemacht hat)habt, hier nun mal ein Link auf meine richtige HP.
-
TGGC schrieb:
Abgesehen davon, das dies auf jeden Vektor zutrifft, also der zweite Halbsatz sinnfrei ist, komm doch mal weg davon, nur in 3 Dimensionen zu denken.
???
???
Nicht jeder Vektor ist zu 2 anderen senkrecht...!Und da auch DooM 3 nicht 7-dimensional sein wird, bleib' ich bei meinen (lächerlichen) 3 Dimensionen...
Am labern, dann aber im Programmcode PI auf 5 Stellen nach dem Komma verkrüppeln, wie...!??
:p
Und Witze, für die man sich unaufgefordert gleich zweimal entschuldigt, sollte man vielleicht gleich lassen ;).
Nöö, dafür ist meine pubertäre Ader zu stark geworden...
Hochhh, war das 'ne schöne Zeit...
-
Hey Anne. darf ich dir mal was sagen!
DU SIEHST ECHT GEIL AUS!!!aber warum steht auf deiner HP nix übers Proggen?
PS: darf ich dich mal anficken?
-
Teradio schrieb:
...
PS: darf ich dich mal anficken?Super hohes Niveau
-
Teradio schrieb:
Hey Anne. darf ich dir mal was sagen!
Wohl kaum...
DU SIEHST ECHT GEIL AUS!!!
Wie wär's stattdessen mit: "Dich hat der Herrgott aber mit lasziver Schönheit beseelt..."
aber warum steht auf deiner HP nix übers Proggen?
Na, weil Frauen nur dafür da sind, GEIL
auszusehen, is' doch klar...
PS: darf ich dich mal anficken?
So 'ne Mischung aus sexueller Gefälligkeit und Anspringen!??
-
Sgt. Nukem schrieb:
TGGC schrieb:
Abgesehen davon, das dies auf jeden Vektor zutrifft, also der zweite Halbsatz sinnfrei ist, komm doch mal weg davon, nur in 3 Dimensionen zu denken.
???
???
Nicht jeder Vektor ist zu 2 anderen senkrecht...!Klar, er ist sogar zu unendich vielen senkrecht. Kannst dir 2 aussuchen.