Handmade Hero»Episode Guide
Lagrangian vs. Eulerian Simulation
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
00:00:14Recap
00:00:14Recap
00:00:14Recap
00:01:22Plan for today
00:01:22Plan for today
00:01:22Plan for today
00:02:48Adding acceleration and taking it into account to compute new positions
00:02:48Adding acceleration and taking it into account to compute new positions
00:02:48Adding acceleration and taking it into account to compute new positions
00:06:27Bouncing particles off the ground
00:06:27Bouncing particles off the ground
00:06:27Bouncing particles off the ground
00:09:56Modeling loss of energy
00:09:56Modeling loss of energy
00:09:56Modeling loss of energy
00:14:00We want our fountain to be more fountain-like
00:14:00We want our fountain to be more fountain-like
00:14:00We want our fountain to be more fountain-like
00:19:54Writing special-purpose code to achieve the desired behavior
00:19:54Writing special-purpose code to achieve the desired behavior
00:19:54Writing special-purpose code to achieve the desired behavior
00:29:30Considering the interactions among particles instead of simulating particles in isolation
00:29:30Considering the interactions among particles instead of simulating particles in isolation
00:29:30Considering the interactions among particles instead of simulating particles in isolation
00:30:41Two raw categories of physics simulations: Eulerian and Lagrangian methods
00:30:41Two raw categories of physics simulations: Eulerian and Lagrangian methods
00:30:41Two raw categories of physics simulations: Eulerian and Lagrangian methods
00:31:25Lagrangian: Simulation of the motion of particles through space
00:31:25Lagrangian: Simulation of the motion of particles through space
00:31:25Lagrangian: Simulation of the motion of particles through space
00:32:49Eulerian: Simulation of density and mean velocity of particles at specific locations in space
00:32:49Eulerian: Simulation of density and mean velocity of particles at specific locations in space
00:32:49Eulerian: Simulation of density and mean velocity of particles at specific locations in space
00:36:01Lagrangian methods are bad at handling density
00:36:01Lagrangian methods are bad at handling density
00:36:01Lagrangian methods are bad at handling density
00:36:40Eulerian methods don't keep track of the properties of individual particles
00:36:40Eulerian methods don't keep track of the properties of individual particles
00:36:40Eulerian methods don't keep track of the properties of individual particles
00:37:46We'll resort to a mixed Eulerian-Lagrangian method
00:37:46We'll resort to a mixed Eulerian-Lagrangian method
00:37:46We'll resort to a mixed Eulerian-Lagrangian method
00:38:45We could use the density gradient from an Eulerian representation to compute the horizontal push of particles in the Lagrangian representation
00:38:45We could use the density gradient from an Eulerian representation to compute the horizontal push of particles in the Lagrangian representation
00:38:45We could use the density gradient from an Eulerian representation to compute the horizontal push of particles in the Lagrangian representation
00:42:57Let's implement it
00:42:57Let's implement it
00:42:57Let's implement it
00:50:57Drawing the density field
00:50:57Drawing the density field
00:50:57Drawing the density field
01:00:03Dispersing particles taking into account cell density
01:00:03Dispersing particles taking into account cell density
01:00:03Dispersing particles taking into account cell density
01:03:25Discussion of possible improvements to the simulation
01:03:25Discussion of possible improvements to the simulation
01:03:25Discussion of possible improvements to the simulation
01:04:00Taking advantage of the density gradient to achieve better results
01:04:00Taking advantage of the density gradient to achieve better results
01:04:00Taking advantage of the density gradient to achieve better results
01:08:00We still don't use the mean velocity of particles inside each cell
01:08:00We still don't use the mean velocity of particles inside each cell
01:08:00We still don't use the mean velocity of particles inside each cell
01:08:53Q&A
🗩
01:08:53Q&A
🗩
01:08:53Q&A
🗩
01:09:18andsz_ I suppose adding some friction to dP.x might help
🗪
01:09:18andsz_ I suppose adding some friction to dP.x might help
🗪
01:09:18andsz_ I suppose adding some friction to dP.x might help
🗪
01:10:41braincruser Try reducing the size of the individual cells
🗪
01:10:41braincruser Try reducing the size of the individual cells
🗪
01:10:41braincruser Try reducing the size of the individual cells
🗪
01:13:23quikligames The back of the head would make a better particle than the side of the head
🗪
01:13:23quikligames The back of the head would make a better particle than the side of the head
🗪
01:13:23quikligames The back of the head would make a better particle than the side of the head
🗪
01:16:24pseudonym73 If you're going to alter the GridScale, you probably need to scale Dc by it too.
🗪
01:16:24pseudonym73 If you're going to alter the GridScale, you probably need to scale Dc by it too.
🗪
01:16:24pseudonym73 If you're going to alter the GridScale, you probably need to scale Dc by it too.
🗪
01:17:02ezioauditorerevs Did you ever add a way to tell the music to shut off or did you just disabled it?
🗪
01:17:02ezioauditorerevs Did you ever add a way to tell the music to shut off or did you just disabled it?
🗪
01:17:02ezioauditorerevs Did you ever add a way to tell the music to shut off or did you just disabled it?
🗪
01:17:22culver_fly What would happen if the particles were spawned between two cells? Would that cause an effect where everything would just not bounce off each other anymore?
🗪
01:17:22culver_fly What would happen if the particles were spawned between two cells? Would that cause an effect where everything would just not bounce off each other anymore?
🗪
01:17:22culver_fly What would happen if the particles were spawned between two cells? Would that cause an effect where everything would just not bounce off each other anymore?
🗪
01:17:54mr4thdimention On API design: You recently emphasized "Write the usage code first" and then the implementation later. While compression oriented programming is about writing code first and then compressing it, pulling code into functions where necessary, allowing the API to evolve out of that process. They seem like two contradictory methods. Are they? How do you decide when you're using one or the other?
🗪
01:17:54mr4thdimention On API design: You recently emphasized "Write the usage code first" and then the implementation later. While compression oriented programming is about writing code first and then compressing it, pulling code into functions where necessary, allowing the API to evolve out of that process. They seem like two contradictory methods. Are they? How do you decide when you're using one or the other?
🗪
01:17:54mr4thdimention On API design: You recently emphasized "Write the usage code first" and then the implementation later. While compression oriented programming is about writing code first and then compressing it, pulling code into functions where necessary, allowing the API to evolve out of that process. They seem like two contradictory methods. Are they? How do you decide when you're using one or the other?
🗪
01:22:58starchypancakes Would it be possible to split the fluid computation across two frames. Like use the first frame to accumulate velocity and momentum changes and the second one to resolve them?
🗪
01:22:58starchypancakes Would it be possible to split the fluid computation across two frames. Like use the first frame to accumulate velocity and momentum changes and the second one to resolve them?
🗪
01:22:58starchypancakes Would it be possible to split the fluid computation across two frames. Like use the first frame to accumulate velocity and momentum changes and the second one to resolve them?
🗪
01:23:42ezioauditorerevs Does the size of the grid relative to each particle matter much?
🗪
01:23:42ezioauditorerevs Does the size of the grid relative to each particle matter much?
🗪
01:23:42ezioauditorerevs Does the size of the grid relative to each particle matter much?
🗪
01:24:30culver_fly (Referring to Q at 01:17:22) Say you're deciding whether to bounce the particles off based on the density now, then if the particles were spawned between 2 cells, wouldn't the density be halved and not bounce off anymore?
🗪
01:24:30culver_fly (Referring to Q at 01:17:22) Say you're deciding whether to bounce the particles off based on the density now, then if the particles were spawned between 2 cells, wouldn't the density be halved and not bounce off anymore?
🗪
01:24:30culver_fly (Referring to Q at 01:17:22) Say you're deciding whether to bounce the particles off based on the density now, then if the particles were spawned between 2 cells, wouldn't the density be halved and not bounce off anymore?
🗪
01:26:22spaceghost2345 Would simulated annealing work for this issue?
🗪
01:26:22spaceghost2345 Would simulated annealing work for this issue?
🗪
01:26:22spaceghost2345 Would simulated annealing work for this issue?
🗪
01:26:36noxy_key Doesn't writing usage code first imply simplicity in API calls? Doesn't this box you in when trying to create persistent things on the stack? All complex initializations for persistent objects have to be done somewhere. If done on the stack, how do you persist complex data structs without using static?
🗪
01:26:36noxy_key Doesn't writing usage code first imply simplicity in API calls? Doesn't this box you in when trying to create persistent things on the stack? All complex initializations for persistent objects have to be done somewhere. If done on the stack, how do you persist complex data structs without using static?
🗪
01:26:36noxy_key Doesn't writing usage code first imply simplicity in API calls? Doesn't this box you in when trying to create persistent things on the stack? All complex initializations for persistent objects have to be done somewhere. If done on the stack, how do you persist complex data structs without using static?
🗪
01:27:46braincruser Current simulation is in pixel space?
🗪
01:27:46braincruser Current simulation is in pixel space?
🗪
01:27:46braincruser Current simulation is in pixel space?
🗪
01:27:56quatzequatel Are pre-rendered effects viable?
🗪
01:27:56quatzequatel Are pre-rendered effects viable?
🗪
01:27:56quatzequatel Are pre-rendered effects viable?
🗪