Blender (jusqu'à 2.49)
Importer les chemins
aux format SVG
(tracés  vectoriels ou paths 2D)

en courbes de Bézier 

(20/04/2009) 
Version Anglaise
    Début   Index
précédentScript importer GIMP
Script Coordonnées mesh 3d en UV Suivant

Important

Ce script fonctionne parfaitement si on exporte le fichier à partir d'une version stable d'Inkscape en choisissant le type d'export Plain SVG ou Simple SVG. Depuis sa version 0.59n, il devrait lire sans problème tous les fichiers SVG exportés par Inkscape . 
Commandes comprises par la version courante
 
  ...
Actions=   {     "C" : courbe_vers_c,
                 "A" : courbe_vers_a, 
                 "S" : courbe_vers_s,
                 "M" : mouvement_vers,
                 "V" : ligne_tracee_v,
                 "L" : ligne_tracee_l,
                 "H" : ligne_tracee_h, 
                 "Z" : boucle_z,
                 "Q" : courbe_vers_q,
                 "T" : courbe_vers_t,
                 "c" : courbe_vers_c,
                 "a" : courbe_vers_a, 
                 "s" : courbe_vers_s,
                 "m" : mouvement_vers,
                 "v" : ligne_tracee_v,
                 "l" : ligne_tracee_l,
                 "h" : ligne_tracee_h, 
                 "z" : boucle_z,
                 "q" : courbe_vers_q,
                 "T" : courbe_vers_t
}

TAGcourbe=Actions.keys()

Formes traitées

Chronologie des changements du script 
 

0.5.9
- correction d'un vrai problème  au niveau de la  transformation scale.
- Un autre correction nécessaire elle-aussi au niveau de l'empilement
  des transformations qui déclanchait une erreur sous python 2.5 mais
  pas sous python 2.4
- nombreuses "améliorations" pour "clarifier" et "accélérer" le
 code (pas vraiment utiles, à mon avis).
- remplacement des  déclaration "%s"%  par la fonction str (pas
  nécessaire  non plus).
0.5.9a : - 2007/3/29
 -  Correction indispensable du traitement des commandes H et V.
 -  Encore quelques modifications mineures à l'intérêt tout aussi mineur

0.5.9b : - 2007/3/31
 -  une ou deux autres modifications mineures  :
    le nouvel objet est ajouté dans le calque courant.
    Modification du menu de mise à l'echelle 

0.5.9d : - 5/42007/
   -  possibilité d'importer les courbes en objet séparés.
   -  gestion de nom de chemin, seulement dan sle cas des courbes séparées. .
   -  ajout d'un menu pour faire le choix
   -  gestion des couleurs #rgb 

0.5.9e :  - 7/4/2007
  - Corretion d'un problème qui n'apparaissait que lorsqu'on utilisait l'option beveldepth
  - ajout de la gestion des noms de couleurs gérés utilisé par el format  SVG  (147 couleurs différentes)

0.5.9 ~ : - 2007/5/2 
              - script was updated with the modifs by cambo
              - removed all debug statements
              - correction of a zero division error in the calc_arc function.

0.5.9f : - 2007/15/7 
  - Correction de plusieurs bugs sur l'attributions des couleurs et le nommage des courbes

0.5.9i : - ??/??/?? 
  - Patch externe réalisé sur blender.org project.

0.5.9j : - 08/11/2008 
  - Prise en compte (sans interprétation) des définitions de couleurs commençant par un appel d'url.

0.5.9k : - 14/01/2009 
  - correction du parsing des nombres en notation scientifique.

0.5.9 l&m : - 31/01/2009 
  - correction du parsing des nombres en notation scientifique (encore) et traitement des plusieurs particularités des chaines de caractères.
- Correction du bug qui mélangeait les courbes issues d'imports successifs.
et en même temps d'un bug sur le Current Point.

0.5.9 n : - 01/02/2009 
- correction de la gestion des données répétées aprés une commande (arc et lineto).
-Nouvelle correction de la gestion du Current Point (mise à jour avant la création d'un nouveau chemin.
Avant

Après

Ces deux corrections rendent possible la lecture des fichiers svg d'Inkscape.

0.5.9 o : - 20/04/2009 
Les fichiers SVG exportés  par Adobe Illustrator sont souvent très encombrant car ils sont accompagnés de  Pattern constitué d'une multitude de path. Par exemple une simple étoile peut être décrite par la ligne :
 
<polygon points="55.901,118.693 41.109,78.969 0,68.635 33.209,42.291 30.335,0 65.651,23.443 104.983,7.642 93.601,48.473 
 120.784,80.998 78.434,82.79 "/>

alors que le   fichier pèse 96830 octets. Tout le reste n'est que la description du pattern que l'on ne souhaite pas vraiment  importer.

Si malgré tout on désire conserver le pattern, une option a été ajoutée au menu de départ :

Fichier d'exemple fourni par un aimable utilisateur du script 


0.5.8 : -  Nouveau lessivage des dernières utilisations de la fonction exec
            -  Correction d'un probleme lié aux poignées du  premier point de type 
               beztriple  créé avec la courbe de bezier. Elles n'étaient pas enregistrées.
            - Ajout de quelques outils pour gérer les unités : em, ex, px, pt, pc, cm, mm, 
               in et les pourcentages, mais seulement utilisables dans les rectangles. 
            - La matrice de rotation et celle de skew ont été corrigées aussi. 
            - Utilisation de la variable __slots__  dans les déclarations de classes pour 
              gagner  de la place en mémoire
            - retrait des variable inutilses dans les classes ITEM, CURZE et Bez
           +  quelques modifications esthétiques du code qui fonctionnait très bien 
               sans  ça : str à la place de '%s'%  par exemple.

0.5.7 : - Lessivage par force brute de quelques problemes liés aux poignées
                  (pas vraiment faciles à dénicher!

0.5.6 : -  Retrait de certaines commandes exec qui posaient des problèmes de 
                  sécurité.   Evaluation des autres.

0.5.5 : -  Modification de la gestion des courbes de bezier dessinant des
                  lignes droites . Ce nouveau script permet un meilleur remplissage
                 dans Blender et devrait optimer le nombre de facettes en transformant
                 les courbes en meshes.
 

0.5.4 : - Traduction des nom de fonction en anglais la python team 
                   menaçant de suprimer les scripts qui ne respecteraient pas
                   ce type de présentation . Plus une amélioration de la vitesse 
                   en evitant les consultations des dictionnaires .
                  Presque 15% plus rapide  . 9.75 secondes au lieu de 11 
                   pour charger le fichier  test . 
                   Un test a été ajouter pour trouver les courbes qui seraient 
                   remplies mais pas fermées. 
                  les anciennes fonctions inutilisées ont été retirées.!)

0.5.3 : - Deux modifications:
                  1/ la fonction Ajustement n'est plus utilisée ce qui accélère la vitesse de . 
                     35 % faster :  5690 courbes et 30254 points en 11 seconds . 
                     L'utilisateur devrau appliquer un ctrl-a sur l'objet .
                  2/ le choix des méthodes d'import a été supprimé  puisque la creation des
                      courbes internes est nettement plus rapide .
 

0.5.2 : - la fonction createCURVES() a été réécrite (l' objet curve créé 
                auparavant n'était pas du tout stable ) Elle fonctionne beaucoup mieux
                 mais toutes les courbes sont regroupées dans le même bloc objet . Ce qui va
                 poser des difficultés pour gérer les couleurs puisque l'index des matériaux est 
                 très limités. 

0.5.1 : - La fonction join faisait planter Blender 
 

0.5.0 : - Le script fonctionnait parfaitement avec   Blender 2.41 
              mais dans Blender 2.42, l'utilisation du nom originale + 'OOO.obj' pour
              écrire un fichier videoscape faisait planter Blender sous winXP quand 
              le script le chargeai . Curieusement , utiliser un nom plus simple avec 
              seul 'O' a résolu ce probleme .

              - Le script renvoyait des erreurs sur les chemin ouvert : corrected 

              - Dans b2.42, plusieurs imports successif étaient ajoutés au même 
                objet curve original . Donc depuis, le script renomme automatiquement 
                le dernier groupe de courbes importée avec le nom du fichier original .

0.4.9 : - version non disponible :  test privé 

0.4.8 : - Petite modification pour s'adapter à une légère fantaisie dans 
                l'utilisation des majuscules du format d'export de OpenOffice 
                ('viewbox' est écrit  'viewBox', par exemple) .
               A l'heure actuelle, 01/05/2006,  OpenOfficeo exporte bien (quoique...
               les imports dans Blender ne soient pas extraordinaires) mais ne lit 
               pas  ses propres fichiers svg .

0.4.7

- Gestion des fichiers de type SVGZ  . L'intsallation du python complet est nécessaire ou au moins l'accès au fichier gzip.py qui se trouve dans le répertoire /python24/lib/
 - Légère amélioration du tracé des courbes par l'intermédiaire de la function createCURVES
0.4.6
Amélioration de la méthode de déclaration de 'létat de courbe fermée .
0.4.5 :
- cette mise à jour n'interesse que l'es utilisateurs des versions       CVS supérieures ou égales à  blender 2.38 . dans les version      antérieures on ne trouve pas le module BezTriple qui permet        d'ajouter les courbes en interne sans passer par le format OBJ     propre  à Blender.
              Quelques problèmes peuvent survenir sur les courbes fermées.  Un bidouillage permet de les gérer mais si ce type de courbe n'apparaît pas fermé , il faut entrer dans le mode edit, tout    sélectionner, utiliser la touche H, pour débloquer les poignées       (sinon la courbe est recalculées avec l'opération suivante) ,               et enfin utiliser le raccourci C pour fermer la courbe Cette astuce devrait fonctionner mais ce n'est pas garanti .
0.4.4 :
           - - plusieurs corrections 
               pour obliger le sscript à comprendre un saut de ligne juste après un
               tag  . Problème assez peu fréquent (jamais rencontré sur l'ensemble 
               des fichier du site openclipart par exemple), mais il existe au moins 
               dans un script d'export de contours de mesh .

0.4.3

- Différentes corrections :
 * text font ( la propriété id  exportée par Adobe Illustrator se trouve entre  guillemet ce qui faussait le traitement en python)
 * La fonction de traitement de la commande S était mal conçue et a été réécrite . 

Pour juger de l'évolution :

Exemple  d'import avec la version 0.3.8b, buslane.svg disponible sur le site openclipart.org

Le même avec la version 0.4.3

0.4.2
- Ajout de fonctions de traduction des autres formes en path
* rect  et rectangle à coins arrondis aussi 
* line
* polyline
* polygon
* circle
* ellipse, cette dernière mériterait un peu plus de tests...mais
               je commence à saturer un peu sur le svg .
0.4.1
- Analyse affinée du format SVG pour en dégager la hierarchie d'ensemble dont  plus particulièrement la relation de parenté des groupes entre eux et des groupes aux formes . L'opération a lieu sans avoir à charger les outils xml . Le script peut donc fonctionner sans l'installation  complète du python . Sous windows la dll suffit . 
- Les transformations géométriques sont calculées en utilisant un stack  qui se construit à partir des relations de parentés . Elles sont empilées et appliquées les unes après les autres à partir de l'enfant le plus éloigné de la branche . 
-Ajout de  skewY et skewX dans les transformations géométriques.
- Modification des degrés en radians pour la fonction rotate .
- Simplification des traitement et retrait de fonctions devenues inutiles .
0.4.0
- Pour accélérer le traitement (et simplifier la rédaction du script) la fonction filtre_DATA a été retirée  et les variables textes transformées en variables numériques . 


0.3.9

-  Traitement des  commandes de tracés A,a   pour dessiner les arcs elliptiques .
0.3.8
- Fonctions ajoutées pour gérer les commandes de type quadratic bezier, Q,q et T,t , comme un poignée de bezier normal 
- les dernières modifications rendaient difficile l'import du svg produit à partir    de Gimp : corrigé aussi
0.3.7 : - correction de code pour le positionnement des poignées de contrôle pour 
      les commandes Curveto

0.3.6 : - complément de code pour certaines situation de juxtaposition de code Lineto
              et Curveto

0.3.5 :  - test sur les courbes ne contenant qu'un seul point . Ce qui peut arriver
              lorsque seul le code M est suivit de ses seules coordonnées ou des 
              codes non encore gérés  (22/06/05)
              - Suppression des sommets de fin de courbe occupants exactement la 
               même position  que les premiers quand la courbe est de type cyclique

0.3.4 :  - restructuration complète de la lecture des donnés paths (19/06/05)

0.3.3 :

- controle du contenu des transformations de type matrix qui peuvent  être écrites d'au moins deux manières différentes


0.3.2 :

- complément sur les transformations geométriques  (15 et 16 juin 2005):
                    scale,
                    rotate,
                    matrix,
                    skew
 - modification du script pour qu'on puisse le lancer tel quel sans passer par le menu scripts


0.3.1

- compatibilité restaurée avec gimp  (qui n'exporte pas les groupes)
0.3   : 
- lecture des transformations geométriques : translate pour les groupes et les paths
r&s

Liens externes où il est fait allusion à ce script 

précédentScript importer GIMP
 Script Coordonnées mesh 3d en UV 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