http://jerome.le.chat.free.fr

Accueil

Addon : addon dependencies

bon, ce n'est pas vraiment un addon blender, mais un hack sur deux fichiers .py de la distribution officiel ( 2.58 r37702 d'usine, gps et jantes métal), et je viens juste de le finir. je voudrais que la communauté le teste, dans l'idée peut-être de le proposer en patch... donc attention c'est essspérimental (mais testé, testé et retesté, il n'y a pas réellement de risques).

mais pourquoi faire, donc ?

le but est de favoriser les développements de modules Blender Python, en partageant du code entre les addons, de créer des convergences entre les développeurs python, de travailler en équipe. beaucoup d'addon utilisent les mêmes fonctions et ont quasi exactement le même code. beaucoup ont les mêmes besoins. beaucoup d'idées de perdent en route, par faute de ne pas savoir comment régler tel cas, alors que ce même cas est réglé dans un autre addon...

 


Blender permettant maintenant de traiter directement de scripts à scripts grâce à sa nouvelle architecture, on peut imaginer des choses très intéressantes en terme de modularités.
il existe des addons transverses, qui peuvent s'utiliser dans différents contextes. par exemple un importeur OBJ sera utile dans de très nombreux contextes, ou par exemple un addon que je viens de finir aussi, qui permet de gérer un modal en souplesse et de logger des évènements. ( ici )

 

par exemple ce script modal, Script Events : il va me servir dans au minimum deux autres projets. dans un cas il détecte les changements de frame (même pendant un rendu d'animation), pour animer des objects à travers un script, dans l'autre il me permettra de créer un outil de modélisation paramétrique. il pourrait servir à d'autres programmes, dans plein d'autres contextes. logger des évènements, lancer des opérations régulières à la manière d'un cron, effacer les objets fantomes d'une scene...

ok, bon : et donc ?

et donc si un a besoin des fonctions d'un autre pour travailler, il faut bien qu'il sache si ce dernier est dispo. Voila un exemple :

ce script là a par exemple besoin de deux autres scripts pour fonctionner :

si Script Events et Icons n'étaient pas activés, ou dans une version trop ancienne, ou s'il étaient absents, la console afficherait un message de ce type au moment ou on essaierait d'allumer l'addon :

et rien n'est chargé.

les addons 'parents' mentionnent également les autres script qui l'utilisent en ce moment :

et on ne peut pas les éteindre tant que les addons 'fils' sont actifs. un message s'affiche alors dans la console.

pour mettre en place le système, après avoir télécharger les deux fichiers, c'est éminement complexe : il faut rajouter

 "dependencies" : [ ['Script Events',(0,1)],['Icons',(1,5,1)]  ]

dans le bl_info de son addon. les scripts requis n'ont pas besoin de savoir que le votre à besoin d'eux. ils le sauront sur le moment.

un petit signe à leurs auteurs fait toujours plaisir, et c'est peut-etre l'occasion de travailler avec d'autres. pour ce qui me concerne, je vais modulariser à donf :)

rajouter cette ligne ne 'casse' pas le système actuel, la modification ne 'casse' pas la mécanique normale des addons, la modification ne crée pas de nouvelles variables hors du scope des deux fichiers, et c'est réversible (si vous faites attention aux deux fichiers originaux. :)
et les fichiers de mon zip n'écrasent rien, ils portent l'extension .dependencies. bien sur il faudra enlever cet extension pour que ça marche, après avoir mis de coté les deux fichiers originaux.

voila. maintenant, c'est ici. c'est sympa si vous pouvez me donner votre avis. blender artists, le clan.