The particles represent a scale
about one meter or one decameter large.
To represent smaller scale, we build a 3D dressing,
very detailed but purely qualitative, which adds
appearance realism to motion realism.
The purpose is to figure a lava surface that is initially liquid and smooth,
which becomes more rough with time. Then more rigid islands (solidified foam)
progressively appear on it,
and grow with time by aggregating, up to joining each others.
Once the crust is solidified, these islands appear as large stones
conveyed by the deep lava river,
which finaly stop when the thickness of the rigid crust
prevents for any motion (even if the heart is still ductile).
We choose to associate an island to each particle of the motion simulation.
As stated above, we define a flow surface, on which we project the
particles of the external layer.
The Voronoi diagram of these points defines the islands.
An island thus corresponds to a set of triangles, whose one vertex
is at the island center (i.e. on a surface particle)
and the two others are on the border.
rendering of a crust island (real time)
Thus we just have to build a single lava crust rendering primitive
to draw this triangle.
This primitive has an analytical component, which models an ideal
stone profile (high at the center, low on the border),
and a stochastic component which figures the surface roughness,
obtained by the use of Perlin noise.
The parameters of these two components depend of the temperature,
which is known at the vertices (the roughness increase with viscosity,
the stone profile appears progressively).
A constraint is that these `3D' triangles have to join on
a continous way for height and normals, despite they are defined
using different frames.
rendering of the lava flow