Les caractères peuvent être affichés en créant une image de police avec uniquement la fonction OpenGL expliquée dans Utilisation d'OpenGL depuis le script [Blender]. .. Cependant, si vous souhaitez afficher un peu les caractères, par exemple pour le débogage, la préparation de l'image de police prendra un certain temps. Pour un tel cas, Blender fournit une API de dessin de texte pour dessiner facilement du texte à partir d'un script. Par exemple, le module complémentaire officiel Screencast Keys de Blender utilise cette fonction pour afficher les touches enfoncées au cours des dernières secondes.
Dans cet article, j'expliquerai comment utiliser l'API de dessin de texte de Blender avec des exemples.
Voici un exemple pour afficher une chaîne de caractères dans "View 3D".
render_text.py
import bpy
import blf #Module de dessin de texte
bl_info = {
"name": "Tutorial: Render text",
"author": "Nutti",
"version": (1, 0),
"blender": (2, 74, 0),
"location": "View3D > Tutorial: Render text with blf module",
"description": "Tutorial: Render text with blf module.",
"warning": "",
"support": "COMMUNITY",
"wiki_url": "",
"tracker_url": "",
"category": "3D View"
}
class TextRenderer(bpy.types.Operator):
"""Dessinez une chaîne"""
bl_idname = "view3d.text_renderer"
bl_label = "Text renderer"
__handle = None #Fonction de dessin
#Enregistrer la fonction de dessin de la zone "View3D"
@staticmethod
def handle_add():
TextRenderer.__handle = bpy.types.SpaceView3D.draw_handler_add(
TextRenderer.render_text,
(), 'WINDOW', 'POST_PIXEL')
#Désenregistrer la fonction de dessin dans la zone "View3D"
@staticmethod
def handle_remove():
if TextRenderer.__handle is not None:
bpy.types.SpaceView3D.draw_handler_remove(
TextRenderer.__handle, 'WINDOW')
TextRenderer.__handle = None
#Dessin du corps de la fonction dans la zone "View3D"
@staticmethod
def render_text():
#Dessiner la chaîne "Suzanne sur votre région View3D"
blf.size(0, 20, 72) #Spécifiez la taille de la police
blf.position(0, 20, 150, 0) #Spécifier la position du dessin
blf.draw(0, "Suzanne on your View3D region") #Dessiner une chaîne
#Traitement au moment de l'installation du script
def register():
bpy.utils.register_module(__name__)
TextRenderer.handle_add()
#Traitement lors de la désinstallation du script
def unregister():
bpy.utils.unregister_module(__name__)
TextRenderer.handle_remove()
if __name__ == "__main__":
register()
L'explication de base du script Blender est présentée dans l'article suivant, nous nous concentrerons donc ici sur l'explication des éléments nouvellement ajoutés. [\ Blender ] Comment créer un plug-in Blender
Pour utiliser l'API de dessin de texte fournie par Blender, vous devez importer le module
blf```.
import blf
L'article suivant explique comment enregistrer / désinscrire une fonction pour le dessin dans la zone "View3D", veuillez donc vous y référer. Utilisez OpenGL depuis le script [Blender]
Dans le corps de la fonction qui dessine dans "View3D", la chaîne de caractères est dessinée à l'aide du module
blf```.
Tout d'abord, la fonction blf.size () '' est appelée pour spécifier la taille de police à dessiner. Spécifiez ** taille de police ** dans le deuxième argument et ** dpi ** dans le troisième argument. Le premier argument est utilisé lorsque vous chargez votre propre police en utilisant le module
`` blf```, mais spécifiez 0 lorsque vous utilisez la police standard de Blender.
Appelez ensuite la fonction blf.position () '' pour spécifier où dessiner la chaîne. Le premier argument est le même que le premier argument de la fonction
`` blf.size () ''.
Dans le 2ème au 4ème arguments, spécifiez ** la position pour dessiner la chaîne de caractères ** (dans l'ordre coordonnée x, coordonnée y, coordonnée z).
Enfin, la fonction blf.draw () '' est utilisée pour dessiner la chaîne de caractères. Spécifiez ** la chaîne de caractères que vous souhaitez dessiner ** dans le deuxième argument. Le premier argument est le même que le premier argument de la fonction
`` blf.size () ''.
#Dessin du corps de la fonction dans la zone "View3D"
@staticmethod
def render_text():
#Dessiner la chaîne "Suzanne sur votre région View3D"
blf.size(0, 20, 72) #Spécifiez la taille de la police
blf.position(0, 20, 150, 0) #Spécifier la position du dessin
blf.draw(0, "Suzanne on your View3D region") #Dessiner une chaîne
blf
Le module fournit également diverses API utiles.
blf
Vous pouvez consulter le document api fourni par le module à partir de l'url suivante.
Si vous souhaitez connaître d'autres API, veuillez vous y référer.
http://www.blender.org/api/blender_python_api_2_60_6/blf.html
Recommended Posts