Danke für das Angebot, aber ich gehör halt eher zu den Proggern die lieber alles selbst machen, weshalb ich das auch auf eigene Faust implementieren werde.
Das' brav Bin genauso, benutze in der regel keine einzige Fremd Komponente, will auch immer alles selber machen.. Is manchmal ein wenig stressig, aber.. man lernt schön bei
hab nochnen kleines PRoblem bei meinem Lightmapper gefunden, bzw eher bei meiner berechnung für den Schatten...
Wenn ich z.B. 2 Triangle habe die zusamme ein quadrat ergeben, dann kann es unter umständen (Wenn die beiden Tris ungünstig liegen) dazu kommen, das die schattenberechnung fehlschlägt... denn:
Wenn z.B. ein Lumel direkt an der stelle liegt wo die beiden Triangles zusammenliegen, dann geht der Lumel durch TriA und TriB.. also es trifft genau auf die linie zwischen diesen beiden... dadurch denkt die berechnung dann "Oh... TriB wird schatten auf TriA" was aber eigentlich garnicht so ist.
Meine lösungsansätze waren das ich getestet habe ob das Triangle welches gerade getestet wird das nachbar Tri vom aktuellen ist etc... hat zwar alles immer für diesen fall geklappt, aber dann gab es wieder probleme in anderen speziellen fällen...
Benutzt du denn auch für die Line/Triangle Intersection das von www.gametutorials.com??? Wenn nicht, bitte ich dich jetzt zum was weiß ich wievielten mal darum mir die dochmal bitte zu geben, bzw zusagen wo du sie herhast
Oder hast du evtl ne andere Idee für das Problem?? (Welches, wenn du bei dir nicht was geändert hast auch auftreten müßte)
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Das Problem tritt bei mir auch auf, und meine Ray-Triangle-Intersektion basiert auch auf der von www.gametutorials.com .Ich hatte bisher allerdings auch noch nicht die Zeit mich länger mit diesem Problem zu beschäftigen, aber wie kaum zu übersehen liegts an der Ungenauigkeit der Berechnungen.Deshalb würde es evtl. was bringen anstatt die Berechnungen auf Single-Basis (4Byte) auf Double- (8Byte) oder noch besser auf Extended-Basis (10Byte) durchzuführen, um so diese mathematischen Ungenauigkeiten aufgrund der unzureichenden Genauigkeit des Single-Datentyps zu vermeiden.
Wenn das nichts bringt wäre es evtl. auch ne Idee die Dreiecke zur Lightmapberechnung nur minimalst zu verkleinern, so dass es keine Kanten mehr gibt die sich treffen.Die so entstehenden Lücken werden dann wohl wahrscheinlich durch das Texturensampling und die recht niedrige Auflösung der Lightmaps eliminiert...ob das funzt kann ich allerdings nicht sagen.
Registriert: Mi Aug 28, 2002 19:27 Beiträge: 568 Wohnort: Chemnitz / Sachsen
also um das jetzt kurz zu sagen, denke ich, dass die zweite idee von sos einfach mal besser ist.
da fallen die ungenauigkeiten nicht wirklich auf, die durch den gebrauch von single entstehen.
ich bin zwar noch lange nicht soweit in diesem bereich, wie ihr, doch mit meinem halbwegs gesunden menschenverstand denke ich ist das eigentlich ganz leicht (nur minimale änderungen) zu erreichen und es gibt nicht mehr diese fehler.
einfach alle koords der tris um einen faktor etwas kleiner 1 multiplizieren und schon passt das eigentlich, wobei man dann gegen die original koords aller anderen tris testen sollte !!!!
klingt leicht, klingt logisch, klingt optimal - ist schwer
Ne, ernsthaft... Mir is klar wie es gehen soll und alles, nur bei der umsetzung hab ich grad ein paar probleme
Nehmen wir ein Triangle das irgendwo in der landschaft steht... dieses Triangle wollen wir nun also um sagen wir mal 0.9 Skalieren (übertrieben)... Wie...??? einfach jeden Vertex mit 0.9 malnehmen geht schonmal nicht, denn dann wäre der Pivot (der punkt um den das Triangle Skaliert/Rotiert wird) in der mitte der Scene und somit würde das Triangle nur ein wenig näher zur mitte rutschen..
Wir müßen also den Pivot in die mitte des Triangles bekommen und das Tri dann um diesen Pivot skalieren..
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Auch wenn ich kein gelehrter Mathematiker bin, hast du (wenn ich mich nicht gänzlich irre) die Technik um das zu realisieren bereits in deinem Lightmapper drin.
Das du nicht einfach alle Komponenten der Eckpunkte des Dreiecks skalieren kannst ist klar, allerdings musst du doch nur herausfinden auf welcher Ebene das Dreiecke liegt und kannst daran erkennen welche Komponenten zu skalieren sind, und das lässt sich ja ganz einfach übers planare Mapping rausfinden.Wenn dein Dreieck nun auf der YZ-Achse liegst, skalierst du genau diese Komponenten und lässt X unangetastet.
Das dürfte rein theoretisch funzen, aber die Angaben sind wie immer ohne Gewähr...
ja... aber das kann immernochnicht klappen Denn nehmen wir an das Dreieck liegt bei den Koordinaten 5,5,5... dann rutscht es auf alle fälle richtig mitte wenn wir irgendeine Koordinate mit 0.9 malnehmen...
Au'revoir,
Aya~
PS: Ich hab die sache mit den Pivots in meiner Engine ja schon drin (siehe der Editor), nur ist es da mit Matrix Multiplikation etc gemacht... als notlösung könnte man das evtl umbasteln.. *guckt nachdenklich*
mir ist grad noch eine sache aufgefallen... ich hab es grad eingebaut das bei meinem Editor die Lightmaps mitgespeichert werden und, wenn ich da in die Datei mit den TexturKoordinaten reinschaue steht da ein paarmal NAN drin.. Hast du ne idee woran das liegt??? (Was bedeutet NAN eigentlich genau??)
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
NAN = Not a Number
Das bedeutet das irgendwo bei deinen Berechnungen etwas nicht klappt (z.B. Division durch Null), bei mir ist das Problem allerdings noch nicht aufgetreten.
Zitat:
Beschreibung
Mit NaN (Not a Number = keine Zahl) können Sie in Delphi einer Gleitkommavariable einen Wert zuweisen, der keine Zahl darstellt. Verwenden Sie NaN nicht in Vergleichsoperationen. Mit der Funktion IsNan können Sie prüfen, ob eine Variable oder ein Ausdruck den Wert NaN hat.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Aya hat geschrieben:
ok.. hab den fehler schon gefunden... es konnte u.U. ein Div By Zero geben (wieso mäckert Delphi da nicht??), wodurch wohl das NAN kam..
In der OpenGL-Unit wird die FPU so konfiguriert, das sei bei einer Division durch Null keine Exception mehr auslöst, denn wenn dem so wäre würdest du mit solchen Meldungen überhäuft werden.Das ist dann auch der Grund warum Delphi dir eine solche Exception nicht mitteilt.
Delphi-Hilfe hat geschrieben:
Es ist zum Beispiel empfehlenswert, alle Gleitkomma-Exceptions zu deaktivieren, wenn OpenGL zur Darstellung von 3D-Grafiken eingesetzt wird. Rufen Sie dazu (vor dem Aufruf einer OpenGL-Funktion) in der Ereignisbehandlungsroutine für OnCreate des Hauptformulars Set8087CW(0x133f) auf.
Registriert: Do Aug 01, 2002 13:25 Beiträge: 32 Wohnort: Niedersachsen
Hi,
ich habe gerade versucht mir den Lightmapper von SOS runterzuladen. Allerdings ist es mir nicht so ganz gelungen. Könnte mir jemand sagen wo ich den herbekomme? (incl. Source)
Vielen Dank
_________________ - JALE - Just another little engine
<br>... it's not a bug it's a feature
<br><a href='http://www.JoachimdeVries.de' target='_blank'>http://www.JoachimdeVries.de</a>
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Habs grad probiert, und bei mir funzt der Download ohne Probleme.Schick mir mal ne PM mit deiner E-Mail-Adresse, und dann schick ich dir den Quellcode.
_________________ - JALE - Just another little engine
<br>... it's not a bug it's a feature
<br><a href='http://www.JoachimdeVries.de' target='_blank'>http://www.JoachimdeVries.de</a>
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Nett zu sehen, das die "Konkurrenz" aus dem D3D-Lager doch noch (zumindest ein wenig) aktiv ist
Hab übgrigens grade noch ein im entsprechenden Flipcode-Artikel angesprochenes Feature in meinen Lightmapper integriert, welches die generierten (Light)Shadowmaps noch nachträglich weichzeichnet, und so den doch etwas störenden Trepffenstufeneffekt minimiert.Dabei wird von einem Pixel und seinen acht Nachbarn einfach der Mittelwert gebildet, also ein recht simpler Weichzeichnungsfilter.
Recht gut sichtbar wird dieser Effekt auf folgendem Screenshot (klicken zum Vergrößern), welcher links die Szene mit den weichgezeichneten (Light)Shadowmaps zeigt, und rechts ohne :
Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.