code: def save_visual_geometry(obj, output_path):
      # TODO: instead export as blend file to keep more material info
      # see e.g.: https://github.com/sybrenstuvel/splode/blob/master/splode/internal.py#L106
  
      vis_path = output_path / "visual_geometry.obj"
      print(vis_path)
      with select(obj), center(obj):
          bpy.ops.export_scene.obj(
              filepath=str(vis_path),
              axis_forward="Y",
              axis_up="Z",
              use_selection=True,
              use_materials=True,
          )
      return vis_path
  
imports: import contextlib
  import copy
  import json
  import pathlib
  import tarfile
  import shutil
  import numpy
  import trimesh
  from kubric.safeimport.bpy import bpy
label_desc: Use image node_id 15 for calling a global function with example usage: save_visual_geometry(obj, output_path) and returns: vis_path