Schatten und Lichtberechnungen im Terrain ?



  • Hi,

    Ich Frage mich momentan was eine sinnvolle, schnelle Variante für die Licht und Schtten berechnungen ist.

    Ich muss ja testen, ob ein "Lichtstrahl" das Poligon ( Punkt ) trifft.

    Man kann ja wohl schlecht alle Dreieck ( vom Terrain )testen, ob eine Kollison mit der Geraden von Dreieck und Licht stattfindet.

    Bye



  • Wird das Licht bei Terrain nicht oft vorberechnet?



  • Wird das Licht bei Terrain nicht oft vorberechnet?

    Kann ich mir gut vorstellen. Aber was ist mit den anderen ?

    Bye


  • Mod

    eine möglichkeit ist wie beim raycasting die strahlen zu verfolgen und dann auf texturen zu mappen die man dann auf das terrain packt. das kann man für alle objekte nutzen die man auf das terrain setzt z.B. gebäude in einem RTS
    (schattt man bei 512*512 maps in ca 200ms locker auf nem p4 2ghz)

    für dynamische schatten die die ganze zeit auf dem terrain sind kann man entweder shadowvolumes benutzen oder für den momentan zu sehenden terrain ne shadowmap errechnen lassen die man dann draufmapped.
    (bsp. mit shadowmaps http://www.rapso.de/newst.htm )

    rapso->greets();



  • Him

    eine möglichkeit ist wie beim raycasting die strahlen zu verfolgen und dann auf texturen zu mappen die man dann auf das terrain packt.

    Ich kann mir da leider nichts bei vorstellen. könntest du das vielleicht ein bisschen erläutern ?

    (schattt man bei 512*512 maps in ca 200ms locker auf nem p4 2ghz)

    Hm, damit kann ich auch nichts anfangen .. ( 200ms) ? ( Schattt )

    Bye



  • raycasting = "Strahlen werfen" - also genau was du oben selbst vorgeschlagen hat, dies ist nämlich sehr wohl möglich.

    Was rapso mit seinem rechtschreibverstümmelten Satz sagen wollte, war wohl das man für die Berechnung der Schatten mit einer Auflösung 512*512 weniger als 200ms (= 1/5 s) benötigt. 😉


  • Mod

    Max schrieb:

    Him

    eine möglichkeit ist wie beim raycasting die strahlen zu verfolgen und dann auf texturen zu mappen die man dann auf das terrain packt.

    Ich kann mir da leider nichts bei vorstellen. könntest du das vielleicht ein bisschen erläutern ?

    falls du voxelengines kennst, dann weißt du, dass dabei nicht jeder strahl von seinem ursprung verfolgt wird, sondern pro pixel nur die deltas gerechnet werden.
    falls nicht, so geht das beim beschatten:
    als beispiel, die sonne kommt von "links", also fangen wir auf der heightmap links an (in jeder zeile)
    -wir lesen den ersten höchenwert als "referenzwert" ein.
    loop:
    -subtrahieren vom "referenzwert" die höche, die durch die steigung des lichtquellenvectors vorgegeben ist, bei 45° lichteinfall also z.B. 1.f
    -wir gehen ein pixel auf der heightmap weiter, lesen den aktuellen höchenwert
    -vergleichen den aktuell gelesenen höchenwert mit "referenzwert"
    -- falls referenz<aktuelle höche
    --- licht trifft die position
    --- "referenzwert" = aktueller höchenwert
    -falls nicht zeilenende jump zu "loop"

    Max schrieb:

    (schattt man bei 512*512 maps in ca 200ms locker auf nem p4 2ghz)

    Hm, damit kann ich auch nichts anfangen .. ( 200ms) ? ( Schattt )

    0.2 Sekunden 😃

    rapso->greets();


Anmelden zum Antworten