class_docstr: Class for storing and operating on 3D mesh data.
  
  Parameters
  ----------
  vertices : ndarray, shape (Nv, 3)
      Vertex coordinates. If faces is not specified, then this will
      instead be interpreted as (Nf, 3, 3) array of coordinates.
  faces : ndarray, shape (Nf, 3)
      Indices into the vertex array.
  edges : None
      [not available yet]
  vertex_colors : ndarray, shape (Nv, 4)
      Vertex colors. If faces is not specified, this will be
      interpreted as (Nf, 3, 4) array of colors.
  face_colors : ndarray, shape (Nf, 4)
      Face colors.
  vertex_values : ndarray, shape (Nv,)
      Vertex values.
  
  Notes
  -----
  All arguments are optional.
  
  The object may contain:
  
  - list of vertex locations
  - list of edges
  - list of triangles
  - colors per vertex, edge, or tri
  - normals per vertex or tri
  
  This class handles conversion between the standard
  [list of vertices, list of faces] format (suitable for use with
  glDrawElements) and 'indexed' [list of vertices] format (suitable
  for use with glDrawArrays). It will automatically compute face normal
  vectors as well as averaged vertex normal vectors.
  
  The class attempts to be as efficient as possible in caching conversion
  results and avoiding unnecessary conversions.
docstr: Get vertex normals
  
  Parameters
  ----------
  indexed : str | None
      If None, return an (N, 3) array of normal vectors with one entry
      per unique vertex in the mesh. If indexed is 'faces', then the
      array will contain three normal vectors per face (and some
      vertices may be repeated).
  
  Returns
  -------
  normals : ndarray
      The normals.
docstr_tok: ["Get","vertex","normals","Parameters","--","--","--","--","--","indexed",":","str","|","None","If","None",",","return","an","(","N",",","3",")","array","of","normal","vectors","with","one","entry","per","unique","vertex","in","the","mesh",".","If","indexed","is","'faces","'",",","then","the","array","will","contain","three","normal","vectors","per","face","(","and","some","vertices","may","be","repeated",")",".","Returns","--","--","--","-","normals",":","ndarray","The","normals","."]
code: def get_vertex_normals(self, indexed=None):
      """Get vertex normals
  
      Parameters
      ----------
      indexed : str | None
          If None, return an (N, 3) array of normal vectors with one entry
          per unique vertex in the mesh. If indexed is 'faces', then the
          array will contain three normal vectors per face (and some
          vertices may be repeated).
  
      Returns
      -------
      normals : ndarray
          The normals.
      """
      if indexed not in (None, "faces"):
          raise ValueError(
              "Invalid indexing mode. Accepts: None, 'faces'"
          )
  
      if self._vertex_normals is None:
          face_normals = self.get_face_normals()
          faces = self.get_faces()
          vertices = self.get_vertices()
          self._vertex_normals = _compute_vertex_normals(
              face_normals, faces, vertices
          )
  
      if indexed is None:
          return self._vertex_normals
      elif indexed == "faces":
          return self._vertex_normals[self.get_faces()]
  
imports: import numpy
label_desc: Use image node_id 15 for calling the MeshData obj's underlying member method code with example usage: obj.get_vertex_normals(indexed) and returns: self, self