Saturday, March 16, 2024

Mockups in Midjourney

So long story short I haven't been able to make any significant leap forward to boost up the simulator to a large scale, so I've switched now to make an animation of the whole concept and made some mockups in Midjourney. To be continued ...









Physics of the Dynamic Foam

• In the beginning Space was a dense medium wherein vibrations appeared (Black -> white).

• The tiny vibrations are like gas-particles and Space became a dense misty cloud.

• At random points in this cloud the vibrations started to align and harmonise (blue).

• The expanding harmonious dots collided and form a pressure regions (red).

• A Voronoi pattern (foam) formed and the edges distributed the intense pressure.

• The pressure distribution can’t make <90°-turns and is cut-off at certain junctions.

• The strength of the currents in the edges affect the size of the cells: heating up vs. cooling down. Changing cells-sizes change consequentially the angles … and the mesh becomes dynamic.

• Stable fluctuations emerge that form strings that can turn into knots.

• Gradual pathways 'pinch' Space. 


It's like the idea of a Quantum Foam where particles pop into existence.


 Proposed by John Wheeler:

Flow regulated by Local Tree Network:

 The idea was to simplifying the Monte-Carlo-Marcov-Chain method to just a small Local Tree Network.

a. It’s still the same starting idea of junctions are open ( > 90°) or closed ( < 90°)

b. The simplification was to calculate the weight of each edge based on the number of connections with only small local percolation-tree, that should do:

c. The total weight of the edges of around a cell defines its pressure. 

d. The pressure changes between cells pushes them further or closer together.

Here’s a small test by Markus Rawdy who came up with this sim in Houdini:

The Fabric of Space

 The Fabric of Space is a Semi-Solid like a Foam .

Think of this Truchet FBM Lace toy by Fenix to get a feeling:

1. Currents in the edges.

2. When a junction is open current can pass.

3. Depending on the Force of the current a Bubble/Field can Expend or Shrink.

We can model this foam with a tri/tet mesh.

4. When there is a lot of current in ‘voronoi’ edge Y between A,B than the ‘delaunay’ edge between A-B contracts, otherwise it expands.

The diagram below shows the different parts of calculating the Gates, using a Graph Network to calculate the flow in all the Edges, and finally how the mesh contracts or expands at different parts.

Note, the idea is that by using a small local tree this whole Graph-Network is no longer necessary, see next Local Tree Network post. 

Processing Schemes & Diagrams II

 1. A tri/tet (Delaunay) mesh is the physical backbone.

2. Via the Barycenters we can check if ‘gates’ of it’s dual (virtual) Voronoi mesh are open or closed.

3. The results form a Graph Network.

4. With Monte Carlo Markov Chains (MCMC) walks we measure the currents.

5. The value of these currents defines the deformation of the dual tri/tet-edges.

6. Loop back to 2.



BTW when doing walks gates could be bridged and loops can emerge, therefore the need for 'Valves' that prevent U-turns in the Gates. Note, these diagrams are just a suggestion maybe there’s a better solution.



Tuesday, July 11, 2023

Markov-Chains in VoroX

For VoroX.jl BenoĆ®t build a system that is similar to Google’s PageRank that uses Markov Chains, where web-crawlers are released onto the internet to measure the connections and generate rating of sites.

In his system there's an amount of traffic released into the Voronoi-edges of the foam, these pulses move from the edges to the junctions and check if the gates are open or closed. 


When a gate is open a pulse moves on to the next gate and so forth. These ‘ratings' correspond to the current in each edge between the cells and define if a cells shrinks or expands. The particles move until they reach a Steady-State, as in Nick’s 2D Dynamic Foam model:


If you’re not familiar with Markov-Chains, this video from Khan academy explain it in 3 minutes:


So in VoroX.jl dogs/pulses/web-crawlers move to other rooms/edges/websites when there’s an open-door/gate//link. 

After a couple of iterations a Steady-State is reached and we can count the dogs/flow/connections.


These values lets us know how much ‘erosion' the flow in an edge (a-c) has caused to its neighboring cells A and D, and as such the contraction-value for its dual edge A-D.

---

Details from the control panels of the 2D Dynamic-Foam
 that might make more sense now:



• Energy, Scale and Critically 

This refers to the number of particles/pulses are put into the system and their size.

 • Circumcenter / Barycenter / Incenter 

Refers to the method used to create the dual Voronoi Mesh on top of the Delaunay Mesh.

• Expansive Flow / Contractive Flow

Particles in Voronoi-edges (a-c) expand OR contract Delaunay-edges (AB).


Details from theVoroX.jl control panels of the 3D/2D Dynamic-Foam program where the particles are replaced by a Markov-Chain value system:



Height: 
set size of the Area

Point size, Center size, Edge width, Circuit width: 
visualisation properties

Decay:
time a current in edges stays highlighted



Shading for the faces.


3D 

Wednesday, June 21, 2023

Processing Schemes & Diagrams I

Intro

There’s a foam where flow runs through the edges, the angles of the junctions regulate if flow can pass or is not, the amount of current in an edge defines if its neighboring cells grow or shrink, like a river sedimentation vs erosion. 

Scheme I : Technical setup

1. Random Poisson distribution (or Blue Noise) of points that fills the area.
2. Build the Delaunay Triangular Mesh with these points (see ref. Alterntives for Voronoi Diagrams)
3. Calculate the Barycenters/Centroids.
4. Build the Dual Voronoi Mesh.
5.a. Send pulses from the edges of the Voronoi Mesh in both directions.
5.b. Calculate from the triangles which Angles/Gates/Connections are:  Open (I) > 90° or Close (0) < 90°
5.a./5.d. Keep forwarding the pulses through the edges so we get a current-value for each edge (until we reach a Steady-State).
6. The results of (5.a.) gives us the value of how much the Delaunay-edges should contract or expand (similar to a Mass-Spring system).

-> Now we are full-circle and we have new positions for (1.) and (2.), and we can draw a new set of (3.) Centroids and redo the whole process.

Scheme 2 : Divide Large Mesh in Small Blocks

Maybe we can cut up the ‘Global Mesh' in smaller blocks that can be easily parallel computing on the GPU, where the a edges fo the Global Grid/Mesh are separated into small blocks that have a Local ‘virtual’ Grid and are easy to process individually to be send back to the Global Mesh.


Scheme 3 : Iteration of Global Backbone and Local Blocks

The mesh could be divided into one Global horizontal strip with small Local blocks:

Y0 / Y1 / Y2 / Y3 / …

At each iteration there’s a vertical process where each block can figure out it’s local connectivity status, the results are fed into a Global graph that uses a Morkov-Chain process to figure out the connectivity ‘flow’ state of each connection, just like how Google’s Page-Rank works, and the results are fed back into the Global mesh.

Step 1 / Step 2 / Step 3 / ...