1

I created two blender scripts :

  • a MeshCleaner : that cleans the meshes for my glb file
  • a HierarchyCleaner : that cleans the hierarchy for my glb files

To clean the code , i added an IOHandler for reading and writing glb files so i can reuse the IOHandler in both the MeshCleaner and the HierarchyCleaner . When running one of the scripts i run blender in the background

  • MeshCleaner.py
import bpy
from .IOHandler import import_gltf_file , export_gltf_file , read_filename

def remove_default_cube (): objs = bpy.data.objects objs.remove(objs["Cube"], do_unlink=True)

def clean_heavy_gltf_file(filename): import_gltf_file(filename) export_gltf_file(filename)

if name=="main": remove_default_cube() filename = read_filename() clean_heavy_gltf_file(filename)

  • HierarchyCleaner.py
import bpy
from IOHandler import import_gltf_file , export_gltf_file , read_filename
from MeshCleaner import remove_default_cube

def clean_hierarchy(): objs = bpy.data.objects nodes=objs.values() print(nodes) for node in nodes : if(len(node.children)==0): node.name=node.data.name

def correct_file(filename): import_gltf_file(filename) remove_default_cube() clean_hierarchy() export_gltf_file(filename)

if name=="main": correct_file()

  • IOHandler.py:
import bpy
import sys

def import_gltf_file(filename): bpy.ops.import_scene.gltf(filepath = filename)

def export_gltf_file(filename): bpy.ops.export_scene.gltf(filepath = filename)

def read_filename(): filename=sys.argv[4] return filename

I run the code using sh scripts running :

GLB_FILE=$1 ;

blender --background --python HierarchyCleaner.py $GLB_FILE ;

or

GLB_FILE=$1 ;

blender --background --python MeshCleaner.py $GLB_FILE ;

when trying to run the code i have an ImportError stating that there is no such module as IOHandler . all the scripts are within the same directory .

Is there a way to make this work and ?

0 Answers0