Schatten eines direktionalen Lichts - Möglichkeiten
Übersicht

![]() |
eizdealerBetreff: Schatten eines direktionalen Lichts - Möglichkeiten |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
INpac |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 (![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ach gott, das kann man dir denke ich verzeihen, in nem sonst wahrscheinlich tollen RTS ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group