Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

1

17.07.2009, 19:16

Radiosity LightmapGeneration

Hi Leute,

ich hatte vor einiger Zeit meinen ersten Lightmap Generator entwickelt.
Der sieht nicht schlecht aus, ist aber nicht gerade die beste Lösung.

Jetzt will ich mich mal an einen LightmapGenerator mit Radiosity versuchen.
In meinem alten Generator hatte ich für jedes Dreieck einen Rechtwinklingen-Dreiecks-Platz auf der Lightmap zugewiesen. Das ist aber nicht schön, wenn man Dreiecke hat, die nicht einen Winkeln mit 90° haben - also sehr gestreckte Dreiecke z.B.
Diesmal will ich es ähnlich wie z.B. in HL1 oder Quake3 machen, dass einem "Face", welches aus mehreren Dreiecken bestehen kann, einen Platz in der Lightmap zu gewiesen bekommt.

Meine erste Frage dazu ist, wie man am besten den Platz auf der Lightmap einem solchen Face zu ordnet?
Immerhin bleibt dadurch einiges an Platz auf der Lightmap leer und kann nicht genutzt werden - was auf den Lightmaps von Quake3 Maps auch der Fall ist.

Meine zweite Frage ist, wie viele Photonen man von jeder Lichtquelle aus in alle Richtungen schießt. Gibt es da eine Fausregel? Und wie errechnet man am geschicktesten die Richtungen, in die die Photonen geschickt werden?

Danke schon mal im Voraus :D

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

2

18.07.2009, 02:04

in der regel verschiesst du keine photonen, sondern renderst für alle paar vertices ( oder besser für alle patches ) die szene aus dessen blickwinkel in eine hemicube. dann berechnest du die durchschnittliche helligkeit an dem punkt. das machst du dann ein paar iterationen lang, bis alles annehmbar hell ist.
"Don't trust your eyes: They are a hell of a lot smarter than you are"

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

3

18.07.2009, 12:07

Ist das üblich, für jeden Texel die gesammte Szene zu rendern??
Außerdem, wenn man noch keine Lightmap hat, wie will man dann durch Rendern eine Helligkeit errechnen?

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

4

18.07.2009, 13:41

nicht unbedingt für jeden texel. die helligkeit erhälst du indem du zB ein punktlicht als helle ( weisse ) kugel renderst.
"Don't trust your eyes: They are a hell of a lot smarter than you are"

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

5

19.07.2009, 20:57

Nun gut, aber wie teilt man am besten die Faces ein? D.h. wie reserviert man am besten den Platz auf der Lightmap für die Dreiecke?
In dem Spiel Half-Life 1 und Quake 3 wurde (meist ein Quad) immer als Face betrachtet, welches aus mehreren Dreiecken bestehen kann.

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

6

22.07.2009, 21:01

Das hier sind zum Beispiel die Lightmaps eines Quake3 levels:


(Link)


Anhand dieses Bildes (alle 128x128 Lightmaps zusammengefasst) kann man erkennen, dass diese Lightmaps für Quads generiert wurden.
Was soll man aber machen wenn man gerade man kein Quad hat. Sondern nur ein Dreieck das alleine irgendwo rumsteht?
Wie soll man 3D Modelle beleuchten?
Wie - um alles in der Welt - soll man nur die Dreiecke auf die Lightmap zu ordnern???

Und wie kann man den ungenutzen Platz auf den Lightmaps minimieren??

Werbeanzeige