Version 1.2

Lava Lamp is a 3 dimensional simulation of a Lava Lamp. To run it you need a decent graphics card with OpenGL drivers. The Linux download is version 1.2 which has several improvements over 1.1, but also has a visual problem of weird horizontal "ripples" in the lava. The download is much smaller than the Windows one because 1.2 computes the data at the beginning while 1.1 includes a 4MB file of data. For both versions, please be patient at startup since the preprocessing is a bit slow. I am leaving 1.1 for Windows until I fix the ripple problem. The 1.1 version probably needs a P4-2ghz and a GeForce3 to run at decent speed.

To install on Windows unzip the contents into a folder "Lava Lamp". Click on LavaLamp.exe to execute. On Linux use "tar -xzf LavaLamp.tgz". Note that the program needs to be restarted in order to change screen resolution or graphics quality settings. The control menu can be toggled-hidden by typing any key.




Enhancements comming in the future will be speed improvements and added realism. Right now the modelling of the lava is not correct in that blobs always coalesce when they get near one another. In real lamps, blobs sometimes remain separate and push off of eachother. Another thing they do is leave behind trails of smaller blobs when the glop separates. These features will be added, along with improvements to make the smaller blobs less hard and to add light coming from the lamp base.

How it works in brief is that the bottle is first fragmented into many small pieces. The amount of fragmentation is what you are controlling with the quality setting. A number of blobby-spheres of varying sizes are put into the bottle and assigned mass properties according to their sizes. A downward force of gravity and an upward force of heat are added. The bottle exerts an inward force to keep the blobs inside. Blobs also exert pushing and pulling forces on one another and there is a velocity damping force added to simulate the liquid. Then you just let it run by timestepping using good old Newton's equations of motion, f = ma. If you are interested, here is the main blob tracing function code.