Blender (jusqu'à 2.49)
Python
Constituer une liste de segments
à partir des faces d'un mesh
    Début   Index
précédentScript Python
Macro python Suivant
Les données prises en compte par l'API python contiennent une liste d'edges ou segments correspondants  aux limites d'une face . Cependant les valeurs contenues dans ces variables n'ont pas de rapport direct  avec les sommets correspondant . En fait, il s'agit de groupes de variables à virgule flottante différentes des sommets eux-même ce qui ne permet pas de faire un travail de comparaison satisfaisant car deux  valeurs flottantes peuvent être très proches mais jamais complètement identiques. Il serait plus judicieux de créer une liste de segment constituée par des valeurs qui correspondent très préciément aux sommets donc un indice dans  la liste Mesh.verts . 
 
segment = [[1, 0], [0, 3], [1, 3], [3, 2], [1, 2], [5, 0], [5, 1], [1, 4], [5, 4]]
Au même titre une face pourrait être décrite  par la liste des segments qui la composent :
 
faceseg = [[0, 1, 2], [2, 3, 4], [5, 0, 6], [6, 7, 8]] 
def doc_segments(me):

        segment=[]
        faceseg=[]
        linkseg=[]
        reverses=[] 
        for f in me.faces:
                face=[]
                for n in range(len(f.v)-1):
                   s0=[me.verts.index(f.v[n]),
                       me.verts.index(f.v[n+1])]
                   if s0 not in segment:
                       segment.append(s0)
                   face.append(segment.index(s0))
                s2=[me.verts.index(f.v[n+1]),me.verts.index(f.v[0])]
                if s2 not in segment:
                       segment.append(s2)
                face.append(segment.index(s2))
                faceseg.append(face[:])

        for n in range(len(segment)):
           linkseg.append([])

        for r in segment:
           t=[r[1],r[0]]
           ok=0
           for n in range(len(segment)):
              if segment[n]==t:
                ok=1 
                reverses.append([segment.index(r),n])
           if ok==0:
                reverses.append([r])

        return segment,faceseg,linkseg,reverses


 
précédentScript Python
 Macro python Suivant
Vers le  Haut de page

Les questions concernant cette page  peuvent être posées sur  :
 news://news.zoo-logique.org/3D.Blender


 

 

Livre en français
Blender : apprenez, pratiquez, Créez, livre, Ed. Campus Press, coll. Starter Kit
Blender Starter Kit

Forum
FAQ
Lexique
Didacticiels
Compilations
Blender2KT
Débuter
Modelage
Blender python
Materiaux
Lumière
Animation
API python (eng)
Archives nzn
Statistiques
Doc flash Sculptris
Galerie Sculptris

mon site de démos sur youtube