class_docstr: `FeatureConnector` for triangle meshes.
  
  During `_generate_examples`, the feature connector accepts as input any of:
  
    * `str`: path to a {obj,stl,ply,glb} triangle mesh.
    * `trimesh.Trimesh`: A triangle mesh object.
    * `trimesh.Scene`: A scene object containing multiple TriangleMesh
       objects.
    * `dict:` A dictionary containing the vertices and faces of the mesh (see
       output format below).
  
  Output:
    A dictionary containing:
    # TODO(b/156112246): Add additional attributes (vertex normals, colors,
    # texture coordinates).
  
    * 'vertices': A `float32` tensor with shape `[N, 3]` denoting the vertex
    coordinates, where N is the number of vertices in the mesh.
    * 'faces': An `int64` tensor with shape `[F, 3]` denoting the face vertex
    indices, where F is the number of faces in the mesh.
  
    Note: In case the input specifies a Scene (with multiple meshes), the output
    will be a single TriangleMesh which combines all the triangle meshes in the
    scene.
class_docstr_tok: ["`","FeatureConnector","`","for","triangle","meshes",".","During","`","_generate_examples","`",",","the","feature","connector","accepts","as","input","any","of",":","*","`","str","`",":","path","to","a","{","obj",",","stl",",","ply",",","glb","}","triangle","mesh",".","*","`","trimesh.Trimesh","`",":","A","triangle","mesh","object",".","*","`","trimesh.Scene","`",":","A","scene","object","containing","multiple","TriangleMesh","objects",".","*","`","dict",":","`","A","dictionary","containing","the","vertices","and","faces","of","the","mesh","(","see","output","format","below",")",".","Output",":","A","dictionary","containing",":","#","TODO","(","b\/156112246",")",":","Add","additional","attributes","(","vertex","normals",",","colors",",","#","texture","coordinates",")",".","*","'vertices","'",":","A","`","float32","`","tensor","with","shape","`","[","N",",","3","]","`","denoting","the","vertex","coordinates",",","where","N","is","the","number","of","vertices","in","the","mesh",".","*","'faces","'",":","An","`","int64","`","tensor","with","shape","`","[","F",",","3","]","`","denoting","the","face","vertex","indices",",","where","F","is","the","number","of","faces","in","the","mesh",".","Note",":","In","case","the","input","specifies","a","Scene","(","with","multiple","meshes",")",",","the","output","will","be","a","single","TriangleMesh","which","combines","all","the","triangle","meshes","in","the","scene","."]
code: def __init__(self):
      super(TriangleMesh, self).__init__(
          {
              "vertices": features.Tensor(
                  shape=(None, 3), dtype=tf.float32
              ),
              "faces": features.Tensor(
                  shape=(None, 3), dtype=tf.uint64
              ),
          }
      )
  
file_path: graphics/tensorflow_graphics/datasets/features/trimesh_feature.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import numpy
  import six
  import tensorflow.compat.v2
  from tensorflow_datasets import features
  from tensorflow_graphics.io import triangle_mesh
label_desc: Use image node_id 1 to create a new TriangleMesh object from inherited base classes: features with example: obj = TriangleMesh()