code: def test_trimesh(self):
      obj_file_path = os.path.join(_TEST_DATA_DIR, "cube.obj")
      obj_file = tf.io.gfile.GFile(obj_file_path)
      obj_mesh = trimesh.load(obj_file_path)
      expected_vertices = np.array(
          [
              [0.0, 0.0, 0.0],
              [0.0, 0.0, 1.0],
              [0.0, 1.0, 0.0],
              [0.0, 1.0, 1.0],
              [1.0, 0.0, 0.0],
              [1.0, 0.0, 1.0],
              [1.0, 1.0, 0.0],
              [1.0, 1.0, 1.0],
          ]
      )
      expected_faces = np.array(
          [
              [0, 6, 4],
              [0, 2, 6],
              [0, 3, 2],
              [0, 1, 3],
              [2, 7, 6],
              [2, 3, 7],
              [4, 6, 7],
              [4, 7, 5],
              [0, 4, 5],
              [0, 5, 1],
              [1, 5, 7],
              [1, 7, 3],
          ],
          dtype=np.uint64,
      )
      expected_trimesh = {
          "vertices": expected_vertices,
          "faces": expected_faces,
      }
      # Create a scene with two cubes.
      scene = trimesh.Scene()
      scene.add_geometry(obj_mesh)
      scene.add_geometry(obj_mesh)
      # The expected TriangleFeature for the scene.
      expected_scene_feature = {
          "vertices": np.tile(expected_vertices, [2, 1]).astype(
              np.float32
          ),
          "faces": np.concatenate(
              [expected_faces, expected_faces + len(expected_vertices)],
              axis=0,
          ),
      }
      self.assertFeature(
          feature=trimesh_feature.TriangleMesh(),
          shape={"vertices": (None, 3), "faces": (None, 3)},
          dtype={"vertices": tf.float32, "faces": tf.uint64},
          tests=[
              # File path
              tfds.testing.FeatureExpectationItem(
                  value=obj_file_path,
                  expected=expected_trimesh,
              ),
              # File object
              tfds.testing.FeatureExpectationItem(
                  value=obj_file,
                  expected=expected_trimesh,
              ),
              # Trimesh
              tfds.testing.FeatureExpectationItem(
                  value=obj_mesh,
                  expected=expected_trimesh,
              ),
              # Scene
              tfds.testing.FeatureExpectationItem(
                  value=scene,
                  expected=expected_scene_feature,
              ),
              # FeaturesDict
              tfds.testing.FeatureExpectationItem(
                  value=expected_scene_feature,
                  expected=expected_scene_feature,
              ),
              # Invalid type
              tfds.testing.FeatureExpectationItem(
                  value=np.random.rand(80, 3),
                  raise_cls=ValueError,
                  raise_msg="obj should be either a Trimesh or a Scene",
              ),
          ],
      )
  
file_path: graphics/tensorflow_graphics/datasets/features/trimesh_feature_test.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import os
  import numpy
  import tensorflow.compat.v2
  import tensorflow_datasets
  from tensorflow_graphics.datasets.features import trimesh_feature
  import trimesh
label_desc: Use image node_id 1 for calling the TrimeshFeatureTest obj's underlying member method code with example usage: obj.test_trimesh() without return types