Endless Cubes
A camera drifts in a straight line through a tunnel of cubes, and the cubes never stop rearranging themselves around it. It has no end: fly as long as you like.
Click the scene to turn the camera onto a new axis. The cubes scatter and regroup along the new path.
The cubes sit on a grid of cells, about a third of them filled. Each one waits a random while, then picks a free neighbouring cell, rolls into it a quarter turn and settles. A cell is claimed the moment a cube starts toward it, so two cubes never end up in the same place. A lane down the middle is kept empty for the camera.
The camera never actually moves. The field streams toward it, and each slice of cubes that passes behind the camera is carried to the far end of the tunnel, where the fog hides the jump. A click picks a new axis, x, y or z in either direction. The camera swings round to it while every cube is blown outward on its own path, tumbling, then settles into a fresh tunnel along the new heading.
Built with three.js, loaded only on this page. All of the cubes are one instanced mesh, so the whole tunnel is a single draw call, and it follows the site theme. With reduced motion on, it starts paused.