Forum: Digitale Signalverarbeitung / DSP / Machine Learning chaotisches System zum Bilder zeichnen in SW nachbilden


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von J. S. (engineer) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich habe mir als Deko eine der im Internet vertriebenen 
"Sandzeichnungssysteme" (oder wie man die nennen könnte) bestellt und 
bin erstaunt, was man darin alles beobachten kann:

Das Teil besteht aus einer Doppelscheibe mit Flüssigkeit im Hohlraum, 
einer Luftblase und unterschiedlich gefärbten Partikeln. Das meiste 
scheint Quarzsand zu sein, es gibt aber auch glitzernde Partikel, die 
besonders leicht zu sein scheinen. Je nachdem wie man es schwenkt, 
umkippt und von welcher Ausgangssituation es loslegt, bilden sich sehr 
unterschiedliche Szenarien, die - wie zu erwarten - völlig chaotisch 
ablaufen, wodurch es bisweilen zu sehr interessanten Bildern kommt.

Neben den Wirbeln im Wasser und den Dünenrolleffekten, die man erwarten 
konnte, sieht man auch Erosionseffekte, wie man sie vom Abtragen bei 
Bergen kennt, sowie das Aufwachsen derselben aus Geröll, wie man es von 
Meteoriteneinschlägen kennt. Oben, im speisenden Teil des Sandgebietes 
gibt es "Regen" und Erdeinbruchseffekte wie im Bergbau. Umgedreht 
angesehen, schauen die wiederum oft aus, wie Magmakammern aus denen es 
aufsteigt.

Entscheidend dabei ist jeweils, wie sich die Luftblase beim Umkippen 
teilt und den Sand blockiert. Es bilden sich manchmal totale Barrieren, 
die bis zum völligen Stillstand des Systens führen und dafür sorgen, 
dass es praktisch statisch ist, bis sich dann scheinbar aus dem Nichts 
"Löcher in der Wolkendecke" bilden und es Sand regnet. Dann wachsen 
minutenlang kleine Sandberge, die abrutschen und plötzlich bricht alles 
zusammen und es kippt binnen Sekunden komplett - es gibt dann 
Wirkelstürme und "Platzregen".

Das Ding hat mich nun auf die Idee gebracht, es zu simulieren und zum 
Bildermalen zu nutzen. Ich habe ja bereits einen Videorenderer, der 
unter anderem Audio verarbeitet, allerdings total in Echtzeit zeichnet 
und keine Zustände in dem Sinn kennt und verarbeiten kann. Des weiteren 
hätte ich einen Emulator für Audiowellen auf Partikelbasis, um 
Diffusoreneffekte zu simulieren. (Luft als Teilchen mit Bewegung 
derselben und Berechung über DGL 2. Ordnung mit Abstossung und 
Kompression).

Das würde ich gerne nutzen / kombinieren - es fehlt aber noch an der 
zündenden Idee wie man das Wasser und die Luft und dessen Effekte in 
Sachen Blasenbildung und Oberflächenspannung am Geschicktesten ins Spiel 
bringen könnte.

Meine Frage wäre nun, ob jemand etwas derartiges kennt, oder gfs. auch 
eine Library zur Partikelsimulation und Wirbelsimuation, die man 
anwenden könnte.

von Rainer S. (enevile) Benutzerseite


Lesenswert?

Mir fällt dazu nur ein die Library OpenCV zu nutzen.
Musst du dir allerdings alles selber programmieren in C++ oder Python.
Da kannste dann deine Bilder erstmal zurecht schneiden dann filtern und 
herausselektieren welche Daten du willst und dann entsprechend 
nachzeichnen lassen.

Alles übers programmieren. Das ist kein leichtes Projekt!

Nutze aber eine stabile OpenCV Version(3.7 mein letzter Kenntnisstand).
Würde dir auch empfehlen immer denselben Hintergrund zu nehmen der auch 
eine gleichbleibende Helligkeit hat. Macht vieles einfacher.

: Bearbeitet durch User
von J. S. (engineer) Benutzerseite


Lesenswert?

Hm, das ist ja eine Grafik-Lib, die das Zeichnen unterstürzt. Da sehe 
ich wenig Probleme das umzusetzen. Es geht mir mehr um die Realisation 
und Abbildung der Physik dahinter.

Vereinfacht ausgedrückt haben wir ja eine Art von Tetris von "runden" 
Partikeln, bei denen sich sowohl oben als auch unten Lasten auftürmen 
können, die dann zu einem Fluss über die Kante oder gar dem Einbrechen 
von Mulden führen können. Dafür bräuchte man ein Druckmodell für die 
Sandkörner und eine Funktionen fürs Verhaken und Loslösen. Dann etwas 
Ähnliches für die Luftpartikel, die sichzusammenschließen, gfs auch für 
die Wassercluster und deren Wirbel. Die Wirbel möchte ich einfach den 
Sandkörnern überlagern, weil sich das ja durchdringt. Es muss dann 
sicher eine Kraftübertragung geben, die als Konsequenz dazu führt, dass 
Wirbel und Wasserströmung Sand beschleunigen können, rieselnder Sand 
aber auch das Wasser.

Fürs Erste wird man wohl 2D bleiben.

von Anton B. (anton_br)


Lesenswert?

Sieh Dir "Blender" an. Da gibt es Simulationen für 'physics', 'flow', 
'hard und soft-bodies', particle systems, geometry nodes, force fields 
etc.
Wenn man so eine Simulation zwischen zwei (unsichtbaren) Glasplatten 
laufen lässt, könnte das den gewünschten Effekt liefern.
In YouTube findet man massenweise detaillierte Anleitungen zu den 
jeweiligen Simulationen.

von J. S. (engineer) Benutzerseite


Lesenswert?

Anton B. schrieb:
> Sieh Dir "Blender" an. Da gibt es Simulationen für 'physics'

Ja, das kenne ich, benutze ich auch vereinzelt. Früher was es öfters 
Cinema 4D. Die bieten aber nicht die realen Möglichkeiten. Man kann dort 
Strudel und Attraktoren vorgeben aber es physikalisch realistisch zu 
machen, ist schwierig.

von Knut _. (_knut_)


Lesenswert?

Da brauchst du wohl eine Software für Partikel Simulation. Open Source 
kenn ich nichts gutes. Die Anzahl der notwendigen Partikel ist für so 
ein Vorhaben aber nicht wirklich realistisch simulierbar, nichtmal in 
2d.
Mit z.B. x-Particles lässt sich zumindest etwas optisch ansprechendes 
umsetzten, aber zahlen will man das eher nicht.

von J. S. (engineer) Benutzerseite


Lesenswert?

Die Menge ist das Problem, stimmt. Ich habe für einzelne Partikel ein 
System um Wellenbewegungen in Luft zu simulieren, z.B. für 
Akustiksimulation. Da reicht was Grobes. Für größere Mengen, gibt es 
Modelle mit analytischer Definition von Luftdichte, d.h. eine Formel 
beschreibt den Druck und Dichteverlauf in einem kompletten Voxel.

Für Sand bräuchte ich aber schon einzelne Partikel. Zumindest die, die 
sich bewegen, müssten aktiv simuliert werden.

von Ein T. (ein_typ)


Lesenswert?

Knut _. schrieb:
> Da brauchst du wohl eine Software für Partikel Simulation. Open Source
> kenn ich nichts gutes. Die Anzahl der notwendigen Partikel ist für so
> ein Vorhaben aber nicht wirklich realistisch simulierbar, nichtmal in
> 2d.

Naja, hier [1] gibt es eine Liste, unter anderem mit [2] und [3], aber 
[4], [5] und [6] gibt es auch noch, und letzteres Projekt wirbt mit 
einer 3D-Demo (Rover), die 2 Millionen Objekte enthalten soll.

[1] 
https://www.simonwenkel.com/lists/software/list-of-opensource-DEM-software.html
[2] 
https://www.cfdem.com/liggghts-open-source-discrete-element-method-particle-simulation-code
[3] https://www.mercurydpm.org/
[4] https://www.sphinxsys.org/
[5] https://f-droid.org/de/packages/com.tss.android/
[6] https://projectchrono.org/

von J. S. (engineer) Benutzerseite


Lesenswert?

"An Open Source Multi-physics Simulation Engine" hört sich sehr gut an.
Danke!

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.