Smooth Shading
-
Hi,
folgendes: habe meine Objekt (for Example:Kugel) (besteht aus z.B. 10 Triangles). Ich habe das erste Dreieck mit der Farbe gelb belegt, das zweite mit scharz, das dritte wieder mit gelb usw.. Wie kann ich nun einen weichen Uebergang zaubern, so dass man nicht mehr die einzelnen Dreiecke erkennen kann?
Danke schon mal
PS: Das ganze natuerlich mit OpenGL
-
Hi Anne!
wenn du geile Brüste hast dann werd ich dir gern helfen.
du mußt halt nur ein bild von den brüsten Posten oder sie genau beschreiben.
dann wär ich bereit zu helfen!!!
-
Wenn jede Fläche eine eigene Farbe hat, kann es nicht gehen, ausser benachbarte Flächen haben die gleiche Farbe. Zwischen den Flächen ist ja kein Platz, auf denen noch ein Übergang sein könnte. Also muss der Farbverlauf auf den Dreiecken selbst sein, z.b. eine Ecke schwarz, 2 gelb.
Sowas macht man aber mit passenden Programmen wie Milkshape und nicht mit OGL.
-
Bug im Board? Trotz Meldung: Sie dürfen nicht so schnell hintereinander posten - war der erste Versuch schon erfolgreich
-
erst
http://pyopengl.sourceforge.net/documentation/manual/glShadeModel.3G.html
dann
glColor...
glVertex...
glColor...
glVertex...
.
.
.und nicht pro poly nur ein color.
rapso->greets();
-
Besteht eigentlich auch die Moeglichkeit, das, wenn ich nur mit der Beleuchtung arbeite von einem Objekt die Kanten zu erkennen, oder muss jede Flaeche des Objektes eine andere Farbe haben????
-
wenn du pro polygon nur eine normale an opengl weitergibts sieht man die kanten.
sonst kannst du auch die kugel ein 2. mal mit linien zeichnen, aber wieso brauchst du das?
-
Mir geht es darum, Details erkennen zu koennen. Vieleicht habe ich mich ein bischen umstaendlich ausgedrueckt.
Stell dir vor, du hast ein Objekt, das einem Vulkan aehnelt. Wenn ich diesen nun z.B. komplett rot zeichne, sehe ich gerad mal die Konturen deutlich.
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???????
-
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?