PovAnim pour Blender 2.28
(et Blender 2.23/2.25/2.26/2.27 voir page des anciennes versions)
Jean-Michel Soler, fevrier2002/mars 2003
Fichier:Page précedente
Page suivante: Finish
Structure des fichiers 3/n
  Aide à la reconstitution de fichier mesh2
Le script permet actuellement de choisir entre l'export d'un fichier << compact >> regroupant toutes les données meshes d'une scène à l'exception  des matériaux (s'ils ne sont pas définis dans la text_list) et celui d'une série de fichiers
<< nomdemesh.inc >>  logés dans un sous répertoire  "/objects" avec les même limites de matériaux.

Le script crée en même temps un fichier << mesh-nomdefichierblender.comp >> dans lequel les fichiers objets sont appelés en tant qu'<< #include >> :

//povray beta version 3.5
// Povanim export from : tux2d , Meshes

#include "mattux2d.inc"
//Mesh number: 1
#include "povanim/objects/Sphere_008.inc"
//Mesh number: 2
#include "povanim/objects/Sphere_009.inc"
//Mesh number: 3
#include "povanim/objects/Sphere_010.inc"
//Mesh number: 4
#include "povanim/objects/Sphere_011.inc"
//Mesh number: 5
#include "povanim/objects/Sphere_012.inc"
#declare Sphere_008group=object{ Sphere_008
         scale<1.88446377282,1.88446379497,1.88446385396>
         rotate<86.0656155078,1.46359535099e-008,-22.344726755>
         translate<-0.0823496580124,5.80556201935,1.50403165817>
}
#declare Sphere_009group=object{ Sphere_009


L'include se faisant avec l'adresse absolue du fichier lorsque le script est utilisé à partir de Blender même. L'exemple correspond au adresse de la version de développement.
Télecharger le script
 ####################################################
# Script de reconstitution de fichier mesh

# (c) jm soler, Mai 2003
#
# Ce script est proposé dans l'état. L'auteur
# ne sera pas tenu pour responsable de l'usage qu'on
# en fera, ni des dommages causé par son utilisation
# quelles que soient les conditions d'utilisation.
#
# NE FONCTIONNE QUE SUR LES FICHIERS STATIQUES
#
#####################################################

####################################################
# Pour fonctionner correctement le script doit être
# chargé dans le fichier blender que l'on vient d'exporter
#####################################################

####################################################
# Veuillez donner le nom du fichier blender :
#####################################################
file='tux2d'
####################################################
# Le resultat se trouve dans 'mesh'+file+'.comp'
#####################################################

filtre={
"vertex_vectors" : ['', 'verts.inc'],
"normal_vectors" : ['', 'norm.inc'],
"face_indices"   : ['', 'faces.inc'],
"normal_indices" : ['', 'nindice.inc'],
"uv_vectors"     : ['', 'uvco.inc'],
"texture_list"   : ['', 'text_list.inc'],
"uv_indices"     : ['', 'uvind.inc']
}

#----------------------------------------
# developpement hors blender 1
# utilisation dans blender          0
#---------------------------------------- 
devel=0

#----------------------------------------
# gestion des repertoires supplémentaires
#---------------------------------------- 
import os

#----------------------------------------
# recuperation de l'adresse absolue des
# fichiers
#---------------------------------------- 
if devel==0: 
   import sys
   import Blender

   L=sys.path
   ls=Blender.Get('filename')
   ls=Blender.sys.dirname(ls)
   if ls not in sys.path:
      sys.path.append(ls)
else:
   #----------------------------------------
   # developpement hors blender :blenderfile/py
   #---------------------------------------- 
   ls='..'

#----------------------------------------
# exportation groupée : 1 = oui,
#                                  0 = non
#---------------------------------------- 
bloc=0
if bloc==0:
   #---------------------------------------- 
   # Tout est rangé dans le répertoire objet
   # il faut vérifier qui'l existe 
   #----------------------------------------
   try:
     os.stat(ls+os.sep+'povanim'+os.sep+'objects')
   except:
     os.mkdir(ls+os.sep+'povanim'+os.sep+'objects')
try:
#if 1==1: 
    #----------------------------------------
    # ouverture et lecture du fichier cible
    # qui contient toutes les informations
    # la localisation des données. 
    #----------------------------------------
    f=open(ls+os.sep+'povanim'+os.sep+'mesh'+file+'.inc','r')
    contenu=f.readlines()
    f.close()
 

    f=None
    f_o=None

    #-----------------------------------------
    # Quel que soit le type de regroupement
    # que l'on choisisse, on garde une trace des
    # fichiers que l'on doit importés dans un
    # fichier *.comp
    #------------------------------------------
    f=open(ls+os.sep+'povanim'+os.sep+'mesh'+file+'.comp','w')

    l=0
    nom=''
    nom_objet=''

    #-----------------------------------------
    #  Boucle principale :
    #------------------------------------------
    while l <=len(contenu)-1:
        if contenu[l].find('#declare')!=-1 and contenu[l].find('mesh2')!=-1 :
            #------------------------------------------
            # s'il s'agit d'un fichier unique 
            #------------------------------------------
            if (contenu[l].find('#declare')==-1 and contenu[l].find('mesh2')==-1):
                f.write(contenu[l]+'\n')
            #-------------------------------------------
            # si on veut l'export d'objets séparés
            #-------------------------------------------
            if bloc==0:
               n0=contenu[l].find('#declare')+len('#declare ')
               n1=contenu[l].find(' =')
               nom_objet=contenu[l][n0:n1]
               #---------------------------
               # controle des objets traites
               #---------------------------
               print nom_objet
               #---------------------------
               # ouverture des fichiers objets
               #---------------------------
               f_o=open(ls+os.sep+'povanim'+os.sep+'objects'+os.sep+nom_objet+'.inc','w')
               f_o.write(contenu[l])
               #---------------------------
               # prise en compte des donnes
               # dans le fichier mesh "global"
               #---------------------------
               f.write('#include "'+ls+os.sep+'povanim'+os.sep+'objects'+os.sep+nom_objet+'.inc"\n')

            while contenu[l].find('}')!=0:
                l+=1
                if contenu[l].find('}')!=0 and contenu[l].find('uv_mapping')==-1:
                    d=contenu[l].find('{ #include "')
                    tag=contenu[l][22:d]
                    d1=d+len('{ #include "')
                    #print tag 
                    d2=contenu[l].find(filtre[tag][1])
                    nom=contenu[l][d1:d2]

                    #------------------------------------------
                    # récupérations des données 
                    #------------------------------------------
                    f2=open(ls+os.sep+'povanim'+os.sep+'mesh'+os.sep+nom+filtre[tag][1],'r')
                    fichier_inc=f2.readlines()
                    f2.close()

                    #------------------------------------------
                    # si il s'agit d'un fichier unique 
                    #------------------------------------------
                    if bloc==1:
                       f.write(tag+'{\n')
                       f.writelines(fichier_inc)
                       f.write('}\n // '+tag+'\n')
                    #-------------------------------------------
                    # si on veut l'export d'objets séparés
                    #-------------------------------------------
                    else: 
                       f_o.write(tag+'{\n')
                       f_o.writelines(fichier_inc)
                       f_o.write('}\n // '+tag+'\n')

                    if l> len(contenu):
                        print "arret"
                        break
                else:
                    if bloc==1: 
                       if f!=None and contenu[l].find('}')==-1 :
                          f.write(contenu[l])
                    else: 
                       if f_o!=None and contenu[l].find('}')==-1 :
                          f_o.write(contenu[l])
            #------------------------------------------
            # si il s'agit d'un fichier unique 
            #------------------------------------------
            if bloc==1: 
                f.write('}// fin de '+nom+'\n')
            else:
                #-------------------------------------------
                # si on veut l'export d'objets séparés
                #-------------------------------------------
                f_o.write('} // fin de '+nom+'\n')
        else:
            #------------------------------------------
            # si il s'agit d'un fichier unique 
            #------------------------------------------
            if (contenu[l].find('#declare')==-1 and contenu[l].find('mesh2')==-1) and bloc==0 and contenu[l].find('\n')!=0:
               f.write(contenu[l])

            elif contenu[l].find('mesh2')==-1 and contenu[l].find('\n')!=0:
               f.write(contenu[l])

            if bloc==0:
                #-------------------------------------------
                # si on veut l'export d'objets séparés
                #-------------------------------------------
                if f_o!=None:
                   f_o.close()
        l+=1
    if f!=None: 
        f.close()
except:
    l=""" vous êtes en train d'essayer d'exporter un fichier d'animation ou un ficher contenant une macro"""
    print l
 


 
 
Tous les droits réservés pour le logo "povanim", les explications, scripts et images sur ces pages par JM Soler fevrier/juin 2002. 
Fichier:Page précedente
Page suivante: Finish
Index principal