Skip to content

Instantly share code, notes, and snippets.

@mfirmin
Last active April 19, 2023 12:09
Show Gist options
  • Save mfirmin/0d6ecbe52eeaaa0202f97c3b68d37f6f to your computer and use it in GitHub Desktop.
Save mfirmin/0d6ecbe52eeaaa0202f97c3b68d37f6f to your computer and use it in GitHub Desktop.
Batch Triangulation of .obj files with Blender
# This script triangulates each .obj file in the input directory
# using Blender's Python API (https://docs.blender.org/api/current/index.html)
# It assumes that that the input/ and output/ directories exist
# Run with `blender --background --python triangulate.py`
# Tested with Blender 2.81
# Note: Before running, make sure the default scene is empty by opening Blender,
# selecting and deleting everything (light, camera, & cube),
# and selecting File -> defaults -> Save startup file
import bpy
import glob
for f in glob.glob("input/*.obj"):
basename = f.split('/')[1]
bpy.ops.import_scene.obj(filepath=f)
bpy.ops.export_scene.obj(filepath="output/{}".format(basename), use_triangles=True, use_materials=False)
bpy.ops.object.delete()
@DavidLyhedDanielsson
Copy link

DavidLyhedDanielsson commented Apr 19, 2023

I had to run this through blender since python 3.7 is required, I modified it slightly to work on Windows too:

for f in glob.glob("<INSERT ABSOLUTE PATH HERE>/input/*.obj"):
    basename = f.split('\\')[-1]
    bpy.ops.import_scene.obj(filepath=f)
    bpy.ops.export_scene.obj(filepath=f"<INSERT ABSOLUTE PATH HERE>/output/{basename}", use_triangles=True, use_materials=False)
    bpy.ops.object.delete()

Huge thanks for the script!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment