lightmapps / Schatten Engine

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Dottakopf

Betreff: lightmapps / Schatten Engine

BeitragFr, Feb 12, 2010 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Blitzer!

ich beschäftige mich gerade etwas mit der ausleuchtung von Level und Objekten.

Mit hilfe einer Lightmap kann man statische Objekte, wie zb ein Level, wunderbar ausleuchten und sehr realistische Schatten erzeugen. Allerdings wirken sich diese Schatten nicht auf sich darauf bewegende Objekte(Spieler) aus. So kann es passieren, dass in einem total dunklen raum die Spielerfigur sehr hell erscheint(je nach ambientlight).

Wie schaffe ich es, das der Spielermesh den gleichen Kontrast an nimmt wie die Umgebung?
(Evt. einfach die helligkeit des Triangles unter dem Spieler ermitteln und das Spieler mesh neu einfärben?)


Das Beschriebene Problem hat man natürlich bei einer Schatten Engine nicht(z.b. Devil Shadow).
Allerdings ist dies ziemlich rechenaufwendig und somit auch langsam. Außerdem ist es ziemlich doof jedesmal einen schatten für statisches Objekt neu zu berechnen.


Wie geht man dieses Problem am besten an ? Was ist wann sinnvoll ?
Antworten können ganz allgemein ausfallen.


Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

faeX

BeitragFr, Feb 12, 2010 19:05
Antworten mit Zitat
Benutzer-Profile anzeigen
3 Dinge:

1. Gehört dieses Thema nicht in Allgemein, sondern in Blitz3D! Wink
2. Mach 'ne Lightmap und in Kombination dazu 'ne Schattenengine für die sich bewegenen Objekte, das ist etwas schneller.
3. Lass es einfach bleiben! Sooo grandios ist der Effekt nun auch wieder nicht...

mfG
faeX

Dottakopf

BeitragFr, Feb 12, 2010 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
@Danke für deine Schnelle antwort

1. Da könntest du recht haben
2. Lightmaps und Schattenengine vertragen sich sehr schlecht
3. Beim Programieren gehts doch darum sachen durchzuarbeiten und nicht bei jeder schwierigkeit es einfach hinzulegen Wink

Ich finde es sieht einfach bekloppt aus, wenn da ein dunklerer raum ist und du stehst da mit deinem ultra hellen model mitten drin.

Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

faeX

BeitragFr, Feb 12, 2010 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Markier dir doch Bereiche in der Karten (sowas wie Hitboxen) und blende dementsprechend die Helligkeit von deinem Spieler einfach über...
 

BIG BUG

BeitragFr, Feb 12, 2010 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Die einfachste Lösung ist schon das Modell komplett entsprechend dem darunter liegenden Textel zu beleuchten.

Eine andere Möglichkeit ist die generierte Lightmap auch auf das Modell zu projizieren. Bei einer parallelen Lichtquelle (z.B. Spot, Sonnenlicht) mit einer von oben projizierten Lightmap geht das sehr gut, für Räume zwar nur bedingt einsetzbar, aber vielleicht trotzdem noch schöner als das Modell komplett zu färben.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

faeX

BeitragFr, Feb 12, 2010 19:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Du beschreibst die Lösung ja quasi schon selbst: eine art eigene Schattenengine schreiben. Etwas anderes, als die Lightmap auf die anderen Objekte zu projezieren ist das ja auch gar nicht... Aber dann drehst du dich im Kreis, weil es langsam ist, jeden Frame aufs neue die Schatten zu berechnen. Es sei denn du unterscheidest, ob der jeweilige Schatten auf das Objekt projeziert werden soll, oder nicht. Wink
 

BIG BUG

BeitragFr, Feb 12, 2010 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
nö, die hohen Kosten(Berechnungsaufwand) bei Schattenengines kommen von der Berechnung der Shadowmaps, nicht durch das projizieren auf die Models. Wenn die Shadowmap nur selten oder gar nicht(klassische Lightmap eben) aktualisiert wird kann viel Rechenzeit gespart werden.
Aber es ist richtig, dass einige Schattenengines nach einem solchen Prinzip funktionieren(z.B. FastExt Shadow)
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

Dottakopf

BeitragFr, Feb 12, 2010 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Die einfachste Lösung ist schon das Modell komplett entsprechend dem darunter liegenden Textel zu beleuchten.


Hm aber wie kann ich unterscheiden ob das Trianlge unter mir, wirklich durch schatten dunkel wurde, oder ob die Textur einfach nur sehr dunkel ist(Stein.. Kohle..)
Rechtschreibfehler gelten der allgemeinen Belustigung!
 

BIG BUG

BeitragSa, Feb 13, 2010 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast ja normalerweise mindestens 2 Texturlayer, die Colortextur und die Lightmap. Dich interessiert hier natürlich nur die Lightmap und die enthält ja nur die Beleuchtung.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

Dottakopf

BeitragSa, Feb 13, 2010 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
du musst mich entschuldigen, ich bin noch nicht so fit im 3D bereich.
Wie kann ich die Lightmap abfragen? wird das wie ein eigenes surface behandelt ?

gruß
dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!
 

BIG BUG

BeitragSo, Feb 14, 2010 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei GETBRUSHTEXTURE hast Du einen 2. Parameter Index. Der gibt an welcher Layer zurückgegeben wird. Welcher davon die Lightmap ist musst Du aber kucken, normalerweise der 2. Layer, könnte aber auch ein anderer sein.
Wenn Du den Dateinamen der Lightmaptexture kennst kannst Du auch einfach diese mit Loadtexture nochmal laden. Ich meinte das läd die nicht neu sondern benutzt die bestehende weiter.
Mittels den UV-Koordinaten des unterliegenden Triangles kannst Du dann die Helligkeit herausfinden.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

hamZta

Administrator

BeitragSo, Feb 14, 2010 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.


mfg,
hamZta
Blog.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group