code: def test_mono_projection(self):
      dataset = fo.Dataset()
      dataset.add_sample(fo.Sample(filepath=self.test_pcd_path))
  
      self.write_test_pcd(num_points=1000, seed=10, pcd_type="mono")
  
      fou3d.compute_orthographic_projection_images(
          dataset,
          size=(-1, 100),
          output_dir=self.temp_dir.name,
      )
      self.assertTrue(
          dataset.first().has_field("orthographic_projection_metadata")
      )
      self.assertValidProjection(
          dataset.first()["orthographic_projection_metadata"],
          get_abs_path("specs/3d/100x100_seed_10_none.png"),
      )
  
      fou3d.compute_orthographic_projection_images(
          dataset,
          size=(100, -1),
          output_dir=self.temp_dir.name,
          shading_mode="height",
      )
      self.assertValidProjection(
          dataset.first()["orthographic_projection_metadata"],
          get_abs_path("specs/3d/100x100_seed_10_height.png"),
      )
  
imports: import os
  import tempfile
  import unittest
  import numpy
  import open3d
  from PIL import Image
  import fiftyone
  import fiftyone.utils.utils3d
  from decorators import drop_datasets
label_desc: Use image node_id 4 for calling the OrthographicProjectionTests obj's underlying member method code with example usage: obj.test_mono_projection() without return types