def METHOD_NAME(self, name, bsdf=None):
    """Convert Open3D TriangleMesh to Mitsuba Mesh.
    Converts an Open3D TriangleMesh to a Mitsuba Mesh which can be used directly
    in a Mitsbua scene. The TriangleMesh's material will be converted to a
    Mitsuba Principled BSDF and assigned to the Mitsuba Mesh. Optionally, the
    user may provide a Mitsuba BSDF to be used instead of converting the Open3D
    material.
    Args:
        name (str): Name for the Mitsuba Mesh. Used by Mitsuba as an identifier
        bsdf (default None): If a Mitsuba BSDF is supplied it will be used as
        the BSDF for the converted mesh. Otherwise, the TriangleMesh's material
        will be converted to Mitsuba Principled BSDF.
    Returns:
        A Mitsuba Mesh (with associated BSDF) ready for use in a Mitsuba scene.
    """
    import mitsuba as mi
    import numpy as np
    # What features does this mesh have
    has_normals = 'normals' in self.vertex
    has_uvs = 'texture_uvs' in self.triangle
    has_colors = 'colors' in self.vertex
    # Convert Open3D Material to Mitsuba's principled BSDF
    if bsdf is None:
        bsdf = o3d_material_to_bsdf(self.material, vertex_color=has_colors)
    # Mesh constructor looks for this specific property for setting BSDF
    bsdf_prop = mi.Properties()
    bsdf_prop['mesh_bsdf'] = bsdf
    # Create Mitsuba mesh shell
    mi_mesh = mi.Mesh(name,
                      vertex_count=self.vertex.positions.shape[0],
                      face_count=self.triangle.indices.shape[0],
                      has_vertex_normals=has_normals,
                      has_vertex_texcoords=has_uvs,
                      props=bsdf_prop)
    # Vertex color is not a 'built-in' attribute. Needs to be added.
    if has_colors:
        mi_mesh.add_attribute('vertex_color', 3,
                              self.vertex.colors.numpy().flatten())
    # "Traverse" the mesh to get its updateable parameters
    mesh_params = mi.traverse(mi_mesh)
    mesh_params['vertex_positions'] = self.vertex.positions.numpy().flatten()
    mesh_params['faces'] = self.triangle.indices.numpy().flatten()
    if has_normals:
        mesh_params['vertex_normals'] = self.vertex.normals.numpy().flatten()
    if has_uvs:
        # Mitsuba wants UVs per-vertex so copy them into place
        per_vtx_uvs = np.zeros((self.vertex.positions.shape[0], 2))
        for idx, uvs in zip(self.triangle.indices, self.triangle.texture_uvs):
            per_vtx_uvs[idx.numpy()] = uvs.numpy()
        mesh_params['vertex_texcoords'] = np.subtract(1.0,
                                                      per_vtx_uvs,
                                                      out=per_vtx_uvs,
                                                      where=[False,
                                                             True]).flatten()
    # Let Mitsuba know parameters have been updated
    return mi_mesh