Superpoderes de scripting Python de Blender 2.8 para no Programadores

¡Crear renderizados, juegos y animaciones en 3d siempre es increíblemente emocionante! Bueno, excepto cuando se pone difícil o tedioso. Si ha estado usando Blender o cualquier otra aplicación 3D durante un tiempo, se ha encontrado trabajando en las mismas tareas una y otra vez y en algún momento pensando: «Realmente desearía que Blender hiciera esto por mí».

A través de scripts, ¡puede! No solo eso, Python puede crear nuevas funciones divertidas que ni siquiera son posibles haciendo clic en la interfaz.

Si eres como yo y no has recibido formación en informática, la programación puede parecer una palabra de cuatro letras, excepto con once letras (¡2,75 veces más mala!). Es como un lenguaje secreto que solo conocen las personas inteligentes, que probablemente también siempre leen los datos nutricionales, construyen motores de cohetes para divertirse o tienen un doctorado en algún tipo de matemáticas que ni siquiera usa números.

Afortunadamente, ese no es el caso en absoluto. La verdad es que si puedes usar Ctrl+C y Ctrl+V para copiar y pegar, puedes empezar a crear tus propios scripts Python de Blender de inmediato.

Acostúmbrate a Ver el Código

Terapia de exposición. Desensibilización progresiva. Llámelo como quiera, pero la mejor manera de normalizar algo que parece extraño al principio es verlo con la frecuencia suficiente en el contexto correcto.

Cada acción que realice en la interfaz de Blender se ejecuta a través de comandos de Python. Puede comprobarlo usted mismo cambiando su línea de tiempo al Editor de información y viendo lo que escupe cuando realiza su trabajo normal.

El editor de información puede ser un poco un poco de firehose, pero hay algo en las líneas de comandos que podría ser una herejía de programación, pero me tranquiliza al comenzar, la mayoría de lo que ves está ahí en caso de que lo necesites y el 98% de las veces no lo necesitarás. Así que cuando haces algo simple como mover el cubo y te da dos o tres líneas completas de código, puedes ignorar la mayor parte. La parte importante está justo al principio:

bpy.ops.transform.translate(value = (0.5, 0, 0))

Ya sabes que el nombre para mover algo se llama ‘traducir’, por lo que los valores que vienen después de eso son cuánto has traducido tu objeto en los ejes X, Y y Z respectivamente. Todo antes de «traducir» es donde se encuentra ese comando en el código de Blender. Es como si Blender fuera un menú gigante anidado y seleccionara Blender Python – > Operaciones – > Transformar – > Traducir.

Hay nueve secciones principales de Blender Python (bpy). No es necesario memorizarlos, pero reconocer algunos de ellos puede ayudarlo a comprender cómo funciona Blender bajo el capó.

  • bpy.aplicación: Información sobre Blender en sí que no cambia mientras se ejecuta.
  • bpy.listas de solo lectura contextuales de lo que está activo actualmente en Blender.
  • bpy.datos: Todos los datos internos de Blender, como los objetos.
  • bpy.msgbus-Significa «bus de mensajes», y se usa para notificar a Blender de ciertos cambios. No es algo de lo que debamos preocuparnos.
  • bpy.operaciones: Todas las operaciones que puede realizar en Blender, desde el modelado hasta la adición de archivos y el renderizado.
  • bpy.path-Funciones que se ocupan de rutas de acceso de archivos.
  • bpy.accesorios: Las diferentes propiedades que usa Blender. Usarías esto para decirle a Blender si una entrada debe ser un número o un color.
  • bpy.tipos: Todo tipo de cosas que existen en Blender, desde modificadores hasta texturas, lámparas y mucho más.
  • bpy.utils-Funciones de utilidad que son solo para Blender, pero no se ocupan de los datos internos.

Si tiene curiosidad, aquí está la documentación de la API para Blender 2.8 y para todas las versiones anteriores.

Mientras trabaja, acostúmbrese a ver dónde se pueden encontrar sus herramientas favoritas en el código. No es necesario que lo entiendas todo en este momento, ¡solo acostúmbrate a lo que parece!

La consola Python de Power

Una vez que esté listo para el siguiente paso, diríjase a la pestaña Espacio de trabajo de Scripting. Encontrarás el ahora familiar editor de información en la parte inferior izquierda. Justo encima de eso está la consola de Python, que es donde puede pegar comandos y hacer que las cosas sucedan. Pruebe esto: seleccione una línea en el Editor de información, presione Ctrl+C para copiar y, a continuación, use Ctrl+V para pegarla en la consola. Pulsa enter y verás que exactamente la misma acción vuelve a ocurrir.

Ahora prueba esto: rotar, escalar y mover algo, o hacer otras tres acciones seguidas. Copie los tres desde el editor de información y péguelos en la Consola. ¡Ahora hiciste tres cosas a la vez! No hay límite para esto, así que podrías hacer cientos de cosas a la vez de esta manera si quisieras. Incluso si no profundizas en la codificación, este es un gran truco para guardar en tu bolsillo trasero.

Guardar comandos con el Editor de texto

Buscar un montón de comandos y copiar / pegar todo el tiempo es bastante tedioso si lo haces mucho. Ahorrémonos un poco de tiempo y hagamos que nuestra multitarea sea aún más eficiente utilizando el Editor de texto de Blender.

Cree un nuevo archivo de texto y copie y pegue tres o más acciones diferentes del editor de información en el editor de texto. Empezaré añadiendo un cubo:

bpy.ops.mesh.primitive_cube_add(size=2, view_align=False, enter_editmode=False, location=(0, 0, 0))

Luego giraré el cubo a lo largo del eje Z:

bpy.ops.transform.rotate(value=-0.261911, orient_axis='Z', orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', constraint_axis=(False, False, True), mirror=True, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1)

¡Vaya, eso es mucho código para algo tan simple! Si no le molesta, quédeselo. Sin embargo, si lo encuentras intimidante, intenta eliminar todo excepto el valor y el eje orientado para que se lea más fácilmente. El resto simplemente asumirá valores predeterminados.

bpy.ops.transform.rotate(value=-0.261911, orient_axis='Z')

Por último, vamos a añadir un modificador de bisel:

bpy.ops.object.modifier_add(type='BEVEL')

La única cosa adicional que tendrá que hacer para que el script se ejecute es escribir:

import.bpy

En la parte superior del archivo, para que pueda leer Blender Python. También es útil activar los tres botones para números de línea, ajuste de línea y resaltado de sintaxis en el encabezado del Editor de texto.

¡Ahí tienes, ahora tienes un guión! Ahora puede hacer tres cosas muy importantes a la vez haciendo clic en Ejecutar Script en el encabezado del Editor de texto. Si desea guardarlo para más adelante o usarlo en un archivo diferente, vaya a Texto -> Guardar como y guárdelo como un archivo Python .py.

Si probó comandos diferentes a los que hice yo y su script no funciona como se esperaba, es probable que se deba al contexto: qué objeto está seleccionado o qué editor está activo. Puede seleccionar o deseleccionar objetos en Blender 2.8 estableciendo su propiedad selection en True o False:

bpy.data.objects.select_set(state=True)

Autocompletar todos los granizos

Algunos comandos que Blender tiene solo se pueden hacer a través de código y no se encuentran en la interfaz. Además, otras cosas que sí cambian en la interfaz (como borrar la línea de tiempo) no siempre te dan algo en el Editor de información que puedas copiar y pegar.

Siempre puedes usar Google o los documentos de la API de Blender para ayudarte a encontrar el comando correcto para hacer lo que necesitas, pero a menudo es más fácil encontrarlo usando autocompletar. Si empiezas a escribir una dirección en la consola de Python, puedes pulsar Ctrl+Espacio y Blender te mostrará todas las formas disponibles de completar lo que has escrito. Es una excelente manera de navegar por el código base y descubrir nuevas características.

El Editor de texto también tiene una función de autocompletar Ctrl + Espacio, pero no funciona de la misma manera y generalmente no es tan útil. Si es algo que usarías a menudo, te recomiendo que tomes el complemento de Autocompletar código de Jacques Lucke, que te permitirá trabajar mucho más rápido.

Plantillas fabulosas

Si desea convertir su script en un complemento adecuado al que se pueda acceder a través de un botón en la interfaz o un menú, las plantillas integradas de Blender son un excelente lugar para comenzar. Puede haber mucho que recordar cuando se trata de cómo proporcionar la información que se ve en las Preferencias del usuario o cómo registrar el complemento para que se muestre correctamente, por lo que las plantillas son una gran cosa para consultar (o copiar y pegar) si se atasca.

Realmente aprendiendo Python

Si has disfrutado creando tus propios scripts pero te sientes un poco decepcionado por su falta de poder (¡Hice algunas grandes promesas al principio!), entonces es el momento de aprender más sobre Python y la programación en general. Conceptos como variables, bucles y funciones son esenciales para hacer algo realmente nuevo o poderoso. Un poco de conocimiento puede recorrer un largo camino aquí, por lo que realmente vale la pena el esfuerzo adicional. Recomendaría profundizar en Python en uno de los siguientes sitios. No estamos afiliados de ninguna manera, solo hacen un buen trabajo.

  • Team Treehouse
  • Code Academy
  • Data Camp
  • Learn Python

¡Envía ayuda!

Inevitablemente, te quedarás atascado en medio de la construcción de tus propios scripts y complementos. ¡Nos pasa a los mejores! Estos son los lugares a los que puedes ir para hacer preguntas sobre la codificación en Blender:

  • Blender StackExchange
  • Blender DevTalk

También puede obtener más información viendo estos cursos en CG Cookie:

  • Introducción a la creación de scripts en Python en Blender
  • Creación de scripts con funciones de Manejador de Python en Blender
  • Creación de scripts de una interfaz de usuario de Plataforma personalizada en Blender