Fragen zu einem Schattierungsalgorithmus
-
dot schrieb:
das imho beste deutsch -> englisch und umgekehrt wörterbuch ist:
na also, einen Thread zu einem Schattierungsalgorithmus muss man aufmachen, um einen Tipp für ein Wörterbuch zu erhalten!
-
randa schrieb:
TGGC schrieb:
zu 2) Occluder= Verdecker, early out test= früh raus Überprüfung (kauf dich mal ein Wörterbuch)
dich auch
Danke für die Hilfe.
Immer wieder gern.
Bye, TGGC \-/
-
Hi leute
Ich steck gerade bei der Implementierung meines Algorithmus fest. Ich hab schon rumgeschaut und stundenlang dagesessen und versucht es zu verstehen, aber ich raffs nicht ganz. Ich rede von der Bestimmung des Schnittpunkts zwischen Gerade und Ebene. Der Hauptgrund, warum ichs nicht verstehe liegt wohl an meinen 5en in Mathe, konstant über viele Jahre hinweg
Gegeben sind mir: Anfangs und Endpunkt der Gerade, die Eckpunkte der Fläche (mit denen ich die Ebene beschreiben kann). Leider kann ich mit der Parameterform von Ebene nix Anfangen und die Gleichungen dazu übersteigen dass, was ich in Mathe gelernt habe, weit.
Vielleicht wäre jemand so nett und würde sich die Mühe machen, mir einen pragmatischen Ansatz zur Bestimmung des Schnittpunkts zu geben. Vor allem die Determinante, die dazu notwendig ist, begreife ich nicht ganz.Soviel ich verstanden habe, kommt aus der Formel der Skalierungsfaktor (Lamda) raus, den ich mit der Gerade multiplizieren muss, um auf den Schnittpunkt zu kommen.
Die Tatsache, dass es dazu scheinbar mehrere Lösungsvarianten gibt, verwirrt mich zusätzlich.
Wäre dankbar für eine (mehr oder weniger) umfassende erklärung.
-
Auf meiner Homepage gibt es Tutorials zur 3D-Kollisionserkennung, und dieses spezifische "Problem" wird da auch behandelt.
-
danke vielmals
sieht vielversprechend aus und ich werds mir anschauen.
-
Es ist so ermüdend. Folgendes problem qäult mich seit zwei tagen:
(pseudocode)bool Kollision (Polygon Poly, Vector RayStart, Vector RayEnd) { Vector Dir (RayEnd-RayStart); float Alpha=dot_product (dir, Poly.Normalvector); float Determinante=-dot_product (Poly.Eckpunkt1, Poly.Normalvector); //... float Beta=(dot_product (Poly.Normalvector, RayStart)+Determinante)/-Alpha; Vector Intersection; //Liegt nicht auf der Strecke if (Beta<0.0f || Beta>1.0f) return false; else Intersection=RayStart+(Dir*Beta); float Winkel[10]; Vector VektorenZuDenEckpunkten[10]; //...Mit null initialisieren... for (int i=0; i<10; i++) { VektorenZuDenEckpunkten[i]=Polygon.Eckpunkt[i]-Intersection; } for (int i=10-1, x=0; x<10; i=x, x++) { Winkel[i]=dot_product (VektorenZuDenEckpunkten[i], VektorenZuDenEckpunkten[x]); } float Summe=0.0f; for (int i=0; i<10; i++) Summe+=Winkel[i]; //Hier prüfe ich in wirklichkeit auf einen Tolranzbereich um 2PI herum if (Summe==2*PI) return true; else return false; }
Da stimmt was überhaupt nicht, aber ich komme nicht drauf. Der Anfangsteil des Algorithmus stammt von der Scherfgen-site von den tutorials. Das mit den Winkeln hab ich selber gemacht.
Wäre nett wenn sich jemand die Mühe macht das Mathematisch und Implementierungstechnisch zu überprüfen. Hier soll geprüft werden, ob die Summe aller Winkel der Vektoren zu den Eckpunkten des Polygons kleiner oder gleich 360 grad ist (auch erwähnt auf der scherfgen seite).
-
Meine Kristallkugel sagt: mach weiter!
Bye, TGGC (Zu viele Primitve hier.)
-
TGGC schrieb:
Meine Kristallkugel sagt: mach weiter!
Meine sagt, ich sollte erstmal den Fehler hier finden.
Kannst du verifizieren, ob das hier richtig ist? Bzw wo der Fehler steckt (ich vermute in der ganzen Winkelsache, aber ich weiß beim besten willen nicht woran es liegen könnte).
-
randa schrieb:
Kannst du verifizieren, ob das hier richtig ist?
Könnte ich, wenn du mich entsprechend bezahlst.
Bye, TGGC (Reden wie die Großen)
-
TGGC schrieb:
Könnte ich, wenn du mich entsprechend bezahlst.
Mir zu helfen ist bezahlung genug.