Blender expose diverses API pour étendre ses fonctionnalités. En utilisant l'API, vous pouvez obtenir les données que Blender utilise en interne, telles que «la face actuellement sélectionnée» et «la position du sommet de l'objet». Diverses informations peuvent être obtenues à partir de l'API, et l'API publiée peut être confirmée à partir de ce qui suit, par exemple. http://www.blender.org/documentation/blender_python_api_2_67_release/contents.html
L'API est basée sur Python et n'est pas destinée aux utilisateurs, vous devez donc connaître les éléments suivants: À première vue, le seuil semble assez élevé, mais en réalité, si vous avez fait Blender et fait quelque chose, je pense que ce sera gérable. Au contraire, cela peut être facile pour ceux qui sont habitués à la programmation liée à la 3D.
Un simple exemple de plug-in pour Blender.
skeleton.py
#Requis pour accéder à la structure de données dans Blender
import bpy
#Informations sur le plug-in
bl_info = {
"name" : "Hoge Plugin", #Nom du plugin
"author" : "Piyo", #auteur
"version" : (0,1), #Version du plugin
"blender" : (2, 6, 5), #Version Blender sur laquelle fonctionne le plug
"location" : "UV Mapping > Hoge", #Positionnement des plug-ins dans Blender
"description" : "Hoge Fuga Piyo", #Description du plugin
"warning" : "",
"wiki_url" : "", #URL de la page Wiki où se trouve la description du plugin
"tracker_url" : "", #URL du fil de discussion de l'organisation du développeur Blender
"category" : "UV" #Nom de la catégorie du plugin
}
#menu
class CHoge(bpy.types.Operator):
bl_idname = "uv.hoge" #Nom de l'ID
bl_label = "Hoge Menu" #Chaîne de caractères affichée dans le menu
bl_description = "Hoge Piyo" #Description affichée dans le menu
bl_options = {'REGISTER', 'UNDO'}
#Le processus que le plug-in exécute réellement le processus
def execute(self, context):
return {'FINISHED'} #Renvoie FINISHED en cas de succès
#Fonction pour enregistrer un menu
def menu_func(self, context):
self.layout.operator("uv.hoge") #"Bl" de la classe à laquelle vous souhaitez vous inscrire_Spécifiez "idname"
#Que se passe-t-il lorsque vous installez le plug-in
def register():
bpy.utils.register_module(__name__)
bpy.types.VIEW3D_MT_uv_map.append(menu_func)
#Que se passe-t-il lorsque vous désinstallez le plug-in
def unregister():
bpy.utils.unregister_module(__name__)
bpy.types.VIEW3D_MT_uv_map.remove(menu_func)
#Fonction principale
if __name__ == "__main__":
register()
Pour accéder aux données internes de Blender, vous devez importer un module appelé bpy.
skeleton_1.py
#Requis pour accéder à la structure de données dans Blender
import bpy
Décrit des informations sur le plug-in. Puisque les commentaires dans le code source sont expliqués tels quels, rien de particulier n'est expliqué ici. Si vous souhaitez publier votre plugin sur le wiki de Blender, c'est une bonne idée d'inclure l'URL de votre page Wiki ou l'URL de Blender Deverloper Org. Cependant, si vous l'utilisez individuellement, il n'y a pas de problème si vous ne faites attention qu'à l'emplacement et à la catégorie. Pour référence, la page Wiki du plug-in que j'ai créé et l'URL de Blender Developer Org sont affichées ci-dessous. [Wiki] http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/UV/Copy_Paste_UVs [Blender Developer Org] https://developer.blender.org/T38460
skeleton_2.py
#Informations sur le plug-in
bl_info = {
"name" : "Hoge Plugin", #Nom du plugin
"author" : "Piyo", #auteur
"version" : (0,1), #Version du plugin
"blender" : (2, 6, 5), #Version Blender sur laquelle fonctionne le plug
"location" : "UV Mapping > Hoge", #Positionnement des plug-ins dans Blender
"description" : "Hoge Fuga Piyo", #Description du plugin
"warning" : "",
"wiki_url" : "", #URL de la page Wiki où se trouve la description du plugin
"tracker_url" : "", #URL du fil de discussion de l'organisation du développeur Blender
"category" : "UV" #Nom de la catégorie du plugin
}
Créez un élément de menu unique dans une classe qui décrit réellement le traitement du plug-in. Doit hériter de la classe bpy.types.Operator. Vous devez décrire le processus que vous souhaitez exécuter dans la méthode d'exécution et renvoyer "FINISHED" comme valeur de retour s'il réussit. Une autre chose qui peut être spécifiée comme valeur de retour est "CANCEL LED" qui met fin à l'opération lorsqu'une erreur se produit. Voir ci-dessous pour plus de détails. http://www.blender.org/documentation/blender_python_api_2_67_1/bpy.types.Operator.html
skeleton_3.py
#menu
class CHoge(bpy.types.Operator):
bl_idname = "uv.hoge" #Nom de l'ID
bl_label = "Hoge Menu" #Chaîne de caractères affichée dans le menu
bl_description = "Hoge Piyo" #Description affichée dans le menu
bl_options = {'REGISTER', 'UNDO'}
#Le processus que le plug-in exécute réellement le processus
def execute(self, context):
return {'FINISHED'} #Renvoie FINISHED en cas de succès
Décrivez le processus exécuté lorsque le plug-in est installé dans la fonction "enregistrer" et le processus exécuté lorsque le plug-in est désinstallé dans la fonction "désinscrire". Enregistrez le plug-in avec bpy.utils.register_module et bpy.utils.unregister_module. bpy.types.VIEW3D_MT_uv_map.append et bpy.types.VIEW3D_MT_uv_map.remove ajouter / supprimer des éléments dans le menu "UV Map". Créez une fonction (menu_func dans ce cas) qui décrit le processus de transmission du "bl_idname" défini dans la classe que vous souhaitez enregistrer à l'argument de self.layout.operator, et passez-le à l'argument de bpy.types.VIEW3D_MT_uv_map.append. L'élément spécifié par bl_label est ajouté au menu "UV Map". Si vous le transmettez à l'argument de bpy.types.VIEW3D_MT_uv_map.remove, l'élément ajouté sera supprimé.
skeleton_4.py
#Fonction pour enregistrer un menu
def menu_func(self, context):
self.layout.operator("uv.hoge") #"Bl" de la classe à laquelle vous souhaitez vous inscrire_Spécifiez "idname"
#Que se passe-t-il lorsque vous installez le plug-in
def register():
bpy.utils.register_module(__name__)
bpy.types.VIEW3D_MT_uv_map.append(menu_func)
#Que se passe-t-il lorsque vous désinstallez le plug-in
def unregister():
bpy.utils.unregister_module(__name__)
bpy.types.VIEW3D_MT_uv_map.remove(menu_func)
Pour la fonction principale, il vous suffit d'appeler la fonction de registre.
skeleton_5.py
#Fonction principale
if __name__ == "__main__":
register()
Exploitons en fait l'exemple de plug-in ci-dessus. Suivez les étapes ci-dessous pour installer le plug-in. La procédure d'installation est également décrite sur la page Blender Wiki. http://wiki.blender.org/index.php/Doc:JA/2.6/Manual/Extensions/Python/Add-Ons
Si l'installation est terminée avec succès, vous pouvez vérifier les éléments suivants sur chaque écran.
「User Preferences」-「Addons」
Dans un autre article de Qiita, j'ai présenté les points clés du développement du plug-in Blender. Veuillez vous y référer également.
Nous travaillons sur un tutoriel pour débutants pour tous ceux qui souhaitent développer un plug-in Blender. Si vous êtes intéressé, veuillez également vous y référer.
https://www.gitbook.com/book/nutti/introduction-to-add-on-development-in-blender/details
Recommended Posts