Frage von cosypanther, 69

"Rauch" programmieren, wie würde man bei so einer Problemstellung vom Informatiklehrer herangehen?

Problembeschreibung: Man stelle sich vor, man möchte eine Art Screensaver programmieren, eine einfache exe-Datei oder ähnliches, die beim Ausführen den Monitor schwarz macht und von unten Rauch aufsteigen lässt, der möglichst realistisch aussieht.

Frage: Vielleicht können mir die etwas erfahrenen Programmierer unter euch mit euren Erfahrungen helfen und "einfach" mal aufzeigen/etwas erklären, wie man an eine solche programmiertechnische Aufgabe am besten herangeht und diese löst.

Mein Wissensstand: Ich selbst kann zwar Tools zum Berechnen oder Simulieren irgendwelcher relativ einfach mathematischen Prozesse lösen, aber wenn es um etwas Grafisches geht, oder allgemein gesagt was Fortgeschritteneres, fehlt mir einfach jegliche/r Ansatz/Vorstellung, wie man da startet.

Würde mich auf jeden Fall super freuen, wenn ich am Ende des Tages mehr zu diesem Thema wüsste - insbesondere anhand des konkreten Beispiels mit dem Rauch erläutert!

Beste Grüße und danke im Voraus! cosypanther

Antwort
von unsignedInt, 33

Ich weiß nicht, welche Programmiersprachen du benutzt, aber man kann durchaus Partikelsysteme entwickeln, und diese dann Beispielsweise mit OpenGL oder mit SFML (http://www.sfml-dev.org), was auf OpenGL basiert, visualisieren. 

Es gibt natürlich auch andere Grafikbibliotheken, je nach genutzter Programmiersprache. 

Du kannst den Rauch auch direkt mit OpenGL und GLSL visualisieren, dazu gibt es hier ein paar nützliche Links: http://stackoverflow.com/questions/15528159/particle-system-for-cloud-or-smoke

Dir jetzt zu erklären, wie das alles Funktioniert, ist etwas zu viel für GF, aber wie gesagt; Ich kann dir nur SFML empfehlen. Es ist leicht zu bedienen, es gibt Bindings für viele Sprachen, man kann problemlos Vollbildanwendungen erstellen und es ist natürlich kostenlos.

OpenGL-Shader werden von SFML unterstützt, also wenn du C++/C# (oder eine andere kompatible Sprache) kannst, ist das alles, was du benötigst.

Antwort
von LifeArtist1, 41

Also es gibt eigentlich grob zwei Methoden:

Easy:
Du verwendest ein 3D Program um Rauch zu simulieren renderst diese Animation und spielst dann diesen Clip in einem selbst geschrieben Program ab. http://www.harding.edu/fmccown/screensaver/screensaver.html Hier mal ein Tut für C#

Hardcore:
Du verwendest Opengl um den Smoke darzustellen was dazu führt, dass du alle berechnungen selber machen musst. Ein blick zu Stackoverflow: http://stackoverflow.com/questions/15528159/particle-system-for-cloud-or-smoke
Da es Opengl auch für C# gibt könntest du das mit dem Tut oben verbinden.

Bei der Opengl Methode darfst du aber keinen Hyperrealistischen Smoke erwarten, es sei denn du codest dir auch noch einen realistischen shader dazu ;)

Mir fällt noch ein du könntest vllt eine game engine verwenden und dann mit hilfe von wpf fullscreen dort drin das spiel abspielen lassen k.p ob das wirklich geht.

Easy ist natürlich relativ.

Antwort
von RoSiebzig, 19

Bin kein Profi. Würde es so machen:

Eine weiße oder hellgraue oder hellbläulichgraue 'Glut' (zwei-drei arrays) aus 2*2 großen Pixeln (damit es schneller iteriert) unter dem Bildschirm nach oben starten lassen. Die Pixel (Elemente der arrays) kriegen jetzt einen Algo der für alle durchiteriert wird:

ein Prozentsatz benachbarter Pixel soll per random entweder "geradeaus vor", oder "vor nach rechts", oder "vor nach links". Die meisten Pixel, der Rest, alle anderen, sollen bei einer Iteration nur einen Doppelschritt nach oben, gelegentlich bei einer anderen Iteration auch 'mal zwei.

Da es dadurch zu Lücken kommt, und das ganze so auch ziemlich mechanistisch, linear ablaufen würde, gibt es drei Arrays, also drei Pixelschwaden, die sich per alpha-color (Transparenzwert) dann überlagern und 'weichere' Dynamik, Fluß, 'reinbringen. Auch jedes Pixel erhält alpha, das sich ändert je nachdem es überlagert, und - auch wieder per Random - kriegen auch Pixelbereiche mehr oder weniger alpha.

Kurz: in drei Mengen Pixeln, die sich per random algo nach oben bewegen wird per random zusammenhängenden Bereichen sowohl Transparenz, als auch dynamische Bewegung zugedacht. Die Eigendynamik sollte dann zufallsbewegten und zufallstransparenten (mehr oder weniger dichten) Rauch erzeugen.

Antwort
von KsGaamer, 43

Also ich bringe mir Programmieren selber bei, da wir im Fach Informatik nur no leichte Sachen machen, die ich schon lange kann. Ich würde sagen, du musst ein Videoclip, wo es den Rauch gibt da einfügen, wäre am leichtesten. 

Bin mir aber nicht ganz Sicher, da ich zurzeit Webseiten Programmierung lerne & danach erst Software

Kommentar von Neralem ,

Videoclip einfügen? Dein Ernst?

Kommentar von LifeArtist1 ,

Wieso nicht. Man muss sich das Leben nicht unnötig schwer machen. Es sei denn der TO erwünscht eine reine programmier Lösung.

Kommentar von cosypanther ,

Also mir geht es hier nicht um den Rauch selbst, sondern schon eher um die Konzepte. Deswegen ist das zwar vielleicht eine Lösung, wenns schnell gehen soll, verfehlt aber meine Idee hinter der Frage.

Dennoch ist es sicherlich nicht verkehrt die Option zumindest in den Raum gestellt zu haben :)

Keine passende Antwort gefunden?

Fragen Sie die Community