class_docstr: Instanced Mesh visual.
  
  Mostly identical to MeshVisual, but additionally takes arrays of
  of positions and transforms (optionally colors) to create multiple
  instances of the mesh.
  
  Instancing is a rendering technique that re-uses the same mesh data
  by applying transformations to vertices and vertex data or textures,
  wich can drastically improve performance compared to having many
  simple MeshVisuals.
  
  Parameters
  ----------
  instance_positions : (I, 3) array
      Coordinates for each instance of the mesh.
  instance_transforms : (I, 3, 3) array
      Matrices for the transforms to apply to each instance.
  instance_colors : ColorArray
      Matrices of colors for each instance. Colors
  *args : list
      Positional arguments to pass to :class:`~vispy.visuals.mesh.MeshVisual`.
  **kwargs : dict
      Keyword arguments to pass to :class:`~vispy.visuals.mesh.MeshVisual`.
  
  Examples
  --------
  See example `scene/instanced_mesh_visual.py` in the gallery.
class_docstr_tok: ["Instanced","Mesh","visual",".","Mostly","identical","to","MeshVisual",",","but","additionally","takes","arrays","of","of","positions","and","transforms","(","optionally","colors",")","to","create","multiple","instances","of","the","mesh",".","Instancing","is","a","rendering","technique","that","re-uses","the","same","mesh","data","by","applying","transformations","to","vertices","and","vertex","data","or","textures",",","wich","can","drastically","improve","performance","compared","to","having","many","simple","MeshVisuals",".","Parameters","--","--","--","--","--","instance_positions",":","(","I",",","3",")","array","Coordinates","for","each","instance","of","the","mesh",".","instance_transforms",":","(","I",",","3",",","3",")","array","Matrices","for","the","transforms","to","apply","to","each","instance",".","instance_colors",":","ColorArray","Matrices","of","colors","for","each","instance",".","Colors","*","args",":","list","Positional","arguments","to","pass","to",":","class",":","`","~vispy.visuals.mesh.MeshVisual","`",".","*","*","kwargs",":","dict","Keyword","arguments","to","pass","to",":","class",":","`","~vispy.visuals.mesh.MeshVisual","`",".","Examples","--","--","--","--","See","example","`","scene\/instanced_mesh_visual.py","`","in","the","gallery","."]
code: def instance_colors(self, colors):
      if colors is not None:
          colors = ColorArray(colors)
          self._instance_colors_vbo = VertexBuffer(
              colors.rgba, divisor=1
          )
      else:
          self._instance_colors_vbo = Variable(
              "base_color", self._color.rgba
          )
  
      self._instance_colors = colors
      self.mesh_data_changed()
  
file_path: vispy/vispy/visuals/instanced_mesh.py
imports: from __future__ import division
  import numpy
  from ..gloo import VertexBuffer
  from ..gloo.texture import downcast_to_32bit_if_needed
  from ..color import ColorArray
  from .filters import InstancedShadingFilter
  from .shaders import Variable
  from .mesh import MeshVisual
label_desc: Use image node_id 7 for calling the InstancedMeshVisual obj's underlying member method code with example usage: obj.instance_colors(colors) without return types