# 3D Kugel gätten



## Kr0e (18. Aug 2008)

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 (18. Aug 2008)

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 (18. Aug 2008)

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


----------



## Beni (18. Aug 2008)

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 (18. Aug 2008)

Ä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 ?


----------



## Beni (18. Aug 2008)

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 (18. Aug 2008)

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 (18. Aug 2008)

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


----------



## Kr0e (22. Aug 2008)

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


----------



## Guest (26. Aug 2008)

stelle doch vlt. zwei screenshots rein, eins von der glusphere und eins von deiner Version.


----------

