Gedankenanstoss: Bachelorarbeit Computergrafik



  • Also ich hab damals für meine Studienarbeit etwas gemacht, worauf ich richtig Böcke hatte. Habs meinem Prof vorgeschlagen, zeitlichen Rahmen und Inhalte abgesteckt, und dann durfte ich es machen. ..will sagen: Wenn Du Lust auf etwas bestimmtes hast, was Du schon länger mal ausprobieren wolltest, versuch es. Du musst Dich nicht immer an übliche Themen halten.



  • Physiksimulationen eignen sich gut, um z.B. noch GPGPU-Programmierung anzuwenden. Das ist eine sehr junge und interessante Technik. Z.B. kann man dann etwas mit OpenCL oder CUDA machen.
    Da hat man genug zu schreiben und das Thema ist noch nicht ganz so ausgelutscht. 😉

    Falls es dich z.B. interessiert, etwas zu parallelisieren. Gibt sicherlich viele Algorithmen, die man noch auf ne Grafikkarte portieren kann.



  • anjohn schrieb:

    Physiksimulationen eignen sich gut, um z.B. noch GPGPU-Programmierung anzuwenden. Das ist eine sehr junge und interessante Technik. Z.B. kann man dann etwas mit OpenCL oder CUDA machen.
    Da hat man genug zu schreiben und das Thema ist noch nicht ganz so ausgelutscht. 😉

    Naja, er wollte ja Computergrafik machen und keine Physiksimulationen...

    Bezueglich der Bachelorarbeit:

    Ich denke, man sollte sich auch anhoeren, was der Prof so fuer Vorschlaege hat. Letztendlich ist es so, dass man bei der Bachelorarbeit erste Beruehrungen mit der Forschungsfront machen koennte. Auf ein Thema, das diesbezueglich interessant ist, kommt man nicht von alleine.

    Bezueglich Physik-Simulationen auf GPGPUs:

    Wenn Physik-Simulationen eine hohe Rechenleistung erfordern und stark parallelisierbar sind, dann laesst man sie traditionell auf Supercomputern laufen. Diesbezueglich sind in letzter Zeit durchaus Supercomputer entstanden, die auf jedem Rechenknoten auch entsprechende Grafikkarten fuer eine zusaetzliche Parallelisierung bereitgestellt haben. Zum Beispiel vor ein paar Jahren der Tianhe-1 Supercomputer in China, der dadurch die damalige Top-500 Liste angefuehrt hat. Ich bin allerdings sehr skeptisch, was die Zukunft dieser Form der Parallelisierung in einem derartigen, professionellen Umfeld betrifft. Wenn man sich die neueste Top-500 Liste ansieht, dann ist jetzt Tianhe-2 ganz oben. Der hat statt den zusaetzlichen GPGPUs Xeon-Phi Beschleunigerkarten von Intel. Die bieten aus meiner Sicht vor allem den Vorteil, dass die Parallelisierung auf diesen Karten so ablaeuft, wie man es mit Supercomputern gewohnt ist. Man muss keine grossen Codeaenderungen vornehmen, um von dieser Rechenleistung profitieren zu koennen.

    EDIT: Ok, habe den vorherigen Beitrag vielleicht falsch verstanden. Da geht es wohl eher um Spielzeug-Physik. ...eben fuer Computerspiele. Das ist ein anderes Marktsegment, in dem GPGPUs vielleicht sehr relevant werden koennten.


  • Mod

    Gregor schrieb:

    Bezueglich Physik-Simulationen auf GPGPUs:

    Wenn Physik-Simulationen eine hohe Rechenleistung erfordern und stark parallelisierbar sind, dann laesst man sie traditionell auf Supercomputern laufen. Diesbezueglich sind in letzter Zeit durchaus Supercomputer entstanden, die auf jedem Rechenknoten auch entsprechende Grafikkarten fuer eine zusaetzliche Parallelisierung bereitgestellt haben. Zum Beispiel vor ein paar Jahren der Tianhe-1 Supercomputer in China, der dadurch die damalige Top-500 Liste angefuehrt hat. Ich bin allerdings sehr skeptisch, was die Zukunft dieser Form der Parallelisierung in einem derartigen, professionellen Umfeld betrifft. Wenn man sich die neueste Top-500 Liste ansieht, dann ist jetzt Tianhe-2 ganz oben. Der hat statt den zusaetzlichen GPGPUs Xeon-Phi Beschleunigerkarten von Intel. Die bieten aus meiner Sicht vor allem den Vorteil, dass die Parallelisierung auf diesen Karten so ablaeuft, wie man es mit Supercomputern gewohnt ist. Man muss keine grossen Codeaenderungen vornehmen, um von dieser Rechenleistung profitieren zu koennen.

    auf XeonPhi zu arbeiten ist nicht soviel anders als auf GPUs zu arbeiten, du hast deine normale CPU die ein paar slave XeonPhi beschleunigerkarten hat. du laedst resourcen hoch, kickst kernels los, versuchst parallel dazu daten zu verschieben und wenn du faul bist, nutzt du zu all dem OpenCL.

    Mit beschleuniger karten zu arbeiten ist an sich nicht anders als wenn man sich ein MPI system erstellt, es gibt einen koordinator, dazu slaves und man versucht rechenbloecke moeglichst unabhaengig, oft redundant, dennoch zeitlich schneller ablaufend auszufuehren. An sich altbewehrtes in klein.



  • hallo, kleines update.

    habe mich mit professor unterhalten, und er hat mir paar themen gezeigt die er von sich aus wüsste. das war aber alles pure computergrafik weil's um die visualisierung von daten ging.

    ich soll mir bis morgen ein paar konkrete themen überlegen, die ich gerne machen würde. ich hab schon eins, bin aber noch auf der suche nach mehr, irgendwie bin ich ratlos. was ich mir bisher überlegt habe ist einfach "erzeugung und darstellung von virtuellen landschaften", also minecraft-style/dwarf fortress style prozedurale terrainerstellung (ohne voxel-look) inkl. rendering. für ne bachelorarbeit ist das denk ich prinzipiell ein gutes thema, da es arbeiten davon noch nicht wie sand am meer gibt (obwohl man verteilt viel material zu den einzelthemen findet), und weil es da einiges gibt was ich neu zum thema beitragen könnte.

    weiss nicht, ob ihm das zu wenig computergrafik ist, aber ihm vorstellen werd ichs. probieren schadet ja nichts. ich weiss, dass ihm physiksimulationen oder sowas zu weit weg von computergrafik gehen.

    noch irgendwelche ideen?



  • nichtkenner der themen schrieb:

    was ich mir bisher überlegt habe ist einfach "erzeugung und darstellung von virtuellen landschaften", also minecraft-style/dwarf fortress style prozedurale terrainerstellung (ohne voxel-look) inkl. rendering.

    ja aber was ist der zweck der arbeit?
    nach welchen objektiven kriterien willst du mehrere ansätze zur terrain-generierung vergleichen?
    einfach irgendwelche terrain-algos implementieren und hübsche screenshots davon machen dürfte zu wenig sein für eine abschlussarbeit.

    und was könntest du denn neu zu dem thema beitragen, wie du sagst, was nicht schon in tausend spielen und demos abgegrast wurde?



  • qweasdyxc schrieb:

    nichtkenner der themen schrieb:

    was ich mir bisher überlegt habe ist einfach "erzeugung und darstellung von virtuellen landschaften", also minecraft-style/dwarf fortress style prozedurale terrainerstellung (ohne voxel-look) inkl. rendering.

    ja aber was ist der zweck der arbeit?
    nach welchen objektiven kriterien willst du mehrere ansätze zur terrain-generierung vergleichen?
    einfach irgendwelche terrain-algos implementieren und hübsche screenshots davon machen dürfte zu wenig sein für eine abschlussarbeit.

    und was könntest du denn neu zu dem thema beitragen, wie du sagst, was nicht schon in tausend spielen und demos abgegrast wurde?

    Das werd ich mir alles überlegen, falls er dem Thema zustimmt. Ich werds ihm vorschlagen weil es einfach etwas ist, mit dem ich mich gerne beschäftigen würde.

    Mir gehts gerade eher drum noch andere potentielle Themen zu finden.



  • wie wärs mit implementierung und evaluation von verschiedenen systemen für globale beleuchtungsmodelle?

    gibts da mittlerweile neue sachen? ich weiss von sparse voxel octree global illumination das eigentlich in der UE4 eingesetzt werden sollte. gibts neuere alternativen?



  • nichtkenner der themen schrieb:

    Das werd ich mir alles überlegen, falls er dem Thema zustimmt.

    Es würde mich sehr wundern, wenn Dein Prof Dir nicht genau solche Fragen stellt. Darauf wollte ich ja auch hinaus: Du willst Dich mit irgendwas beschäftigen was interessant aussieht, hast aber keine Ahnung wozu das im Rahmen der Arbeit gut sein soll. Bevor das ein peinliches Gespräch wird, denk lieber auch ein wenig über solche Fragen nach.



  • qweasdyxc schrieb:

    nichtkenner der themen schrieb:

    Das werd ich mir alles überlegen, falls er dem Thema zustimmt.

    Es würde mich sehr wundern, wenn Dein Prof Dir nicht genau solche Fragen stellt. Darauf wollte ich ja auch hinaus: Du willst Dich mit irgendwas beschäftigen was interessant aussieht, hast aber keine Ahnung wozu das im Rahmen der Arbeit gut sein soll. Bevor das ein peinliches Gespräch wird, denk lieber auch ein wenig über solche Fragen nach.

    da hast du wahrscheinlich recht. stell dir aber den prof nicht zu streng vor :P.

    qweasdyxc schrieb:

    nichtkenner der themen schrieb:

    was ich mir bisher überlegt habe ist einfach "erzeugung und darstellung von virtuellen landschaften", also minecraft-style/dwarf fortress style prozedurale terrainerstellung (ohne voxel-look) inkl. rendering.

    ja aber was ist der zweck der arbeit?

    nach welchen objektiven kriterien willst du mehrere ansätze zur terrain-generierung vergleichen?

    die erstellung eines frameworks zum generieren von prozeduralen landschaften, inkl. entsprechender softwarearchitektur, tests wo sie sinnvoll sind, usw. und natürlich nen renderer hinten dran, damit man was sieht.

    ich müsste mich halt dann damit auseinandersetzen wie man verschiedene mathematische konstrukte oder evtl. sogar sowas wie cellular automata benutzen kann um prozedural dinge zu erzeugen.

    einfach irgendwelche terrain-algos implementieren und hübsche screenshots davon machen dürfte zu wenig sein für eine abschlussarbeit.

    Naja, geht ja nicht nur um Terrain, sondern weiterhin um die Erzeugung diverser Landschaftsfeatures... Höhlensysteme, Gebiete mit verschiedenen klimatischen Eigenschaften... usw.

    Ich mach mir eher sorgen dass das was ich mir da vornehme zu viel ist. Sind ja nur 5 Monate.

    Ist auch gut weil die Arbeit sehr gut erweiterbar ist, wenn man nach der hälfte der Zeit schon sein ursprüngliches Ziel erreicht hat.

    und was könntest du denn neu zu dem thema beitragen, wie du sagst, was nicht schon in tausend spielen und demos abgegrast wurde?

    selbst wenn es um simple terrainerzeugung (berge und meer) geht, ist tausende natürlich übertrieben... aber wenn das system komplexere features enthalten soll, ist das denk ich noch lange nicht ausgelutscht.

    komplett funktionsfähige und recht komplexe systeme gibt es zwar, aber zu denen konnte ich bisher keine ausfürliche dokumentation finden. dementsprechend würde ich mir viele quellen raussuchen, zusammentragen und vergleichen müssen, und in der wahrscheinlich auftretenenden absenz von kompletten erklärungen selbst viele gedanken machen müssen und auf meine eigenen ideen und implementierungen kommen. das ist eigentlich klassisches wissenschaftliches arbeiten, oder sehe ich das falsch?



  • hallo nochmal. würde bei erfahrenen leuten nun mal sozusagen nach sub-themas fragen.

    das bachelorarbeitsthema ist jetzt (vorerst) "untersuchung von global illumination techniken auf performance und qualität". das is nicht der offizielle titel, den hab ich mir grad aus dem hintern gezogen.

    im prinzip möchte ich so viele echtzeit-global illumination algorithmen wie möglich implementieren und hinsichtlich ihres rechenzeitaufwands und der resultierenden qualität (hinsichtlich physikalischer korrektheit, vorkommender beleuchtungsartefakte, etc.). mit dem prof habe ich dabei mal eine grundanzahl von 3 festgelegt, nach oben frei offen, nach unten eher nicht. wenn ich es nur hinbekommen sollte einen einzigen algorithmus in der vorgegebenen zeit (sollte bis anfang märz fertig sein wenn ich mich nicht täusche) zu implementieren würden wir das thema wahrscheinlich so zurechtbiegen, dass ich es in ne vorhandene software implementiere.

    nun habe ich aber von GI so gut wie keine ahnung und daher einen schlechten ausgangspunkt um geeignete algorithmen auszuwählen. kriterien sind

    - 3 davon implementierbar in ~6 monaten (oktober bis märz mit eingeschummelter vorarbeitszeit im september)
    - ausreichend quellen sollten verfügbar sein, damit ichs selbst implementieren kann. d.h. eventuell proprietär closed source lösungen wo nur eine pdf von ner präsentation davon existiert sind ein no-go.
    - muss echtzeitfähig sein, d.h. dynamische lichtquellen unterstützen. dynamische geometrie muss nicht sein, d.h. statische geometrie wäre OK.
    - möglichst zeitnahe (algorithmus sollte nicht veraltet und durch schlicht und einfach besseres ersetzt sein)

    hat da jemand von euch vielleicht vorschläge, was ich genauer untersuchen sollte?



  • nichtkenner der themen schrieb:

    nun habe ich aber von GI so gut wie keine ahnung und daher einen schlechten ausgangspunkt um geeignete algorithmen auszuwählen. kriterien sind
    ...
    hat da jemand von euch vielleicht vorschläge, was ich genauer untersuchen sollte?

    Ich wuerde erstmal nachforschen welche Algorithmen es da so gibt, auch das ist Teil der Arbeit.



  • maximAL schrieb:

    nichtkenner der themen schrieb:

    nun habe ich aber von GI so gut wie keine ahnung und daher einen schlechten ausgangspunkt um geeignete algorithmen auszuwählen. kriterien sind
    ...
    hat da jemand von euch vielleicht vorschläge, was ich genauer untersuchen sollte?

    Ich wuerde erstmal nachforschen welche Algorithmen es da so gibt, auch das ist Teil der Arbeit.

    mach ich ja. aber ohne genaue kenntnis der funktionsweise und speziel der implementierung der algorithmen zu haben hab ich einen schlechten ausgangspunkt um zu entscheiden, mit welchen ich mich genauer beschäftige. natürlich betreibe ich gerade viel literaturrecherche. ich frage hier nur, falls es jemanden gibt der sich mit dem thema schon genauer beschäftigt hat und evtl. vorschläge hat.



  • Ein paar wichtige Techniken zu dem Thema (wenn es um Real-time geht):

    • Instant Radiosity (Virtual Point Lights)
    • Imperfect Shadow Maps
    • Reflective Shadow Maps
    • Light Propagation Volumes
    • Voxel Cone Tracing

    Auch zu erwähnen wäre evtl. Screenspace Ambient Occlusion in all seinen verschiedenen Ausführungen (bin persönlich allerdings kein Fan davon).

    Dieser SIGGRAPH Course, wenn auch nichtmehr ganz up to date, ist vielleicht kein schlechter Einstieg (Video des Talk im Source Material): http://dl.acm.org/citation.cfm?id=1667258

    Desweiteren imo potentiell interessant: Precomputed Radiance Transfer

    Und schau dich auch in Richtung Real-time Path Tracing um (Stichwort Brigade Renderer).



  • dot schrieb:

    Ein paar wichtige Techniken zu dem Thema (wenn es um Real-time geht):

    • Instant Radiosity (Virtual Point Lights)
    • Imperfect Shadow Maps
    • Reflective Shadow Maps
    • Light Propagation Volumes
    • Voxel Cone Tracing

    Auch zu erwähnen wäre evtl. Screenspace Ambient Occlusion in all seinen verschiedenen Ausführungen (bin persönlich allerdings kein Fan davon).

    Dieser SIGGRAPH Course, wenn auch nichtmehr ganz up to date, ist vielleicht kein schlechter Einstieg (Video des Talk im Source Material): http://dl.acm.org/citation.cfm?id=1667258

    Desweiteren imo potentiell interessant: Precomputed Radiance Transfer

    Und schau dich auch in Richtung Real-time Path Tracing um (Stichwort Brigade Renderer).

    Das ist perfekt! Instant Radiosity ist mir auch schon stark ins Auge gefallen. Der Algorithmus klingt auf einen ersten Blick nicht super komplex, und er unterstützt sowohl dynamische Szenen als auch dynamische Lichter. ++

    Was Voxel Cone Tracing angeht war ich schon von Anfang an sehr an dem Voxel Cone Tracing basiert auf nem GPU-Sparse Voxel Octree interessiert (hier http://blog.icare3d.org/2012/05/gtc-2012-talk-octree-based-sparse.html ). Genauso dyn. Szenen und dyn. Beleuchtung. Da fetter Bonus: GI mit specular reflections (Instant Radiosity kann ja anscheinend nur diffuse). Der Algorithmus sieht aber nach ner Menge Implementieraufwand aus. Werd ihn mir wohl trotzdem vornehmen.

    Was nen dritten Kandidaten angeht, bin ich mir noch unsicher. Ich neige etwas zu einer rein Screen-Space basierten Methode, nur um etwas zu haben, das viel schneller ist, dafür aber auch von der Qualität nicht annähernd so gut wie andere Methoden. Hier gibts ja z.B. die Technik, die in der CryEngine 3 verwendet wird: http://www.crytek.com/cryengine/presentations/real-time-diffuse-global-illumination-in-cryengine-3

    In einem Paper über Instant Radiosity bin ich da auch über "Splatting Indirect Illumination" gestoßen, hab allerdings da noch nicht weiter nachgeforscht. Mal sehen.

    P.S.: AO find ich auch nicht schön 🙂



  • Ich würd Reflective Shadow Maps vorschlagen, die sind (im Gegensatz zu Instant Radiosity) wohl einigermaßen Praxisrelevant, relativ einfach zu implementieren und passen gut zum Rest; der ganze Screenspace Kram ist imo rein prinzipiell flawed und heutzutage auch nichtmehr sonderlich beeindruckend...



  • Danke! Werd ich mir später mal genauer anschauen.

    dot schrieb:

    die sind (im Gegensatz zu Instant Radiosity) wohl einigermaßen Praxisrelevant.

    Instant Radiosity wird wohl durch die Artefakte zu hässlich?



  • ...kenner? der themen schrieb:

    dot schrieb:

    die sind (im Gegensatz zu Instant Radiosity) wohl einigermaßen Praxisrelevant.

    Instant Radiosity wird wohl durch die Artefakte zu hässlich?

    Es ist vor allem zu langsam... 😉



  • dot schrieb:

    ...kenner? der themen schrieb:

    dot schrieb:

    die sind (im Gegensatz zu Instant Radiosity) wohl einigermaßen Praxisrelevant.

    Instant Radiosity wird wohl durch die Artefakte zu hässlich?

    Es ist vor allem zu langsam... 😉

    Mhm... Ich verlasse mich mal auf dich 😃

    2 Themen stehen:

    - octree based sparse voxelization for global illumination
    - reflective shadow maps (bin das Paper überflogen, macht nen guten Eindruck und scheint oberflächlich simpel zu sein. Kann keine Aussagen über Performance machen, aber hoffen 🤡 )

    Nummer drei nach wie vor unsicher. Hätte gerne nochwas für dyn. Szenen + dyn. Lichter. Ich werd mal http://www.mpi-inf.mpg.de/~ritschel/Papers/GISTAR.pdf durchforsten und schauen was sich finden lässt.


Anmelden zum Antworten