A method of generating a representation of a virtual environment, comprising: obtaining a first sequence of video images of at least part of the virtual environment; obtaining a corresponding sequence of virtual camera positions at which the video images were created; obtaining a corresponding sequence of depth buffer values for a depth buffer used whilst creating the video images; and for each of a plurality of video images and corresponding depth buffer values of the obtained sequences, obtain mapping points corresponding to a sampling distribution of points over the area of a respective video image and their associated depth values; wherein respective mapping points are obtained by projecting co-ordinates derived from the sample points from the video image and associated depth values back into a 3D co-ordinate system of the virtual environment; thereby obtaining a point cloud dataset of mapping points corresponding to the first sequence of video images; obtaining a mesh of at least part of the virtual environment from the point cloud representation of the at least part of the virtual environment; detecting the continuous and non-overlapping portions of that mesh, hereafter 'patches'; populating a texture map with representations of the patches, by for successive patches, in order of large to small, identifing a position on the texture map where a current patch meets a non-overwrite criterion, wherein the non-overwrite criterion requires that texels corresponding to the current patch do not overwrite texels of any previously positioned patch, and successive positions for each current patch are tested at intervals starting from a common origin position; and associating the current patch with the identified position; setting colour values for the texels of the texture map responsive to colour information corresponding to the obtained mesh; and outputting the obtained mesh and texture map for use by a third party. obtaining a first sequence of video images of at least part of the virtual environment; obtaining a corresponding sequence of virtual camera positions at which the video images were created; obtaining a corresponding sequence of depth buffer values for a depth buffer used whilst creating the video images; and for each of a plurality of video images and corresponding depth buffer values of the obtained sequences, obtain mapping points corresponding to a sampling distribution of points over the area of a respective video image and their associated depth values; wherein respective mapping points are obtained by projecting co-ordinates derived from the sample points from the video image and associated depth values back into a 3D co-ordinate system of the virtual environment; thereby obtaining a point cloud dataset of mapping points corresponding to the first sequence of video images; obtaining a mesh of at least part of the virtual environment from the point cloud representation of the at least part of the virtual environment; detecting the continuous and non-overlapping portions of that mesh, hereafter 'patches'; populating a texture map with representations of the patches, by for successive patches, in order of large to small, identifing a position on the texture map where a current patch meets a non-overwrite criterion, wherein the non-overwrite criterion requires that texels corresponding to the current patch do not overwrite texels of any previously positioned patch, and successive positions for each current patch are tested at intervals starting from a common origin position; and associating the current patch with the identified position; identifing a position on the texture map where a current patch meets a non-overwrite criterion, wherein the non-overwrite criterion requires that texels corresponding to the current patch do not overwrite texels of any previously positioned patch, and successive positions for each current patch are tested at intervals starting from a common origin position; and the non-overwrite criterion requires that texels corresponding to the current patch do not overwrite texels of any previously positioned patch, and successive positions for each current patch are tested at intervals starting from a common origin position; and associating the current patch with the identified position; setting colour values for the texels of the texture map responsive to colour information corresponding to the obtained mesh; and outputting the obtained mesh and texture map for use by a third party.