Registriert: Mi Jan 08, 2003 15:49 Beiträge: 266 Wohnort: Aachen
Gibt es so was wie 2D Licht, wenn ja ich möchte auf einer Textur ein Licht darstellen oder ein Kreis malen, der Licht ausstrahlt. Gibt es ein Tut? Oder könnte mir das jemand anhand eines Beispieles erklären, wäre echt nett.
vielleicht kanns schon einer - manchmal mou man ein wenig warten - mir ist aber einfach nicht klar, was du machen willst. es wirkt so als wolltest du eine textur bemalen oder aufhellen, ist das richtig?
Registriert: Mi Jan 08, 2003 15:49 Beiträge: 266 Wohnort: Aachen
So in der art. Ich möchte eine kleine 2DEngine schreiben. Und ich brauche auch Licht, das heist wenn ich ein Bitmap male zb eine Lampe brauche ich ja auch Licht. Also soll da die Lampe stehen und Licht erscheinen, es soll kein komplexes licht sein sondern nur ein kleines einfaches Licht.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Das was du möchtest, lässt sich am besten mittels Lightmapping erreichen.Das ist jedoch ein sehr komplexes Thema und setzt einiges an mathematischem Können vorraus.
Gute Tutorials zu diesem Thema sind zwar rar, aber auf <a href='http://www.flipcode.com' target='_blank'>http://www.flipcode.com</a> solltest du in der Tutorial-Sektion fündig werden.
Beim Lightmapping wird für jeden Texel eines Polygons die Beleuchtung vorberechnet und in eine extra Textur gesichert, die dann später mittels Multitexturing über die Basistextur gelegt wird.
Lightmapping ist sehr gut für statische Lichter geeignet und im Detailgrad und Realismus der berechneten Lichtquellen praktisch unschlagbar, da man selbst die komplexesten mathematischen Beleuchtungsverfahren anwenden kann...
...aber wie gesagt : Einen Lightmapper zu proggen stellt quasi die Königsdisiplin beim Engine-Programmieren dar und ist wirklich nicht einfach.Da ich sowas schonmal gemacht hab sprech ich aus Erfahrung.
Als Anreiz gibts aber ein paar Pics von meinem Lightmapper :
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ok...wenn ich vorher gewusst hätte, das du nur ne 2D-Engine beleuchten willst, hätt ich mir obiges Posting gespart, aber leider hab ich mir beim Posten zu viel Zeit gelassen...deine Frage lies aber halt auf Lightmapping-Verfahren schliessen.
Für ne 2D-Engine gibts natürlich viel einfachere Verfahren : Mach dir mit nem Bildbearbeitungsprogramm eine Lichtquellentextur (siehe links) und zeichne einfach mit Additivem Blending einen Quad mit dieser Textur auf deine fertig gezeichnete Szene...das sieht dann etwa so aus :
----->
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Zitat:
@SOS: Mhh... dein LightMapgenerator... funktioniert das da so das du dem sagst "meine lichtquelle ist da und da, mach mal die Lightmaps.."?? *g*
Ja...ganz genau so funzt (m)ein Lightmapper.Bei meinem kannste unendlich viele Lichtquellen angeben und denen Position, Farbe, Radius und andere Eigenschaften zuordnen.
Zitat:
Wenn ja, kannst du mir mal sagen wie du da errechnest auf welchem Polygon welcher teil von dem Lightmap etc kommt??
LOL...das kann man nicht mal so kurz in nem Posting erklären, das ist wie gesagt ein *etwas* komplexeres Thema.
Kurz gefasst musst herausfinden, auf welche Achse ein Polygon liegt, es dann darauf projezieren und dann alle Texel des Polygons gegen alle Lichter prüfen (dazu hab ich im Bezug auf Auto-Texturkoordinaten-Generation schonmal was gesagt).
Schau dir doch mal die Tuts dazu auf <a href='http://www.flipcode.com' target='_blank'>http://www.flipcode.com</a> an, die sind ganz gut und erklären alles nötige.Und soweit ich weiss (kann mich auch irren), hat Tom Nyudens auf seiner Page <a href='http://www.delphi3d.net' target='_blank'>http://www.delphi3d.net</a> dazu auch nen Artikel verfasst!
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.