@red: Das mit dem Blending klingt gut, aber ich bezweifel, dass das funktionieren wird. Nur so ein Gefühl. Kann aber auch gut sein, dass es funktioniert. Ich hab's nicht so mit Blending
@Grizzly: Um das Beispiel mit Splinter Cell nochmal aufzugreifen: Es gibt dort Städt, in denen man an geschlossenen Geschäften vorbeikommt. Dort sind dann die Rollläden vor dem Schaufenster herabgelassen. Manchmal brennt in diesen Geschäften aber noch Licht. Wenn man da dran vorbei läuft, sieht man die ganzen Lichtpunkte, die durch den Rollladen dringen. Und da die sich dynamisch um den Spieler legen, nehme ich an, dass es projezierte Texturen sind.
Auch wenn das jetzt eher Licht ist, so sollte das für Schatten doch durchaus auch anwendbar sein.
Ich denke mal, dass Stencilschatten vielleicht ein bisschen so wären wie wenn man mit Kanonen auf Spatzen schießt.
Erwägenswert wäre höchstens noch Shadowmapping. Aber bei der Menge an Gras...
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Du kannst die Schatten bei so Projektiven Sachen (z.B. Tiefentextur bei ShadowMapping) ja einmal am Anfang berechnen und dann immer wieder nehmen. Gesetzt dem Fall deine Welt ist statisch.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Ich wusste zwar, dass das mit Lightmaps geht, aber dass man OpenGL auch anweisen kann, projezierte Texturen nicht jedesmal neu zu berechnen, ist mir neu. Man lernt auch nie aus
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Öhm....ich wei0 jetzt gerade nicht ob wir vom selben reden.
Bei den ShadowMaps wird doch ein Auszug aus dem Tiefenpuffer verwendet, um damit Schatten zu berechnen. Das erstellen dieses Auszugs kann man natürlich bei festen Szenen nur einmal machen.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Texturenprojektion Bei der Texturenprojektion werden OpenGLs Fähigkeiten zur automatischen Generierung von Texturkoordinaten dazu genutzt, eine Textur auf eine Szene zu projezieren.Diese legt sich dann wie man es bei einem Projektor beobachten kann auf die im Lichtkegel des Projektors befindlichen Objekte.Somit lassen sich leicht und mit wenigen Zeilen Quellcode Effekte wie z.B. Suchscheinwerfer oder Taschenlampen sehr realistisch darstellen.
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Gut dann reden wir vom selben. Denn der Schritt "1. Tiefenpuffer-Inhalt der Szene vom Blickpunkt der Lichtquelle aus in eine Textur rendern" muss ja nur einmal gemacht werden. Die erstellte Textur kannst du dann speichern. Das spart Zeit.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Bei den ShadowMaps wird doch ein Auszug aus dem Tiefenpuffer verwendet, um damit Schatten zu berechnen. Das erstellen dieses Auszugs kann man natürlich bei festen Szenen nur einmal machen.
Dieses "kann man nur einmal machen" hat mich etwas verwirrt. Sollte doch eher heißen: "muss man nur einmal machen" Dumm ist nur, dass diese Shadow-Maps entweder Schwarz oder Weiß sind. Auf den Screenshots hier ist der Schatten der Bäume jedoch nicht nur zweifarbig. Und ich denke mal, dass sich Graustufen-Schatten da besser machen würden.
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Nein Nein...die Funktionsweise ist anders. Die Shadowmaps werden nicht benutzt um Sie irgendwo drauf zu blenden. Sie dienen nur einem Vergleich um rauszufinden, ob ein Punkt beleuchtet wird oder nicht.
Das ganze verfahren läuft wie im Wiki beschrieben in 3 Stufen ab. Beim ersten rendern erzeugst du die Tiefentextur. Die is wie du sagtest nur SchwarzWeiß.
Beim nächsten durchgang renderst du die komplette Szene nur mit ambienten Licht. Also entweder Diffus und Specular auf 0 setzen, oder besser noch Licht aus und mittels glColor die ambiente Farbe mit den Farben in der Szene multipliziert nehmen. (geht schneller).
Wenn du dir jetzt die Szene ausgeben lassen würdest, liegt alles gleichmäßig im Schatten. Is natürlich net so schick, aber die Schatten sind Farbig, nicht einfarbig. Denn die eigentliche Farbe wird berücksichtigt.
Jetzt machst du das Licht wieder an, und zeichnest über einen Tiefenvergleich nur die Elemente nochmal, welche auch in der Tiefentextur stehen. Denn alles was in der Tiefentextur steht, wird auch vom Licht angestrahlt.
Das Endprodukt gibst du dann aus.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
ich denke die idee mit dem blending eignet sich recht gut für diese art von rendering. Du müsstest lediglich die Objekte nach Höhe sortieren (Boden, Gras, Pilze, Bäume), und dann von jedem Objekt zuerst einmal den Schatten zeichnen, danach das Objekt an sich. Je nachdem solltest du warhscheinlich GL_DEPTH_TEST beim schatten-zeichnen ausmachen, damit sich dieser auch über die davor gezeichneten objekte legt. ich glaube so könnte es klappen
Also, vielen Dank, es hat tatsächlich so geklappt!!
Sieht fantastisch aus!
ich denke die idee mit dem blending eignet sich recht gut für diese art von rendering. Du müsstest lediglich die Objekte nach Höhe sortieren (Boden, Gras, Pilze, Bäume), und dann von jedem Objekt zuerst einmal den Schatten zeichnen, danach das Objekt an sich. Je nachdem solltest du warhscheinlich GL_DEPTH_TEST beim schatten-zeichnen ausmachen, damit sich dieser auch über die davor gezeichneten objekte legt. ich glaube so könnte es klappen
Also, vielen Dank, es hat tatsächlich so geklappt!! Sieht fantastisch aus!
Dann zeig doch mal ein Bild!
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
.. nur so interessehalber, ist der schatten mit oder ohne GL_Depth_Test?
Ups, ja, sorry, ein Screenshot kommt sofort!
Ist ohne GL_Depth_Test, dachte das wäre klar, sorry.
Ich habe im moment noch das Problem, dass meine Karte gekachelt ist.
Sie ist somit komplett frei durchgehend, hat aber den Nachteil, dass für die Schatten ohne gl_depth_test Grafikfehler auftreten.
Naja, so gut sehen die Schatten jetzt nicht aus, mein geübtes Auge sieht dort eindeutig das die Schatten drübergelegt sind.
Falls du viel Zeit hast, kannst du ja versuchen >>dieses<< Tutorial für OpenGL anzuwenden!
Deine Grafikfehler sind keine Grafikfehler denke ich sondern sind nur ein Ergebniss dessen, das der Schatten einfach drübergelegt wurde!
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Registriert: Mo Feb 24, 2003 18:19 Beiträge: 165 Wohnort: Cologne
Speedmaster, diese Schatten-Techniken auf eine Sprite-Engine zu übertragen ist, jedenfalls behaupte ich das jetzt einfach mal , so gut wie unmöglich. wie schon angedeutet, wird hier mit sprites gearbeitet und nicht mit 3d-Models - und das macht es momentan so gut wie unmöglich, in Echtzeit eine adequate Schattenprojektion durchzuführen. Bei sowas muss man eben tricksen
Elladan, kann es sein dass der Schatten von dem Baum (siehe Screenshot 91.jpg) einfach nur ein bisschen weiter runter "auf den Boden" muss? sieht irgendwie danach aus, ka ich hab sowas noch nie gemacht... ich glaub ja nicht dass du das ziel anstrebst möglichst realistisch zu sein deswegen würde ich dir empfehlen einfach ein bisschen zu experimentieren. z.b. könntest du noch eine seperate Textur für den Schatten machen, da deine Sprite-Bäume EIGENTLICH einen anderen Schatten werfen sollten ... du kannst dann den schatten noch weichzeichnen und/oder gegen ende hin verblassen lassen, gibt da wirklich viele möglichkeiten...
Diese Schattentechnik von GameDev hierher zu portieren, ist wohl der berühmt Schuss mit einer Kanone auf einen Spatzen Zumal für so ein kleines Projekt ein D3D-Port nach OpenGL doch ein klein wenige irrsinnig erscheint. Trotzdem ein netter Link .
@red: Ich hab sowas zwar auch noch nie gemacht, aber ich glaube, die Schatten stimmen schon so. Sie fangen beim Baum an und das Schweben über dem Boden ist nunmal ein Nebeneffekt mit eurer Technik. Das kommt durch den deaktivierten Depth-Buffer .
Was mich mal interessiert ist: Wie schaut das aus, wenn man die Szene jetzt aus einem ähnlichen Blickwinkel betrtachtet, wie bei den ersten Screenshots? Du hast uns ja in den letzten Shots Nahaufnahmen präsentiert. Aber wie schaut das als Ganzes aus?
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Mitglieder in diesem Forum: Bing [Bot], Google [Bot] und 14 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.