Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Hab ganz vergessen das du deine Lightmaps alle in einer Textur sicherst.Dann musst du aber (koste es was es wolle ) die Lightmaps mit einem Mindestabstand von einem Pixel in deine große Textur zeichnen, denn es liegt in der Art des biliniearen Filtering das über die komplette Textur interpoliert wird (sprich benachbarte Pixel miteinbezogen werden), und wenn eine Lightmap direkt ohne Abstand neben der anderen liegt, dann "bluten" deren Ränder in umliegenden Lightmaps herein, woher dann wohl auch deine schwarzen Ränder resultieren.
Um dieses Problem zu vermeiden, solltest du halt ganz einfach die Ränder der Lightmap duplizieren.Ich versuchs mal zu erklären wie ichs meine : Die Reihe links von deiner LM füllst du dann mit der ersten Pixelreihe deiner Lightmap statt mit schwarz, ganz genauso zeichnest du Reihe 33 in Reihe 34.Hoffe das war verständlich, und sollte so auch ohne Probs funzen.
P.S. : Haste dir mal das von mir ganz oben gepostete PDF angesehen?Der machts doch auch mit nem schwarzen Rand und hat damit keine Probs...evtl. macht der nur was beim Texturenfiltering anders.
Um dieses Problem zu vermeiden, solltest du halt ganz einfach die Ränder der Lightmap duplizieren.Ich versuchs mal zu erklären wie ichs meine : Die Reihe links von deiner LM füllst du dann mit der ersten Pixelreihe deiner Lightmap statt mit schwarz, ganz genauso zeichnest du Reihe 33 in Reihe 34.Hoffe das war verständlich, und sollte so auch ohne Probs funzen.
Genau das hab ich versucht zu erklären *g* So mache ich es ja Also kann's daran auchnet liegen
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Auf dem Screenshot sieht man direkt das es am Texturefiltering liegt und die Ränder in deine Lightmaps "hineinbluten".Un die Tatsache das die Streifen "etnfernungsabhängig" sind, liegt halt am MipMapping welches ja für verschiedene Entfernungen verschiedene Texturen erstellt.
Schau mal auf der Seite zum von mir geposteten Dokument ( http://users.pandora.be/BluePrint/thesis/ ) in der Downloadsektion nach, dort gibts nämlich das Lightmapsample, bei dem auch alle Lightmaps in einer Textur abgelegt werden.Evtl. findest du dort im Quellcode die Lösung deines Problems, die wohl irgendwo beim Texturenfiltering zu suchen ist.
Edit : Evtl. bringts auch was wenn du die Lightmapkoordinaten minimal skalierst, also z.B. statt S=1/T=1 einfach mal S=1.1/T=1.1 (Evtl noch kleineres Delta) nimmst.
also ich wühl mich grad durch die C Dateien da... is ja horror *g*
Ich find nichmal die stelle wo er Texturen erstellt... (Der benutzt DevIL.. hab ich 0 ahnung von )
Son of Satan hat geschrieben:
Edit : Evtl. bringts auch was wenn du die Lightmapkoordinaten minimal skalierst, also z.B. statt S=1/T=1 einfach mal S=1.1/T=1.1 (Evtl noch kleineres Delta) nimmst.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Aya hat geschrieben:
Wie meinst'n das??
Anstatt bei glTexCoord2f z.B. von S=0..1 und T=0..1 zu gehen, gehst du einfach hin und gehst von S=0..1.01 und T=0..1.01 (das Delta musst du halt solange variieren bis es passt), wodurch die Ränder (die ja sehr schmal sind) ausserhalb des Mappings liegen und so nicht mehr sichtbar sein sollten.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Aya hat geschrieben:
aber damit die ränder ausserhalb des Mappings sind, müßte es doch eher so sein, oder? ->
von 0.01 .. 0.99
Sorry...liegt wohl am Wetter .Natürlich soll es S=0.01..0.99 und T auch 0.01..0.99 sein.Da musst du dann mal ein wenig variieren bis es passt.
Aya hat geschrieben:
PS: Hab mich nu in den C Dateien zurechtgefunden... der macht auch für jedes Triangle eine Textur, also nicht eine große...
Tolles Suppe...da frag ich mich echt warum der Autor groß von einer Textur rumplappert und das groß und breit in seinem Dokument inklusive Screenshot zeigt.
Probiers halt mal mit den Texturkoordinaten, wenns dann immernoch ned klappt, suchen wir halt ne andere Lösung.
Aya's Newsticker, Live vom Ort des Geschehens! *ticker* *ticker*
Also... ich hab nu nen bissel rumgespielt mit den Koordinaten, aber so wirklich klappen tut es damit auchnet...
Aber ich hab ne neue entdeckung gemacht.. *g*
Ich habe mal einfach um was zu testen um jede Lightmap einen Grünen rahmen gezogen:
Das ganze sieht dann so aus:
Es stimmt aus jeder blickrichtung und von überall, keine einzige Kante mehr drin, auch nirgendwo kommt was rotes zum vorschein... kann mir das jetzt mal wer erklären? *g*
Au'revoir,
Aya~
EDIT: Halt, alles zurück... auch bei den grünen linien sieht man manchmal rote stellen.. die Kanten sind wahrscheinlich auch da, nur halt getarnt, weil ja nun alle kanten gleichfarbig sind...
EDIT EDIT: *g* Ich bin ja auch blöd ... selbst auf dem Screenshot sind rote stellen
Hab eben nochmal was rumprobiert mit den Koordinaten verschieben... hab es wie mir eben aufgefallen ist, vorhin immer an der falschen stelle gemacht
Also ich hab die Koordinaten nun soweit verschoben das die äußerste Reihe der Lightmap (also der grüne rahmen) nichtmehr sichtar ist wenn man von oben draufguckt...
Desto weiter ich die fläche nun drehe, desto sichtbarer werden die Grünen kästchen.. und wenn ich fast waagerecht auf die fläche gucke, sieht man sogar schonwieder rote stellen...
und 2 Pixelreihen auf jeder seite kann ich doch schlecht wegschneiden, sieht ja dann doof aus
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ich hab jetzt nach ner recht intensiven Suche im Netz zu diesem Thema eigentlich nichts brauchbares gefunden.Zwar hab ich einiges im Bezug auf das Packen der Lightmaps in eine Textur gefunden, dort wird allerdings nirgendwo etwas im Bezug auf das Texturesampling gesagt, es sieht also schlecht aus.
Evtl. solltest du deshalb mal mit dem Texturesampling rumspielen und es auch mal ohne MipMapping probieren.Ansonsten kann ich dir nur mal empfehlen die verschiedenen Möglichkeiten die dir glTexParameter bietet auszutesten.
Momentan legt mein Lightmapper noch alle Lightmaps einzeln ab, weshalb ich dir bei deinem Problem nicht konkret weiterhelfen kann, aber sobald ich auch dieses Feature in meinem Lightmapper hab, werd ich dem Problem mal genauer auf den Grund gehen.
ok, ich werd mal alle möglichen kombinationen testen *g*
@Feature einabauen: Also bei mir ist sind der Lightmapper an sich, und der LightmapManager getrennte Klassen/Units... ich könnte dir wenn du möchtest den LightmapManager schicken.
Bei dem mußt du nur bei der erstellung sagen wieviele Lightmaps kommen, und wie groß diese sein werden.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
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.
Mitglieder in diesem Forum: Google [Bot] und 4 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.