Archiv für den Monat: August 2012

Blender 2.6: „remove doubles“ für alle Objekte

Mal wieder eines dieser „Google-Löcher“: man findet nix zu einem Suchbegriff. Stopfen wir dieses Loch (und für mich ist es eine Art Zwischenablage, wenn ich das mal wieder brauchen sollte).

Problemstellung: man hat eine 3D-Szene beispielsweise aus einem anderen Programm in Blender importiert, und würde gerne damit weiterarbeiten. Stellt nun aber fest, dass praktisch alle Dreiecke im Modell doppelt sind – anwählen, Editmode, „Remove doubles“, „recalculate normals“ Editmode verlassen geht ja noch für 10 Objekte. Was aber, wenn das über 100 sind? Richtig, Blender hat ja zum Glück einen eingebauten Python-Interpreter. Also ein beliebiges Blender-Fenster schnappen, die Python-Konsole aufmachen über den kleinen Button unten links:

…und dann das hier einfach reinkopieren, ggf. noch einmal Return drücken. Vorher müssen die Objekte selektiert werden, die der Prozedur unterworfen werden sollen (ggf. mal mit ein paar anfangen, weil das Skript eine Weile braucht, wenn komplexe Geometrien dabei sind):

import bpy
if bpy.context.selected_objects != []:
	for ob in bpy.context.selected_objects:
		if ob.type == 'MESH':
			bpy.context.scene.objects.active = ob 
			bpy.ops.object.mode_set(mode='EDIT') 
			bpy.ops.mesh.select_all() 
			# remove doubles:
			bpy.ops.mesh.remove_doubles() 
			# recalculate outside normals:
			bpy.ops.mesh.normals_make_consistent(inside=False)
			bpy.ops.object.mode_set(mode='OBJECT')