The meshes of generic objects are stored as .obj.
The body scans are textured 3D meshes stored in .npz archives.
The texture is encoded as a texture atlas.
scan | texture atlas |
---|---|
See Wavefront .obj
.
This format stores the numpy arrays defining the mesh inside a
(compressed)
numpy .npz
archive.
The following arrays inside the .npz
define a mesh:
vertices
, float (N, 3): The 3D positions of the vertices. N varies across the meshes.faces
, int (20000, 3): The vertex indices defining the faces in 3D space (i.e. triplets of indices into thevertices
array). Fixed number of faces (20000) for all meshes.texcoords
, float (Nt, 2): The 2D positions of the vertices in the texture atlas (Nt > N).texcoords_indices
, int (20000, 3): The vertex indices defining the faces in the UV space (2D texture image) (i.e. triplets of indices into thetexcoords
array). Fixed number of faces (20000) for all meshestexture
, uint8 (2048, 2048, 3): The RGB texture image.
Fields not described above should not be relied upon.
The mesh can be loaded with numpy.load
.
For example:
import numpy as np
mesh = np.load("name.npz", allow_pickle=True)
mesh["vertices"]
mesh["faces"]
# ...
3D positions of detected body landmarks are provided
in the training data of Challenge 1.
They are stored in files with name landmarks3d.txt
.
The format is plain text and tabular, with one landmark per row and one space
between columns:
name x y z
with name
, the name of the landmark, and (x, y, z)
, its 3D position in
the frame of reference of the scan or mesh.
If the landmark was not detected, the coordinates are nan
.
For example,
elbow_left 1.234 0.123 0.389
finger_thumb_top_left nan nan nan
...