code: def stage3(object_folder: Path, logger=_DEFAULT_LOGGER):
      source_path = object_folder / "kubric" / "visual_geometry_pre.glb"
      log_path = object_folder / "kubric" / "stage3_logs.txt"
      target_path = object_folder / "kubric" / "visual_geometry.glb"
  
      if target_path.is_file():
          logger.debug(f'skipping stage3 on "{object_folder}"')
          return  # stage already completed; skipping
      logger.debug(f'stage3 running on "{object_folder}"')
  
      asset_id = str(
          object_folder.relative_to(object_folder.parent.parent)
      )
  
      command_string = (
          f"python bpy_clean_mesh.py "
          f"--source_path={source_path} --target_path={target_path} "
          f"--asset_id={asset_id} > {log_path}"
      )
  
      retobj = subprocess.run(command_string, shell=True, check=True)
      if retobj.returncode != 0:
          logger.error(
              f"stage3 failed with return code {retobj.returncode}"
          )
  
      if not target_path.is_file():
          logger.error(
              f'stage3 post-condition failed, file does not exist "{target_path}"'
          )
  
imports: import argparse
  import json
  import logging
  from pathlib import Path
  import shutil
  import subprocess
  import sys
  import tarfile
  from typing import Tuple
  import trimesh
  from shapenet_synsets import CATEGORY_NAMES
  from trimesh_utils import get_object_properties
  import trimesh_utils
  from urdf_template import URDF_TEMPLATE
label_desc: Use image node_id 4 for calling a global function with example usage: stage3(object_folder, logger) without return types