Schatten eines direktionalen Lichts - Möglichkeiten

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

eizdealer

Betreff: Schatten eines direktionalen Lichts - Möglichkeiten

BeitragSa, Okt 02, 2004 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
So, mal wieder ein etwas komplexeres Problem:
Ich habe ein Meshterrain, das aus Tiles besteht, diverse Objekte drauf, die Schatten werfen (nur auf das Terrain), und eine virtuelle Sonne, also ein direktionales Licht, von dem nur Winkel bekannt sind.

Wie berechne ich nun eurer Meinung nach am besten die Schatten? Wie stelle ich sie am besten dar?

Hinweis: Direktionales Licht schränkt einen beim Schattenrendern ein, weil normales Rendern einem Punktlicht entspricht. Mit orthogonaler Projektion müsste das schon eher hinhauen, zumindest nach meinem Physikverständnis (auch wenn ich mir da nicht sicher bin).

Ein paar Methoden die ich mir überlegt habe (natürlich mit einiger Anregung aus anderen Foren, aber auch aus Threads hier)

- Bei statischen Objekten einmal den Schatten mit non-orthogonaler Projektion rendern (weil das bei einzelnen kleineren Objekten kaum auffällt). Alle statischen Schatten in einer Textur zusammenfassen. SingleSurface Quads für Schatten erstellen und die Texturen draufkleben. Für dynamische Objekte das gleiche, nur eben in jedem Frame upgedatet.
Nachteile: Man müsste extrem oft Renderworld benutzen (Speedverlust?). Zudem addieren sich die Schatten, was zur Folge hat, dass der Schatten bei sich überschneidenden Schattenmeshes dunkel bis schwarz werden könnte, was in Relation zu den anderen (helleren?!) Schatten komisch aussehen könnte.

- Alle Objekte (statisch und dynamisch) gleichzeitig einmal rendern mit orthogonaler Projektion (Allerdings hab ich da keinen Plan wie man die Cam positionieren muss. In meinen Tests fiel mir das sehr schwierig). Über das ganze Terrain einen Mesh legen und die Textur draufhauen. Nachteile: Sehr viele Polygone, auch statische Objekte werden jedes mal gerendert.

- Lowpoly Objekte automatisch generieren, dann von jedem Vertex in Sonnenrichtung zum Terrain auf Kollision mit Terrain überprüfen. Wenn es eine Kollision gibt, Koordinaten speichern. Anschliessend den Mesh quasi flach auf dem Terrain neu aufbauen, ohne Textur und in schwarz. Statische Objekte nicht, dynamische Objekte oft updaten. Nachteile: Komplizierter Rechenaufwand, relativ viele Polygone, entweder das additive Problem wie bei der ersten Methode entsteht, oder man müsste alle diese neuen Meshes in ein Mesh schreiben, was einen zusätzlichen Rechenaufwand darstellt.


Jetzt bin ich doch mal schwer gespannt, ob überhaupt jemand antwortet Smile
 

INpac

BeitragSa, Okt 02, 2004 18:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, hatte nicht jemand mal das c&c:generals-shadow-system erklärt? glaube dasfunktionnierte mit kopieren des meshes .. weiter weiß ich auch nicht mehr (Wink) - such mal, vllt ist das allerdings seit nem baord-restart schon wieder weg

edit: denke, dass dieses verfahren, wie auch immer es funktionert, schneller und schöner als die projection-shadows sind. fügt man alles meshes zusammen (was allerdings animieren der shadow-meshes "erschweren" würde) geht das sicherlich ganz flott ...
 

Dreamora

BeitragSa, Okt 02, 2004 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo, kopieren des Meshes und projizieren der vertices auf den untergrund ( also linear verschieben bis auf den boden ) ...

am einfachsten nimmt man dafür aber spezielle meshes, schattenmeshes, die vereinfachte versionen der original meshes sind ( das qhull system inkl der userlib *siehe bb.com* ). dann kann man das relativ gut umsetzen.

Das einzige problem ist, dass du dann eigentlich nen besseres system als das von blitz bräuchtest bezüglich linepick. wenn du also nuclear glory hast oder aus den englischen codearchiven den tri intersect code von sswift nimmst, sollte das in echtzeit gehen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

eizdealer

BeitragSa, Okt 02, 2004 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke die Berechnung würde ich auch selber hinkriegen. Linepick wäre ja wirklich viiiel zu langsam. Bleibt nur noch das additive Problem...
 

INpac

BeitragSo, Okt 03, 2004 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
ach gott, das kann man dir denke ich verzeihen, in nem sonst wahrscheinlich tollen RTS Wink - so unreal ist es zumal auch nicht, immerhin ist nicht direkter kernschatten an der stelle, wo das sonnenlicht direkt nicht hinfällt.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group