code: def triangles(self):
          
          triangles = collections.deque()
          triangles_node = collections.deque()
  
          for node_name in self.graph.nodes_geometry:
              # which geometry does this node refer to
              transform, geometry_name = self.graph[node_name]
  
              # get the actual potential mesh instance
              geometry = self.geometry[geometry_name]
              if not hasattr(geometry, 'triangles'):
                  continue
              # append the (n, 3, 3) triangles to a sequence
              triangles.append(
                  transformations.transform_points(
                      geometry.triangles.copy().reshape((-1, 3)),
                      matrix=transform))
              # save the node names for each triangle
              triangles_node.append(
                  np.tile(node_name,
                          len(geometry.triangles)))
          # save the resulting nodes to the cache
          self._cache['triangles_node'] = np.hstack(triangles_node)
          triangles = np.vstack(triangles).reshape((-1, 3, 3))
          return triangles
docs: Return a correctly transformed polygon soup of the
          current scene.
  
          Returns
          ----------
          triangles: (n,3,3) float, triangles in space