code: def attach_headlight(mesh, view, canvas):
      light_dir = (0, 1, 0, 0)
      mesh.shading_filter.light_dir = light_dir[:3]
      initial_light_dir = view.camera.transform.imap(light_dir)
  
      @view.scene.transform.changed.connect
      def on_transform_change(event):
          transform = view.camera.transform
          mesh.shading_filter.light_dir = transform.map(
              initial_light_dir
          )[:3]
  
file_path: vispy/examples/scene/mesh_texture.py
imports: import argparse
  import numpy
  from vispy import app, scene
  from vispy.io import imread, load_data_file, read_mesh
  from vispy.scene.visuals import Mesh
  from vispy.scene import transforms
  from vispy.visuals.filters import TextureFilter
label_desc: Use image node_id 2 for calling a global function with example usage: attach_headlight(mesh, view, canvas) without return types