include(PUN_ROOT.'syn/css.php'); ?>
Sie sind nicht angemeldet.
Hallo Leute! Hier mal ein paar erste screenshots zu meiner Diplomarbeit, die inzwischen abgegeben ist. Es geht dabei um die Simulation von volumetrischen Wolken (Entstehung, Beeinflussung durch Wind, Auflösung), deren Beleuchtung (wobei ich dafür ein neues und doch relativ effizientes Verfahren entwickelt habe) und natürlich letztlich um deren Darstellung.
Die Screenshots werden für das entsprechende i3D 2008 paper noch verbessert, ich hatte doch einigen Zeitdruck um noch abgeben zu können, also bitte nicht gleich in der Luft zerfetzen
Besonderheiten sind unter anderem:
- die Wolken sind volumetrisch, d.h. man kann sie auch durchuas in Flugsimulationen einsetzen für fly-throughs
- die Simulation der Wolken wird zur Gänze von der GPU berechnet, das einzige was die CPU dazu beiträgt ist die rauhe Form zu spezifizieren in Form von ein paar randomwerten und Shaderparameter zu setzen.
- die Beleuchtung ist verdammt schnell und simpel zu implementieren (fast unverständlich, wieso bisher niemand darauf gekommen ist). Ausserdem kann das Verfahren mit ein paar Tricks wohl auch noch auf multiple scattering erweitert werden, was zu plausibleren Ergebnissen führen sollte. Selbstverständlich wird auch dieser Schritt vollständig in der GPU gelöst.
- die Wolken lassen sich über einige einfache Parameter relativ gut kontrollieren, d.h. man kann den Bewölkungsgrad, die durchnschnittliche Grösse, entsprechende Varianz, usw. angeben. Das ganze funktioniert also auch sehr gut ohne Grafiker, da praktisch alles prozedural erzeugt wird.
- fürs rendering gibt es ein effizientes empty-space-skipping Verfahren, das relativ schnell erlaubt Stellen im volume zu erkennen an dem keine Wolken sind und die demzufolge auch nicht gerendert werden müssen. Prinzipiell ist das rendering aber immer noch der Flaschenhals und bietet noch einiges an Optimierungspotential.
- Bonusfeatures wie shafts of light und ground shadows sind basierend auf diesem Ansatz sehr leicht zu realisieren. Shafts of light habe ich provisorisch noch eingebaut am Ende, ist aber noch weit davon entfernt perfekt zu sein. Für die ground shadows war keine Zeit mehr, allerdings ist nicht mehr als projective texture mapping dahinter.
Zum Schluss: Mindestanforderung ist Hardware mit Support für Shader Model 3.0; angemerkt sei, dass für maximale Genauigkeit bilineares floating point texture filtering sinnvoll ist, was die GeForce 6000 Serie beispielsweise nicht kann. Es lässt sich jedoch auch problemlos für die 6000er Serie implementieren, man verliert lediglich Genauigkeit bei der Beleuchtung da man anstatt eines R32F targets nur einen 8 bit channel verwenden kann. Ich habs nicht ausprobiert, aber es sollte prinzipiell nicht allzu sehr auffallen.
JorEl
Offline
und noch zwei shots
Offline
Hübsch. 017.jpg ist sehr hübsch, hat aber wahrscheinlich nix mit den Wolken zu tun.
Wenn ichs mir recht überlege, kenne ich auch keinen Flugsimulator o.ä. wo man durch lokal begrenzte Wolken fliegen kann...
Wo kann man sich denn die ganze Arbeit runterladen?
DerPeer
Offline
des sieht ja mal richtig lecker aus!
ich kann mich da nur anschließen, wo gibts die diplomarbeit?
Offline
Zitat:
Wo kann man sich denn die ganze Arbeit runterladen?
Die Diplomarbeit selbst gibt es in einigen Wochen online wenn die Diplomprüfung abgeschlossen ist. Aber wenn mal jemand einen Blick reinwerfen will (dann aber bitte nirgends hochladen oder weitergeben) einfach eine mail an mich. Ein entsprechendes paper wird ausserdem für die I3D 2008 in Redwood City, CA eingereicht, wenn das akzeptiert wird müsste ich das Demo gegebenenfalls leider noch zurückhalten, da dies üblicherweise zu den submission conditions solcher Konferenzen gehört. Ich kann aber sicher auch an Einzelne per mail das Demo verschicken ab nächster Woche, deshalb wird bestimmt niemand das paper ablehnen.
Zitat:
Wenn ichs mir recht überlege, kenne ich auch keinen Flugsimulator o.ä. wo man durch lokal begrenzte Wolken fliegen kann...
Ich bin neugierig wie das beim Flightsimulator 10 Expansion Pack dann aussieht, das wird ja in den nächsten zwei Wochen released und beinhaltet unter anderem ein Update für DX10. Zur Zeit glaube ich allerdings, dass dieses Verfahren das schnellste und einfachste ist, das man für solche Zwecke implementieren kann, zumal die Methode von Mark Harris zwar prinzipiell ganz ähnlich funktioniert, aber viel zu langsam ist um damit grössere volumes in Echtzeit zu berechnen. Wenn ich mich jetzt richtig erinnere hat Harris ein 32x32x32 Volume verwendet und konnte das gerade 27mal pro Sekunde updaten. Ich verwende ein 256x32x256 volume und schaffe es auf meinem Notebook mit einer 8700M GT immerhin ~80mal - und das obwohl die M GT nur 32 shader units hat verglichen mit der 8800 GTX, d.h. dort dürfte es theoretisch etwa 4mal so schnell sein. Das schöne daran ist ja auch, dass man das volume nur alle paar Sekunden mal updaten muss, dazwischen kann man bequem linear interpolieren... und das shading für das volume kann ich sogar etwa 160mal in der Sekunde neu berechnen auf der 8700 M GT und zwar ohne auf der shading map einen einzelnen Pixel zu verschwenden. Harris macht das vergleichsweise umständlich (muss erstmal alles in eine 3D texture kopieren) und verschwendet bis zu 50% der Pixel auf der shading map, die er sicherheitshalber ohnehin nur halb so gross macht wie das volume selbst.
Positiv hervorheben sollte man auch, dass man die notwendige Arbeit bequem auf mehrere frames splitten kann, das ist nahezu trivial und führt letztlich dazu, dass der Aufwand zum Berechnen des volumes und zum shading des selben dann überhaupt keine Auswirkungen mehr auf die framerate hat. Alleine die Darstellung ist leider nach wie vor kritisch via point sprites, da hätte ich allerdings für Shader Model 4.0 Hardware eine weitaus bessere Methode, die ich noch ausprobieren werde.
Offline
Zitat:
Hübsch. 017.jpg ist sehr hübsch, hat aber wahrscheinlich nix mit den Wolken zu tun.
Es hat bedingt mit den Wolken zu tun, denn die map die für die shafts of light notwendig ist wird aus dem cloud volume berechnet. Du hast allerdings schon recht, dass es prinzipiell voneinander unabhängig ist, ich wollte nur zeigen, dass sich auch das mit der Methode sehr einfach realisieren lässt.
Offline
alter Socken, 017 is ja der Hammer!
Fehlt nur "Und Gott schuf..." xD
Wie nach nem Gewitterregen, wenn die ersten Sonnenstrahlen rauskommen.
Großes Lob und viel Glück weiterhin
Offline
Das finde ich ja mal hübsch Soll ich dir sagen, dass ich heute erst (ohne vorher den Thread zu lesen) lange darüber nachgedacht habe, wie ich solche Wolken rendern würde. Ich bin mal echt interessiert, wie genau du das gelöst hast. Sieht wirklich sehr hübsch aus.
017 sieht schon richtig cool aus. Darf ich dich fragen, wieso du die LightShafts mit Polygonen renderst und kein PostProcessing-Shader verwendest? Ich hatte vor kurzem mal ein cooles Paper gefunden, aber auch schon wieder vergessen wo es ist, leider!
@DerPeer: In IL2 kann man durch schöne volumetrische Wolken fliegen.
Offline
Nicht schlecht. Ich muss jedoch sagen, dass mir die 0xy-Bilder besser gefallen als die formationz-Bilder, das kann aber auch am Untergrund liegen ...
Ich hatte mir mal überlegt, wie man Wolken machen könnte, hatte auch eine "Lösung", nur wird die sehr wahrscheinlich zu Standbildern führen ;P
Also wirklich beeindruckend.
LOTIPATS
Offline
Danke für das feedback Leute.
Zitat:
Darf ich dich fragen, wieso du die LightShafts mit Polygonen renderst und kein PostProcessing-Shader verwendest?
Beeindruckend, dass dir das aufgefallen ist - Respekt dafür. Ich schätze du hast die shells bemerkt die sichtbar sind weil ich am Ende keine Zeit mehr hatte einen kleinen bug zu korrigieren. Die shells werden nämlich immer genau im Ursprung gerendert anstatt an der Betrachterposition - und da ich bei diesem Screenshot die Betrachterposition ein Stück nach rechts verschoben habe stimmen die shell positionen nicht mehr, weshalb man sie auch sehen kann.
Aber der Grund weshalb ich Geometrie dafür verwende: also in A Simple, Efficient Method for Realistic Animation of Clouds ist beschrieben wie man das ganze noch ein wenig plausibler machen kann, das erfordert aber das (ungefähre) Einhalten der Sortierreihenfolge, was bei einem post processing step natürlich nicht funktioniert. Da ich das noch integrieren will habe ich mal einfach spheres verwendet um eine densitymap die sich aus dem cloudvolume ergibt darauf zu mappen. Falls du den link oder den Titel des papers doch noch finden solltest lass es mich aber bitte wissen, würde mich sehr interessieren.
Hab euch übrigens mal die Arbeit raufgeladen wenn euch das Verfahren interessiert, denn eine Erklärung hier würde wohl zuweit führnen. Falls es Fragen gibt beantworte ich sie in diesem thread aber jederzeit gerne.. Wäre allerdings nett wenn ihr vermeiden könntet sie weiterzugeben oder darauf zu referenzieren, jedenfalls für die nächsten paar Wochen noch.
http://stud4.tuwien.ac.at/~e0025821/dt_rf_final.zip
Offline
Zitat:
Ich muss jedoch sagen, dass mir die 0xy-Bilder besser gefallen als die formationz-Bilder, das kann aber auch am Untergrund liegen ...
Ist im Prinzip immer das selbe Verfahren, dürfte also wirklich am Untergrund liegen. Die formation Bilder sollen ja auch nur zeigen wie die Entstehung von Wolken aussieht... und ja, der Untergrund ist in der Tat katastrophal, aber da er nicht Teil der Arbeit ist habe ich auch entsprechend wenig Zeit investiert.
Offline
Zitat:
Wäre allerdings nett wenn ihr vermeiden könntet sie weiterzugeben oder darauf zu referenzieren, jedenfalls für die nächsten paar Wochen noch.
Du weißt schon das Google das innerhalb weniger Stunden indexiert und es damit öffentlich ist? Wenn das nicht gewünscht ist, verschiebe den Thread nach "Gespräche/Offtopic".
Offline
[quote=HorEl]Ich schätze du hast die shells bemerkt die sichtbar sind weil ich am Ende keine Zeit mehr hatte einen kleinen bug zu korrigieren.
Ich kann mit den Begriff "shells" in diesen Zusammenhang nichts anfangen.
Wenn ich das Paper wieder finde, sage ich dir auf jeden Fall bescheid.
Weißt du was auch nett gewesen wäre ^^ Ich könnte mir vorstellen, dass es momentan für einen Benutzer deiner Wolken sehr unperformant werden könnte, wenn er noch eine ShadowMap für deine Wolken haben möchte, um die auf das Terrain zu legen. Aber du kannst doch bestimmt eine "einfache" Methode hierfür implementieren, denn dazu musst du ja bestimmt nicht die Wolken "volumetrisch" rendern.
-> Ignorier mein dahergerede, was so klingt als wäre es bestimmt voll einfach, wenn es nicht so ist. Muss mir erstmal deinen Ansatz durchlesen, um das genauer behaupten zu können
Achja, nochmals !Sieht richtig gut aus!
Beitrag geändert von artzuk (19.10.2007 13:52:15)
Offline
Zitat:
Aber du kannst doch bestimmt eine "einfache" Methode hierfür implementieren, denn dazu musst du ja bestimmt nicht die Wolken "volumetrisch" rendern.
Steht unter Improvements in der thesis Ich habs auch schon selbst implementiert, funktioniert wunderbar und ist praktisch gratis, da man direkt die erzeugte densitymap verwenden kann.
Zitat:
Du weißt schon das Google das innerhalb weniger Stunden indexiert und es damit öffentlich ist?
Yups, aber ich werde das pdf morgen auch wieder entfernen. Ist ja nur gedacht, damit ihr es euch mal anschauen könnt sofern ihr Interesse habt.
JorEl
Offline
Angemerkt sei aber noch, dass man für eine "korrekte" shadow map anstatt der densitymap eine erzeugen müsste bei der man die slices entsprechend dem Lichtvektor verschiebt, im Prinzip genau so wie es beim Shadingverfahren beschrieben ist. Kostet im Prinzip auch nicht wirklich mehr und würde das Ergebnis sicher verbessern. Werde das auch noch integrieren und dann ein paar screenshots dazu posten.
Offline
Ich habe mir gedacht, ich poste mal den link zur thesis falls sich jemand für cloud rendering interessiert. Inzwischen ist soweit es mich betrifft alles abgeschlossen, gibt also keinen Grund mehr das Ding zurück zu halten.
http://www.cg.tuwien.ac.at/research/pub … -2007-art/
Offline
Zitat:
Und das Ergebnis lautet?
==> Dipl.-Ing.
Was braucht man da an Ergebnissen noch mehr? Nein, also die Methode ist in erster Linie für Flugsimulatoren interessant, in denen man den Wolken wirklich viel Aufmerksamkeit schenken sollte. Für Shooter und dergleichen, wo Wolken ein netter Bonus und nicht mehr sind, ist es zu teuer. Das Potential ist sicher auch noch nicht ausgereizt - aber ich will mich in nächster Zeit so weit wie möglich davon distanzieren, nachdem ich in den letzten Jahren schon zu viel damit zu tun hatte. Werde aber bestimmt auch wieder mal was zu diesem Thema machen, da es ja prinzipiell shr interessant ist.
Offline
Ich glaub Diplom Ingeneur ist trotzdem genau die richtige Richtung, oder? Ich fange demnächst bei einen Softwareentwickler an, die haben fast ausschließlich Ingeneure eingestellt.
Offline
Zitat:
kein Dipl. Inform.?
In Österreich gibt es diesen Titel nicht, da sind Informatiker prinzipiell Dipl.-Ing. bzw. nach dem neuen Studium kann man auch schon früher aufhören und ist Bakkalaureus/Bachelor.
Aber mal sehen ob nicht auch noch ein Dr.tech. dazu kommt.
Zitat:
Ich fange demnächst bei einen Softwareentwickler an, die haben fast ausschließlich Ingeneure eingestellt.
Ja, aber eigentlich ist das schon eine sonderbare Entwicklung. Informatiker wären ja prinzipiell eher für das Klassendesign einsetzbar als für die Implementierung, die dann ja eigentlich straightforward ist. Vor allem wird man im Studium auch nicht unbedingt als Programmierer ausgebildet sondern das Programmieren ist Mittel zum Zweck. Was fehlt ist - zumindest in Ö, weiss nicht ob es in D besser ist - eine eigene Ausbildng für Programmierer die nicht unbedingt im akademischen Bereich sein sollte sondern eher praktischer Natur.
Offline
Zitat:
In Österreich gibt es diesen Titel nicht, da sind Informatiker prinzipiell Dipl.-Ing.
Das Unternehmen ist in der Schweiz, vielleicht sind dort auch alle Informatiker Ingeneure?
In Deutschland gibt es eine Ausbildung Namens Fachinformatiker für Anwendungsentwicklung, ist halt nur eine Ausbildung und kein Studium
Offline
Zitat:
In Deutschland gibt es eine Ausbildung Namens Fachinformatiker für Anwendungsentwicklung, ist halt nur eine Ausbildung und kein Studium
Ah, das ist natürlich vorteilhaft. In Österreich fehlt sowas leider, da gibts kaum Alternativen zum Studium.
Offline