Each source file is a complete program. To run any of them, use 'python
This code was developed on Ubuntu 14.04.4 LTS and its default python verion (2.7.x) is the most compatible. Only render.py is not compatible with Pypy 4.0.1, which was used during development.
The programs were designed to cooperate with each on a Linux shell, by piping information from one to another. carve.py implements the space carving and returns the points corresponding to the object(s) found on the standard output, with a blank line separating different frams. It assumes the scene was recorded with 8 cameras, requiring the P matrix for each in a subfolder called calibration and names CameraI for I in [1, 8]. It then requires the silhouettes in a subfolder silhouettes each named SilhouetteI_J for I in [1, 8] and J a four digit number padded with zeros, with as each J corresponding to a single frame in the animation. A single commandline argument is required and indicates the distance between two points while carving, with lower numbers resulting in reconstructions of higer resolution. render.py reads points in the format generated by carve.py from the standard input and uses opengl to present the 3D scene animated. A single commandline argument is required and indicates the distance between two points, which is the diameters of the spheres. Lower numbers result in reconstructions of higer resolution. split.py takes the output from carve.py and places each frame into a sinle text file in a subfolder named frames.