nachdem ich mich durch die Boardsuche und Google gewühlt hab und trotz allem mit relativ leeren Händen dasteh ist es Zeit für einen Thread.
Also, wie zum Kuckuck erzeuge ich Lightmaps um sie später speichern zu können? (Kann sein das dies irgendwo in der OGL BIble die ich zuhaus hab steht...aber alle Kapitel durchwühlen will ich nicht...)
Vom Verständnis her schätze ich, das ich "einfach" ein GL Light nehmen kann und das etwas anleuchten lasse. Schön und gut, die Szene ist beleuchtet, aber wie erhalte ich die Beleuchtungsdaten um sie zu speichern und beim nächsten mal mit Multitexturing nutzen zu können?
Hoffe da kann mir jemand bei helfen
Evil
PS: Falls das nicht mit GL Lights geht, bin ich auch für andere Vorschläge offen.
GL Light lohnt sich nicht. Die können ja keine Schatten und die will man ja auf jeden Fall haben, wenn man lightmaps bastelt. Aber das vorhaben ist nicht ganz einfach. Normalerweise nimmt man zum rendern der Lightmaps einen renderer, der besonders hohe Licht- und Schattenqualität erzeugen kann: Raytracer bieten sich an. Ausserdem musst du alle Faces in deiner Welt auf einer Textur schön anordnen und das ist auch kein ganz einfach zu lösendes Problem, besonders wenn man keinen Platz verschwenden will.
Platz soll erstmal nicht das Problem sein, mir ist erstmal wichtig den Krams überhaupt abspeichern zu können.
Raytracer...hm...sowas in der Richtung hab ich schon vermutet, hatte gehofft es auch ohne lösen zu können.
Ok, gehen wir mal davon aus ich hätte bereits einen, wie speicher ich die erzeugten Licht-/Schattenquellen dann bzw. wohin rendere ich das Licht und die daraus resultierenden Schatten. Auf einen Offscreen oder in einen der Buffer die mir OGL zur Verfügung stellt ?
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Schau dir mal den Artikel Packing Lightmaps an. Dort sind auch 2 Bilder von typischen Lightmaps. Und von diesen Maps bringst du normal nur einen Teilbereich mittels Multitexturing zusätzlich auf deiner Fläche auf.
Und Humus hat auf seiner Seite eine Demo (inklusive Source) zu dynamischen Lightmaps. Eigentlich nichts anderes als on the fly Lightmapberechnung.
Den Artikel kenn ich, bringt mir aber insofern wenig da ich die Informationen doch erstmal überhaupt erfassen und speichern muss.
Oder müsste ich für jedes Face das ich hab eine leere Texture erstellen, dann den Raytracer anschmeissen und schauen was der aus der anfangs leeren Texture an Infos raufhaut? *Total verwirrt sei*
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ja, da liegst du in etwa richtig nur dass man bedingt durch geringe Texturenauflösung keine Per-Pixel sondern Per-Texel Informationen ablegt. Im simpelsten Falle (Packing links liegen lassen) erstellst du also für jedes Polygon deiner Szene eine Textur (am besten mit der Größe des Polygons skalieren damits auch auf großen Wänden brauchbar ist) und schiesst dann für jedes Texel einen Strahl von der Lichtquelle hin zu eben diesem Texel. Damit dann dort auch die richtigen Infos rauskommen muss man die lokalen Texturkoordinaten der Lightmap natürlich in Weltkoordinaten umrechen (und dazu das Polygon auf eine bestimmte Ebene projezieren) und dann kann man direkt den Lichtstrahl mit nem Raytracer dorthin schiessen (für sowas würde ich dann übrigens Newton verwenden, da ist ja raycasting drin, kann man auch für sowas "Missbrauchen").
Auf modernen GPUs kann man sowas aber auch (bedingt) in Echtzeit über nen Shader realisieren, aber im Normalfall werden die Lightmaps dann offline berechnet.
Das ist allerdings kein so einfaches Unterfangen und evtl. solltest dir mal den Lightmapper von Nitrogen ansehen, der ist brauchbar und da gibts sogar kompletten Delphi-Code zu.
Den Strahlentest kann man auch mit Occlusion Queries machen. Das hat den Vorteil, dass man nicht auf Punktlichter beschränkt ist, sondern auch Ambientes Licht simulieren kann. Dazu rendern man die Szene von der entsprechenden Position in alle Richtungen mit dem Licht als Mesh (z.B. ein [umgebender] Würfel,Kugel,..) und zählt die Pixel einmal mit DepthTest eingeschaltet und einmal mit DepthTest aus. Das Verhältnis entspricht dann ungefähr der Schattierung.
Mitglieder in diesem Forum: 0 Mitglieder und 8 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.