3D Kugel gätten

Status
Nicht offen für weitere Antworten.

Kr0e

Gesperrter Benutzer
Hallo, um den Schatten einer Kugel zu berechnen, brauchte ich die Normalen der Dreiecke aus denen die Sphere besteht, weshalb ich dann den Kugelalgorithmus selbst geschrieben hab und im mom mit 36 längen und 36 breitengrade arbeite. So nun fällt aber eines ins Auge, undzwar ist die Kugel ziemlich kantig, wobei die gluSphere Funktion bei 36 die Kugel wunderbar rund zeichnet, und auch mein Scahtten ist dementsprechend kantig und hässlich... gibt es da evt alternativen, also ich habe schon bereits was gelesen, vonwegen Normalenmittelwert bestimmen ???

Gruß Chris
 

Marco13

Top Contributor
Normalen kann man entweder für ein Face angeben

glNormal(normale)
glBegin(Triangle)
glVertex(...)
glVertex(...)
glVertex(...)
glEnd();

oder für die einzelnen Vertices

glBegin(Triangle)
glNormal(normale)
glVertex(...)
glNormal(normale)
glVertex(...)
glNormal(normale)
glVertex(...)
glEnd();


Wenn du die Normalen aller Dreiecke, die einen Punkt enthalten, mittelst, und das Ergebnis als normale für den Vertex verwendest, dürfte es glatt(er) aussehen.
 

Kr0e

Gesperrter Benutzer
Ok, aber wie genau kann man denn aus drei Vektoren den Mittelwert bestimmen ? also ich habe 3 anliegende Dreicke, und will nun den Punkt in dem sich alle 3 schneiden den Mittelwert der 3 Ebenenvektoren der Dreiecke als Normale zuweisen. Was genau muss da gerechnet werden ?

Gruß Chris
 
B

Beni

Gast
Grundsätzlich ist es egal, solange du bei allen drei Vektoren dasselbe einsetzt sieht es glatt aus.

Praktisch ist es wohl am einfachsten jeweils alle x,y,z Koordinaten aufsummieren und den Summen-Vektor normalisieren.
 

Kr0e

Gesperrter Benutzer
Ähm, wieso soll bei den 3 Vektoren aus denen der Durchschnitt berechnet werden soll, alles dasselbe drin stehen ?
Oder hab ich dich grad falsch verstanden ?
 
B

Beni

Gast
Hm, ich habe mich unklar ausgedrückt.

Du musst ja für jeden Vertex einen Normalvektor angeben. d.h. in der Ecke in der die drei Dreiecke zusammentreffen musst du (sofern du nicht irgendwie optimierst) 3 mal denselben Vertex und 3 mal den Normalvektor angeben.
Mein "solage du bei allen drei Vektoren dasselbe einsetzt" bezog sich auf diese drei Normalvektoren,
 

Kr0e

Gesperrter Benutzer
Achso, weil ich ja bei z.b. 3 Dreiecke ja einen Punkt dreimal verwende, und dann muss ich für diesen punkt 3mal eine andere Normale angeben... Ok!
Danke
 

Marco13

Top Contributor
Nee... eigentlich 3 mal die gleiche (am besten sogar dieselbe) ... aber vielleicht hab ICH das jetzt wieder falsch verstanden......
 

Kr0e

Gesperrter Benutzer
Habs jetzt anders gemacht... Undzwar hat ja bei einer Kugel quasi jedes Vertex als Normale die Normalisierte Distanz zwischen Mittelpunkt und Vertex... So es sieht nun schon ziemlich gut aus, aber es ragt noch nicht zu 100 % an das Ergebnis der gluSphere rann... WAS macht diese Funktion denn anders ? Wisst ihr vlt wie ich Einblick in die Funktion bekommen könnte ? Ich hab schon ein bissel bei SGI gesucht aber nich die gluSphere gefunden :(:(

GRUß CHris
 
G

Guest

Gast
stelle doch vlt. zwei screenshots rein, eins von der glusphere und eins von deiner Version.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben