A method of generating a 3D reconstruction of a scene, wherein a plurality of cameras are positioned around the scene, the method comprising: obtaining the extrinsics and intrinsics of a virtual camera within a scene, wherein the extrinsics of the virtual camera comprise a position and orientation of the virtual camera, and the intrinsics of the virtual camera comprise a focal length and principal point, where a principal point corresponds to the point of intersection between the optical axis and image plane of the virtual camera, of the virtual camera; accessing a data structure so as to determine at least one camera pair that is to be used in reconstructing the scene from the viewpoint of the virtual camera; wherein the data structure defines a voxel representation of the scene, the voxel representation comprising a plurality of voxels, at least some surfaces of voxels being associated with respective camera pair identifiers; wherein each of the one or more camera pair identifiers associated with a respective voxel surface corresponds to a camera pair that has been identified as being the most suitable for obtaining depth data for the part of the scene within that voxel and for which the averaged pose of the camera pair is oriented towards the voxel surface, wherein the averaged pose comprises an average position (<P>) and an average orientation ( P̂) of the cameras in the camera pair, wherein the closer the averaged pose is to being oriented in a direction that is opposite to a surface normal of the respective voxel surface, the more suitable that camera pair is for obtaining depth data for the part of the scene within that voxel; identifying, based on the obtained extrinsics and intrinsics of the virtual camera, at least one voxel that is within the field of view of the virtual camera and a corresponding voxel surface that is oriented towards the virtual camera; and identifying, based on the accessed data structure, at least one camera pair that is suitable for reconstructing the scene from the viewpoint of the virtual camera, and generating a reconstruction of the scene from the viewpoint of the virtual camera based on the images captured by the cameras in the identified at least one camera pair. obtaining the extrinsics and intrinsics of a virtual camera within a scene, wherein the extrinsics of the virtual camera comprise a position and orientation of the virtual camera, and the intrinsics of the virtual camera comprise a focal length and principal point, where a principal point corresponds to the point of intersection between the optical axis and image plane of the virtual camera, of the virtual camera; accessing a data structure so as to determine at least one camera pair that is to be used in reconstructing the scene from the viewpoint of the virtual camera; wherein the data structure defines a voxel representation of the scene, the voxel representation comprising a plurality of voxels, at least some surfaces of voxels being associated with respective camera pair identifiers; wherein each of the one or more camera pair identifiers associated with a respective voxel surface corresponds to a camera pair that has been identified as being the most suitable for obtaining depth data for the part of the scene within that voxel and for which the averaged pose of the camera pair is oriented towards the voxel surface, wherein the averaged pose comprises an average position (<P>) and an average orientation ( P̂) of the cameras in the camera pair, wherein the closer the averaged pose is to being oriented in a direction that is opposite to a surface normal of the respective voxel surface, the more suitable that camera pair is for obtaining depth data for the part of the scene within that voxel; identifying, based on the obtained extrinsics and intrinsics of the virtual camera, at least one voxel that is within the field of view of the virtual camera and a corresponding voxel surface that is oriented towards the virtual camera; and identifying, based on the accessed data structure, at least one camera pair that is suitable for reconstructing the scene from the viewpoint of the virtual camera, and generating a reconstruction of the scene from the viewpoint of the virtual camera based on the images captured by the cameras in the identified at least one camera pair.