Screenshot Thread - Eine gute Idee?


  • Mod

    Optimizer schrieb:

    Dann trag ich auch mal was zu bei.

    http://firbach.dyndns.org/garbage/screens/screen0.jpg
    http://firbach.dyndns.org/garbage/screens/screen1.jpg

    Was man hier sieht, wird vielleicht mal eine RTS-Engine. Im Moment habe ich hauptsächlich an der Grafik was gemacht, nicht an der Spiellogik. Es sind grundlegende Sachen drin wie frustum culling, nach state sortiertes rendern, Terrain (ohne Geometrie), Unterstützung für halbtransparente Objeke, Einfärben von Objekten je nach Spielerzugehörigkeit (ohne extra pass), GUI-System, aber es fehlt noch ein Animationssystem. Das neueste ist die Tageszeitsimulation, naja sieht ganz nett aus, aber mehr auch nicht. 😉

    kann man den himmel sehen, dass du die tageszeit simulierst? wirkt sich das auch irgendwie aufs spiel aus?
    2d terrain? wird man irgendwie rotieren koennen, obwohl es keine geometrie fuers terrain gibt?



  • Man kann den Himmel nicht sehen. Es wandert allerdings die Sonne (und der Mond) und beide gehen auf und ab. Das Tageslicht färbt sich in der Dämmerung etwas rötlich (erster Screenshot). Die Tageszeit wird sich auf den Sichtradius der Einheiten auswirken und es wird Einheiten-Fähigkeiten geben, die nur zu einer bestimmten Tageszeit nutzbar sind, zum Beispiel eine spezielle Tarnung.

    Das Terrain ist im Moment 2-dimensional, es gibt also keine verschiedenen Höhen. Man kann die Ansicht rotieren, falls du das meinst, auch neigen und zoomen.



  • Hi.

    Wenn ich mal nichts besseres zu tun habe, dann beschäftige ich mich manchmal mit "Direct Volume Rendering". Genauer gesagt mit Raycasting. Im Prinzip geht es bei der ganzen Sache um die Visualisierung von CT-Aufnahmen, MRT-Aufnahmen und so weiter, bzw. grob gesagt um die Visualisierung von Volumendaten.

    Folgenden Screenshot habe ich vor 1,5 Jahren gemacht, seither habe ich allerdings nicht nennenswert an dem Projekt weitergearbeitet.

    http://img441.imageshack.us/img441/5464/jaradapstent2ql4.png

    Als zukünftige Entwicklung könnte man sich hier zum Beispiel vorstellen, dass man in dem Volumen eine Bildsegmentierung vornimmt, um letztendlich einzelne Objekte benennen zu können. In der Visualisierung würde das dann zum Beispiel darauf hinauslaufen, dass man verschiedene Farben für verschiedene Organe und so nimmt. Dadurch könnten dann auch Dinge auf dem Bild sichtbar werden, die man beispielsweise in dieser Aufnahme nicht sieht. ...man könnte auch bestimmte Organe "ausblenden".

    Der dargestellte Datensatz ist übrigens so um die 170MB groß, wenn ich mich richtig erinnere. Um das Volumen in Echtzeit mit der Maus drehen zu können, habe ich es dann immer runterskaliert. ...und wenn die Bewegung der Maus aufgehört hat, habe ich das hochaufgelöste Bild neu berechnet. Eine Alternative, die man hier machen könnte, wäre die Nutzung des sogenannten ShearWarp-Algorithmus. Hierbei wird das Volumen nicht gedreht, sondern praktisch nur verzerrt. Der Vorteil davon ist, dass man das Volumen bei der Darstellung in Speicherreihenfolge durchlaufen kann. Das ermöglicht einem eine viel höhere Auflösung bei der Arbeit mit dem Bild. Dafür ist die Darstellung natürlich nicht im eigentlichen Sinne "korrekt".

    Das Programm nutzt übrigens keine Grafikbeschleunigung. Es gibt zwar Ansätze, solche Dinge über die Grafikkarte darzustellen, das würde dann aber wieder auf andere Algorithmen hinauslaufen. Beispielsweise könnte man den Marching-Cubes-Algorithmus verwenden, um entsprechende Daten für die Grafikkarte zu generieren.



  • Vielleicht kennt einer von euch das Brettspiel "Heroscape". Aufgrund des Mangels an echten MItspielern, habe ich versucht das Spiel im Rechner umzusetzen.
    Hier ein paar Bilder:

    http://img297.imageshack.us/my.php?image=editor7de4.jpg

    http://img404.imageshack.us/my.php?image=editor9rx8.jpg

    http://img140.imageshack.us/my.php?image=editor11ey8.jpg

    http://img209.imageshack.us/my.php?image=55752857ug0.jpg

    Enthalten ist das komplette Spiel inklusive einiger Erweiterungen. Man kann sowohl bis zu viert an einem Rechner spielen, als auch alleine gegen einen eher nicht so klugen Computergegner und mit bis zu 8 Personen über Lan/Internet.
    Es ist auch ein Editor enthalten, mit dem man neue Levels erstellen kann.



  • Das sieht doch mal cool aus 🙂

    Wahrscheinlich ist es schon eine Weile her, dass du das geschrieben hast, aber wenn die Grafiken ein wenig farbenfroher wären, würd's gleich nochmal viel schicker aussehen 🙂


  • Mod

    da stimm ich zu, sieht echt cool aus. vor allem sieht es auch aus als waere es fertig 🙂
    die texturen wirken ein wenig kriselig, vielleicht ist filterung aus?



  • Also die Farben vom Spiel sind im Orginal auch so und da ich künstlerisch und graphisch nicht so der Könner bin, war ich schon froh, das überhaupt so hinbekommen zu haben. Die Bilder sind auch stark komprimiert, in echt sieht es besser aus. Das Spiel ist komplett spielbar und somit fertig, es fehlen lediglich noch ein paar Spezialfähigkeiten von einigen Figuren (es gibt im Spiel ca 40 verschiedene) und ein Win/Loss Bildschirm. Der Rest funzt, sogar der Würfelwurf funktioniert prima (6 seitige und 20 seitige).



  • Schmiddie schrieb:

    sogar der Würfelwurf funktioniert prima (6 seitige und 20 seitige).

    🙂 http://imgs.xkcd.com/comics/random_number.png



  • Ist ja lustig, nettes Bild. Ich meinte damit, das sie wie echte Würfel rollen, die mit der Hand auf den Tisch geworfen werden, also graphisch was hermachen.



  • Das find ich eigentlich eine coole Idee. Bei einer Brettspielumsetzung wär ich glaub ich nie auf die Idee gekommen das Spielen am Brett an sich zu simulieren, sondern eben wie Aoe oder Civilization.



  • Screenshot:
    http://loop.servehttp.com/~vertexwahn/uploads/RayDebugger1.png

    Mit dem Tool kann man bisher nur Strahlen von einem Projektionszentrum aus durch eine Projektionsfläche "schießen" - es spiegelt als das Prinzip der primären Strahlen im Raytracing wieder.

    Je nachdem wie ich Zeit finde werde ich das Programm noch ein bisschen erweitern. In der ersten Ausbaustuffe soll es möglich sein Kugeln und Dreiecke in die Szene einzufügen. Das Tool soll dann Schnittpunkte mit dem am nahe liegestem Objekt zum Projektionszentrum berechnen.

    Im nächsten Schritt soll es möglich sein der Szene Punktlichter hinzu zu fügen. Außerdem sollen dann Materialen eingeführt werden und es soll der diffuse Lichtanteil berechnet werden und angezeigt werden.

    Damit kann jemand der versucht einen Raytracer zu programmieren gegenprüfen, ob sein Raytracer die Richtigen Werte liefert - daher auch der Name des Projekts: RayDebugger

    In einer weiteren Ausbaustuffe wären dann auch Reflektierte und gebrochene Strahlen denkbar (also Sekundär Strahlen).

    Damit sollte es dem Entwickler eines Raytracers dann möglich sein nachvollziehen ob der Raytracer auch in diesem Programmteilen richtig arbeitet.

    Da das manuelle vergleichen von Diffusen Lichtanteilen, das verfolgen von rekursiven Strahlen, das Nachbauen der Szene in dem Editor, usw. sehr aufwendig ist soll eine Schnittstelle geschaffen werden mit der es möglich ist jeden Wert den der Raytracer berechnet an den RayDebugger zu schicken, der daraufhin alle Berechnungen des Raytracers gegenprüft und bei einer Abweichung eine Fehlermeldung ausgibt. Außerdem soll im Zuge der Fehlermeldung auch gleich der Fehler visualisiert werden, wobei dieser dem Korrekten Wert (z. B. Strahl) gegenüber gestellt werden soll.

    Die Schnittstelle für einen Raytracer zum Raydebugger könnte z. B. so aussehen:

    #ifndef RayDebugger_Interface_h
    #define RayDebugger_Interface_h
    
    void rdCreateSphere(float radius, float x, float y, float z);
    void rdCreateTriangle(...);
    void rdSpanRay(float projection_center_x, float projekction_center_y, ...,
                   int cellX, int cellY);
    void rdPrimaryDiffuseReflection(float diffuse);
    void rdSecoundaryDiffuseReflection(float diffuse, int recursionLevel);
    ...
    
    #endif
    

    Ob ich überhaupt noch am Projekt weiter mache steht in den Sternen - mich würde jetzt nur noch eines interessieren: würdet ihr den RayDebugger verwenden, wenn ihr einen Raytracer Programmieren würdet?





  • Da wir gerade beim Thema Raytracing sind, hier paar Bilder meines Raytracers (inkl. Photon-Mapping):
    http://www.infoboard.org/screenshots/bunny_scene_local_lighting.jpg (Raytracer, Refraktion, Hardshadows)
    http://www.infoboard.org/screenshots/bunny_scene_photon_mapping.jpg (Raytracer, Photon Mapping, Softshadows)
    http://www.infoboard.org/screenshots/ray2.JPG (Reflektionen)
    http://www.infoboard.org/screenshots/small_participating_media01.JPG (Participating Media, Kaustiken)
    http://www.infoboard.org/screenshots/small_participating_media02.JPG



  • this->that schrieb:

    Da wir gerade beim Thema Raytracing sind, hier paar Bilder meines Raytracers (inkl. Photon-Mapping):
    http://www.infoboard.org/screenshots/bunny_scene_local_lighting.jpg (Raytracer, Refraktion, Hardshadows)
    http://www.infoboard.org/screenshots/bunny_scene_photon_mapping.jpg (Raytracer, Photon Mapping, Softshadows)
    http://www.infoboard.org/screenshots/ray2.JPG (Reflektionen)
    http://www.infoboard.org/screenshots/small_participating_media01.JPG (Participating Media, Kaustiken)
    http://www.infoboard.org/screenshots/small_participating_media02.JPG

    Das sieht ja wirklich ganz nett aus. 👍



  • Ich habe bei mir nochmal das Baum-Modell überarbeitet und die Qualität der Beleuchtungsberechnung erhöht (zum Beispiel haben Blätter ein mattes spec highlight). Hier ein romantischer Sonnenaufgang 😉 :

    http://firbach.dyndns.org/garbage/screens/screen2.jpg
    (irgendwie fehlen Schatten)


  • Mod

    jaa, schatten, ich will schatten sehen :D, du koenntest, falls du immer nur top-down schaust, einfach pro baum ne schattentextur aufs terrain blenden bevor du irgendeinanderes objekt zeichnest. duerfte relativ simple, performant und gut aussehend sein 🙂



  • Der Ansatz hört sich so an als würde es an den Stellen, an denen sich Schatten überlappen, doppelt so dunkel werden. Ich möchte das allerdings auf jeden Fall vermeiden, da während der Dämmerung die Schatten ziemlich lang sind und ich denke, dass es schlecht aussehen würde, da es zu vielen Überlappungen kommt. Performant ist das bestimmt, aber ich glaube ich werde eher eine Technik wählen, die dieses Problem vermeidet. Oder beides anbieten.

    einfach pro baum ne schattentextur aufs terrain blenden bevor du irgendeinanderes objekt zeichnest

    Außerdem zeichne ich das Terrain als letztes, weil es mit seinen texture lookups den Grafikkarten offenbar massiv zusetzt. Ich hab mir das im NvperfHud mal angesehen. Ich werde wohl auch noch das GUI in den Z-Buffer schreiben und vor der Szene rendern. Ich brauche also eine Schattentechnik, die damit kompatibel ist.

    Ich habe mich aber noch nicht genauer mit den Techniken befasst und wahrscheinlich werd ich erstmal eher was am Spiel selber machen.



  • Schaut aber gut aus!!


  • Mod

    D schrieb:

    Schaut aber gut aus!!

    vor allem aber ist es immer spielbar (sofern man das neuste .Net hat) 🙂

    @optimizer
    das mit dem sonnen auf und untergang hatte ich nicht mehr im kopf. eine einfache loesung waere dass du die schatten erstmal in eine weisse textur zeichnest. diese kannst du dann im terrainpass ueber die anderen layer blenden.
    falls du z-optimierungen brauchst, bietet sich ein z-pass am anfang an. wuerde aber bedeuten dass du alles zweimal durch deine renderpipeline steckst. (wir koennen das im extra thread klaeren falls du denkst, dass da noch mehr konversation noetig ist:) )



  • yeeehaaa, wieder Internet. 🙂

    @rapso: Danke für den Input, ich werde darauf auch bestimmt mal wieder zurückkommen. Demnächst muss ich aber erstmal was an der Spielmechanik machen. Da gibt es noch fast nichts (es ist ein noch recht junges Projekt).


Anmelden zum Antworten