top of page

CG Lava Lamp

  • Writer: Olivia Wesling
    Olivia Wesling
  • May 5
  • 9 min read

Updated: May 28


VSFX 428 - Particles and Procedural Effects.

Posts from Newest to Oldest.




5/27/2025

Final Render:


Final Render

Breakdown of Lava lamp

Since last render, I did up the samples to about 1600, which shot my single frame render time to about an average of 20-30 minuets.


To fix the jittering of the wax, a setting in the Particle Fluid Surface node and turning on the Smooth filter, setting it to Gaussian. This makes the blob a lot smoother of a surface.

I will say in the render it still has some shaping jittering and that could be from the wax trying to separate but the fluid surface still tries to connect to the particles that are lower.

Particle Fluid Surface: Smooth Gaussian
Particle Fluid Surface: Smooth Gaussian

For my materials I used a wax, liquid, glass, and metal shaders.

Specifically for my wax, I had a more challenging time making it look correct.


Wax Material Settings
Wax Material Settings


IOR is set to 1.3

Roughness set to 0.3



Subsurface is on with a Darker Blue color.

The distance is at .5

The SSS mode is on Karma








Next the point light at the bottom of the lava lamp wasn't looking how I wanted it to. I was trying to get more light to go around the bottom wax. I first tried to make the point light a sphere like a lightbulb but alas it was too big and making a weird artifact of light. I went back to a normal point light and figured out that the shadows needed to be turned on, so I lowered the distance and that made the light open up to the edges of the lava lamp.


Point light
Point light

I am extremely proud with how this turned out! I wish I could render a longer video of the lava lamp to really show the heating and cooling effect of the wax particles. Although I couldn't quite execute the "blobbing" when the wax cools. If I were to continue with this lava lamp, I would love to figure that part out but also add the teeny tiny wax blobs. But with the knowledge of the first blobbing effect I think If I had more time to think about it, I am sure I could figure it out. But overall, I loved this lava lamp and proud with how much I learned.


5/25/2025

First Render:




Particle Render:



Wireframe Render:


Smooth Shaded Render:


Need to fix:

  • Up my samples way higher.

  • The glitching light might have to do with the fluid surface, but need to fix

  • Fix how the blobs hit each other.

5/24/2025

Render Update:


Lava lamp still frame
Lava lamp still frame

Here is an updated render of my lava lamp.

I have a dome light, spotlight, and a point light.

The point light is in the lava lamp to light my wax.

I have a wax, liquid, glass, and metal material.


I upped my samples due to the subsurface on my wax and the glass material.

My samples are at 800, render time at 20 minuets per frame.



5/23/2025

Update:

I was able to get my wax to separate and smash into each other!

Wax Separation

Wax Collision - pt. 2

My problem that I had to figure out was having the top wax sphere at the top to wait until a certain frame and then drop. It took a lot of thinking and looking through tutorials to figure it out. I eventually found a tutorial of two flip objects hitting into each other.


Flip source under each wax sphere
Flip source under each wax sphere

In the tutorial it added a flip source under the wax shape, so it connects to the particle separation and makes the voxel size the same as the particle separation.








Flip source voxel size and particle seperation
Flip source voxel size and particle seperation
Dopnet
Dopnet

Basically the tutorial showed me how to activate the force of the wax depending on the frame.


I added a pop force for each wax sphere. Although I made each popforce to each sphere, each time I added a force it multiplied it to my bottom wax. This made the blobbing effect slower. I tried to fix it with more force in the popwrangle but it still didnt correctly fix it.


Pop force
Pop force



Each pop force is different for each wax. The top wax I keyframed it to start the activation, having the force be slightly stronger than the force of it going down. Then when I want it to stop having that upward force, I stop the activation and the wax sphere falls.

















wax seperation
wax seperation

For the separation of wax, I used a split, separating each wax sphere into its particle fluid surface and then merging it back together at the end.


In the Particle fluid surface node, this is where you set the separation scale and voxel scale. Creating more of blob shape.

Separation Setup
Separation Setup

Next steps:

  • I want to continue the look dev.

  • Continue fixing blobbing effect.


5/19/2025

Wax Collision

I did it! I figured out how to collide the different wax spheres! I had to look up how to collide two different flip objects and through reading and scrubbing through videos I found a tutorial on YouTube by Diffuse FX.

Around the 8-minute mark is where he starts doing a tutorial on dropping a ball into a tub of water. This is where I discovered that there was a button within the FlipObject called closed boundaries. It was originally off but all I had to do was click it on. I also did have to merge the two objects before putting it in the flipobject.

I feel a little ignorant about not knowing but I'm new to this and had no clue! I also don't think it was mentioned in the Lava Lamp tutorial/video.


Closed Boundaries on
Closed Boundaries on


Merge two wax blobs
Merge two wax blobs















2 wax spheres hitting and merging

Next steps:

I know that was not a lot but I am still working on the blobbing effect of the wax.

  • Being able to have that sphere on the top of the lava lamp wait until the bottom wax starts to rise.

  • Getting the blobbing looking correct.

  • Look Dev.


5/17/2025

Render - 1 frame

I went ahead and set up my render and materials. I am still working on the look of the materials, specifically the glass and liquid inside of the lamp.

Render Frame
Render Frame

I realize it is still very noisy, but for right now, it is a good start to developing the final look. While looking at this render, I realize I need more wax within my lava lamp.



Wax Behavior 2

I decided to change some of the values of the heating and cooling effect of the wax blob. Continuing to change the values, such as the viscosity, will also help produce a better outcome.


I also went ahead and added another wax sphere and was trying to figure out a way to get it to collide with the first wax sphere. I struggled to find a way and ultimately failed for today. I will keep looking for a solution to that problem.



Work -

To make the second wax sphere, I duplicated the first wax sphere, plugged it into another flipobject node and merged it together. When it merges the particles pass through each other. I am assuming there is a way to plug it in that can make it so it collides with the first one, but I did not find anything today.


Duplicating first wax sphere to my second one
Duplicating first wax sphere to my second one
Merging both flipobjects
Merging both flipobjects















I also changed some of the numbers that change the viscosity when the wax hits a certain temperature. That when the temperature reaches 0, the viscosity is 1000, and when the temperature reaches, 70 it changes back to 400.

Viscosity - hot and cold
Viscosity - hot and cold

Modeling extra pieces of Lava Lamp -

I simply followed how I made the first part of the lava lamp and made the lid and the base, merging them together.


Lid and Base modeling
Lid and Base modeling

Then to set up my render scene. I imported all my assets and cameras. Added a material library where I made the specific shaders. Including: Glass, wax, liquid, metal, and a background.

3 different lights.

1 spotlight

1 pointlight at bottom of lava lamp

1 domelight

ree

Next steps:

  • I would love to find a way to make the wax collide and bounce off each other.

  • Further develop the "blobness" of the wax.

  • Continue look dev.



5/13/2025

Wax Behavior

Heating and Cooling


Dop Import - adding popwrangle and sopsolver
Dop Import - adding popwrangle and sopsolver

Dop Import - Instead of a popforce node to make the wax ball move. I used a pop wrangle instead.



Pop Wrangle - In the popwrangle node, in order to move the wax ball, I made an expression to have a force on the y-axis. Adding in temperature, when it is at 0, the force is -2. When the temperature is at 100, the force is at 4.

Pop Wrangle VEX expression.
Pop Wrangle VEX expression.


Sopsolver - to create heat and a coolant.

Within the sopsolver.
Within the sopsolver.

Create two spheres, one on top of the Lava lamp and one below, where the heating bulb would be. Adding a scatter node to create the particles to transfer to the wax particles.


creating two spheres
creating two spheres


attribute wrangle1 - @tempadd = 1;
attribute wrangle1 - @tempadd = 1;

In the attribute wrangle, I added a temperature to the sphere. Making it 1. (HOT)

@tempadd = 1;


To see the transfer of temperature, I added a color node and made it red.




attribute transfer
attribute transfer

In the attribute transfer node, under points, add the attributes that you want to transfer to the wax sphere. Here we add Cd (color) and tempadd (heat).


attribute transfer - blend width
attribute transfer - blend width


In the attribute transfer node, you can edit the distance threshold and blend width to scale how far the transfer will be.












After the attribute transfer, adding an attribute wrangle to make sure the temperature does not go above 100.

Attribute Wrangle to not go above 100
Attribute Wrangle to not go above 100


Cooling - do the same thing to the second sphere. Except making the temperature a temp subtract.


attribute wrangle2 - @tempsubtract = 1;
attribute wrangle2 - @tempsubtract = 1;

In the attribute wrangle I added a temperature to the sphere. Making it 1, so it is on.

@tempsubtract = 1;


To see the transfer of temperature, I added a color node and made it black.


Then again, add attribute transfer making sure to transfer the Cd (color) and tempsubtract (temperature)

attribute transfer - cooling
attribute transfer - cooling

After the attribute transfer adding an attribute wrangle to make sure the temperature does not go below 0.

attribute wrangle - below 0
attribute wrangle - below 0


Going back to the original top point wrangle; I added all the attributes I added while creating the temperature.

ree
Point wrangle - adding temp, Cd, tempadd, tempsubtract
Point wrangle - adding temp, Cd, tempadd, tempsubtract

















Here is what it should look like - at the bottom, the wax heats up and is sent to the top of the lava lamp where the cooling takes affect and makes the wax drop.

Hot and Cold demonstration

The viscosity is too little, making the wax too watery. Need to add more viscosity to make it stick together. Although I do like how the wax heats up in the beginning but then it separates too much and is really fluid.



*the lower the viscosity the more fluid the liquid will become; 100 is more liquid.

*the higher the viscosity more solid the liquid will become; 800 is harder liquid.


In the popwrangle in the dopnetwork the @viscosity = fit(@temp, 30, 100, 200, 800);

wax - when the temp reaches 30, the viscosity is 200. When the temp reaches 100 the viscosity is 800.


Changing these numbers will give you different wax behaviors.

Pop Wrangle VEX expression.
Pop Wrangle VEX expression.

With this expression I am still changing the numbers to make sure my wax separates like a real lava lamp.


Next steps:

  • The next step I want to take is rendering out my scene. This way I know it looks semi decent and it works when I do get closer to the end.


  • I will continue on the viscosity and blobbing effect of the wax.


  • I want to try and add a second wax sphere to see if I can get the effect of the wax hitting and sliding off of each other.




5/8/2025

Start

I found a helpful tutorial on YouTube. It is helping me an understanding of how flip fluid works and how to set up the start of my lava lamp.


Modeling Lava Lamp.


With Curve tool, create lava lamp shape.
With Curve tool, create lava lamp shape.
Revolve tool will create object as mesh
Revolve tool will create object as mesh
















VBD from polygons will create the mesh as a container for the wax blobs
VBD from polygons will create the mesh as a container for the wax blobs















Wax/Flip Fluid

  • Create sphere

  • Points from Volume - create the particles within the sphere

  • Point wrangle - This is to set the viscosity of the wax particles

    • @vescosity = 1000;

  • Create Dopnet

    • Flip Object - makes wax sphere into liquid

    • Flip Solver - helps with the viscosity for now

    • Static Object - This connects to the VBD, making it a collision object

    • Pop Force - this makes wax move to where you want; in this case up



ree
ree













My next step is to figure out how to stretch that wax sphere, add another wax sphere to collide with, and also maybe be able to merge wax.



Week 1. 5-4-2025

For this Project I will be creating a lava lamp using Houdini 20.5.



References

Reference found on YouTube: Lava Lamp - Mathmos Astro

This reference I liked the color and how many bubbles of wax there is bumping into each other. I disliked how the person moved the camera in closer, so I needed another reference to show the wax hitting together.


This reference shows the wax pulling apart and hitting each other. I disliked the lighting in this reference as well.




 
 
 

Comments


bottom of page