I've been working on a 3D procedural world for a while now and am wanting to start adding cave systems.
I'm wanting to find a fairly simple method of creating 3D cave systems in a procedural manner. I'm currently generating my world using Perlin Noise, 2D for elevation/detail, 3D for carving out overhangs and smaller caves, but I'm getting stumped when it comes to long interconnecting caves.
I'm hoping to get something more like Minecraft's cave systems. They seem to be very very connected, branch off randomly in nearly any direction, and nearly any point in the cave would have a fairly circular look with a fairly equal radius throughout (not the best wording, but not quite sure how else to put it).
The biggest challenge for generating caves like I'm wanting is that I want to generate the world on the fly. The world is generated chunk by chunk currently, starting where the player is and it generates outwards from there. I would NOT want to generate any of the world and then dig the caves out using a wandering pattern, cellular automata, etc.
A good example: