# Blender 3.4.1 # Debian 12 @ tenko # 20251109, résidence polygones @ Fablab des portes logiques import bpy import math # ------------------------------- # Rendu wireframe "propre" 600x600 # ------------------------------- # Supprimer tous les objets existants bpy.ops.wm.read_factory_settings(use_empty=True) # Importer le STL bpy.ops.import_mesh.stl(filepath="teapot.stl") obj = bpy.context.selected_objects[0] # Supprimer tous les matériaux existants obj.data.materials.clear() # Ajouter un modifier wireframe mod = obj.modifiers.new(name="WireframeMod", type='WIREFRAME') mod.thickness = 0.02 # épaisseur des lignes # Créer un matériau noir shadeless pour le wireframe mat = bpy.data.materials.new(name="WireMat") mat.diffuse_color = (0, 0, 0, 1) mat.use_nodes = True bsdf = mat.node_tree.nodes.get("Principled BSDF") bsdf.inputs['Base Color'].default_value = (0, 0, 0, 1) bsdf.inputs['Specular'].default_value = 0 bsdf.inputs['Roughness'].default_value = 1 obj.data.materials.append(mat) # Ajouter une caméra cam_data = bpy.data.cameras.new(name="Camera") cam_object = bpy.data.objects.new("Camera", cam_data) bpy.context.collection.objects.link(cam_object) bpy.context.scene.camera = cam_object # Paramètres de rendu scene = bpy.context.scene scene.render.image_settings.file_format = 'PNG' scene.render.resolution_x = 600 scene.render.resolution_y = 600 scene.render.film_transparent = False # fond blanc # scene.render.film_transparent_glass = False # Désactiver l’anti-aliasing # scene.render.use_antialiasing = False scene.render.engine = 'BLENDER_EEVEE' # moteur Eevee plus simple # Eevee anti-aliasing quasi désactivé scene.eevee.taa_render_samples = 1 # Récupérer la scène scene = bpy.context.scene # Créer un monde si nécessaire if scene.world is None: world = bpy.data.worlds.new("World") scene.world = world # Couleur de fond blanc scene.world.use_nodes = True bg = scene.world.node_tree.nodes['Background'] bg.inputs['Color'].default_value = (1, 1, 1, 1) # blanc # Centrer la caméra autour de l'objet center = obj.location # Paramètres rotation n_views = 30 radius = 10 # distance caméra elevation = 5 for i in range(n_views): angle = 2 * math.pi * i / n_views cam_object.location.x = center.x + radius * math.cos(angle) cam_object.location.y = center.y + radius * math.sin(angle) cam_object.location.z = center.z + elevation # Orienter la caméra vers le centre direction = center - cam_object.location rot_quat = direction.to_track_quat('-Z', 'Y') cam_object.rotation_euler = rot_quat.to_euler() # Nom du fichier scene.render.filepath = f"teapot_wire_{i:02d}.png" # Rendu bpy.ops.render.render(write_still=True)