Pour créer des surfaces fractales, avec "bpy" sous "Blender" comme ailleurs, il est nécessaire de faire appel à la récursivité. À part ça, l'objet créé (un tétraèdre de Sierpinski) sera un polyèdre et la technique de création sera la même que précédemment.
=Fonctions Python=
Comme précédemment, pour pouvoir utiliser les méthodes de "bpy", on doit les importer:
from Blender import *
import bpy
sommets=[]
faces=[]
Les tableaux "sommets" et "faces" sont des variables globales; Python va les modifier au fur et à mesure des appels récursifs à la fonction "sierpin" ci-dessous.
Milieu.
Pour simplifier le code ci-dessous, on crée une fonction "milieu" qui, à deux tableaux de trois coordonnées (deux points dans l'espace) associe un troisième tableau du même genre:
def milieu(m,n):
 x=(m[0]+n[0])/2.
 y=(m[1]+n[1])/2.
 z=(m[2]+n[2])/2.
 return [x,y,z]
Récursivité.
La fonction "sierpin" met dans le tableau "sommets" la liste des sommets du polyèdre, et dans "faces" la liste de ses faces, au fur et à mesure. Son code est relativement court grâce à la récursivité et à une variable auxiliaire "n" appelée "ordre" du tétraèdre: 
def sierpin(a,b,c,d,n):
 if (n>0):
 sierpin(a,milieu(a,b),milieu(a,c),milieu(a,d),n-1)
 sierpin(milieu(a,b),b,milieu(b,c),milieu(b,d),n-1)
 sierpin(milieu(a,c),milieu(b,c),c,milieu(c,d),n-1)
 sierpin(milieu(a,d),milieu(b,d),milieu(c,d),d,n-1)
 else:
 sommets.append(a)
 sommets.append(b)
 sommets.append(c)
 sommets.append(d)
 ns=len(sommets)
 faces.append([ns-4,ns-3,ns-2])
 faces.append([ns-4,ns-2,ns-1])
 faces.append([ns-4,ns-1,ns-3])
 faces.append([ns-3,ns-2,ns-1])
La variable "ns" contient le nombre actuel de sommets, en effet elle est calculée comme longueur du tableau contenant la liste des sommets, qui est donc bien égale au nombre de sommets. Mais comme ceux-ci sont numérotés à partir de 0, les 4 derniers sommets sont les numéros "ns-4" à "ns-1" (il n'y a pas de numéro "ns").
Un appel à "sierpin(a,b,c,d,0)" donne les sommets et faces d'un tétraèdre (de sommets a, b, c et d),
un appel à "sierpin(a,b,c,d,1)" donne les sommets et faces de 4 tétraèdres,
etc.
=Création de l'objet=
Appel de la fonction récursive.
Grâce à ce qui précède, il suffit pour avoir les sommets et faces de l'approximation polyédrale de l'objet fractal, d'une seule ligne:
sierpin([-1,-1,-1],[1,1,-1],[-1,1,1],[1,-1,1],6)
Cet appel remplit les tableaux "sommets" et "faces" qu'il suffit de fournir à un objet "polyèdre" pour créer celui-ci:
création du tétraèdre de Sierpinski.
Comme à chaque fois, il reste à
si=bpy.data.meshes.new('sierp')
si.verts.extend(sommets)
si.faces.extend(faces)
scn = bpy.data.scenes.active 
ob = scn.objects.new(si, 'sierpinski')
Ensuite, après avoir texturé l'objet 3D, il suffit d'un appui sur le bouton "F12" du clavier pour effectuer un rendu:

Photographie/Fabricants/Schneider-Kreuznach/Schneider-Kreuznach Componon 80 mm f/5,6

Photographie/Fabricants/Schneider-Kreuznach/Schneider-Kreuznach Comparon 150 mm f/5,6

Photographie/Fabricants/Paterson
La société Paterson est connue pour ses productions de produits de traitement et de matériels de laboratoire.

Introduction au test logiciel/Problématiques de tests