Skip to content

read_mesh

read_mesh(file, fmt=None, return_UV=False, return_N=False, reader=None)

Reads a mesh from file.

If you have the approproate C++ extensions installed, this will use a fast C++-based reader. If you do not, this will use a slow python reader.

Currently only supports triangle meshes.

Parameters:

Name Type Description Default
file string

the path the mesh will be read from

required
fmt string, optional (default

The file format of the mesh to open. If None, try to guess the format from the file extension. Supported formats: obj

None
return_UV bool, optional (default

Try reading texture coordinates, if they are present and the file format supports it.

False
return_N bool, optional (default

Try reading normal coordinates, if they are present and the file format supports it.

False
reader string, optional (default

Which reader engine to use. None, 'C++' or 'Python'. If None, will use C++ if available, and else Python.

None

Returns:

Name Type Description
V (n,3) numpy array

vertex list of a triangle mesh

F (m,3) numpy int array

face index list of a triangle mesh (into V)

UV (n_uv,2) numpy array, if requested

vertex list for texture coordinates

Ft (m,3) numpy int array, if requested

face index list for texture coordinates (into UV)

N (n_n,3) numpy array, if requested

vertex list for normal coordinates

Fn (m,3) numpy int array, if requested

face index list for normal coordinates (into N)

Examples:

TODO

Source code in src/gpytoolbox/read_mesh.py
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
def read_mesh(file,
    fmt=None,
    return_UV=False,
    return_N=False,
    reader=None):
    """Reads a mesh from file.

    If you have the approproate C++ extensions installed, this will use a fast
    C++-based reader. If you do not, this will use a slow python reader.

    Currently only supports triangle meshes.

    Parameters
    -------
    file : string
        the path the mesh will be read from
    fmt : string, optional (default: None)
        The file format of the mesh to open.
        If None, try to guess the format from the file extension.
        Supported formats: obj
    return_UV : bool, optional (default: None)
        Try reading texture coordinates, if they are present and the file
        format supports it.
    return_N : bool, optional (default: None)
        Try reading normal coordinates, if they are present and the file format
        supports it.
    reader : string, optional (default: None)
        Which reader engine to use. None, 'C++' or 'Python'.
        If None, will use C++ if available, and else Python.

    Returns
    ----------
    V : (n,3) numpy array
        vertex list of a triangle mesh
    F : (m,3) numpy int array
        face index list of a triangle mesh (into V)
    UV : (n_uv,2) numpy array, if requested
        vertex list for texture coordinates
    Ft : (m,3) numpy int array, if requested
        face index list for texture coordinates (into UV)
    N : (n_n,3) numpy array, if requested
        vertex list for normal coordinates
    Fn : (m,3) numpy int array, if requested
        face index list for normal coordinates (into N)

    Examples
    --------
    TODO

    """

    # Detect format if it has not been specified
    if fmt is None:
        _, fmt = os.path.splitext(file)
    fmt = fmt[1:].lower()

    # Call appropriate helper function to read mesh
    if fmt=='obj':
        V,F,UV,Ft,N,Fn = _read_obj(file,return_UV,return_N,reader)
    else:
        assert False, "Mesh format not supported."

    # Arrange variables for output
    if return_UV and return_N:
        return V,F,UV,Ft,N,Fn
    if return_UV:
        return V,F,UV,Ft
    if return_N:
        return V,F,N,Fn
    return V,F