Modo Scripting
Editor de texto
Tenemos el editor de texto y solo se puede escribir presionando "Nuevo", entonces podemos escribir código y ejecutarlo. Para aumentar el tamaño simplemente presionamos Ctrl y le damos a la rueda del ratón
Consola Phyton
Sirve para incluir comandos de manera directa
Ventana de información
En esta ventana aparece cualquier cosa que hagamos a nuestros modelos 3d. Si movemos el cubo veremos como aparece un comando que podemos seleccionar. También aparecerá un comando si borramso el bojetos, creamos uno nuevo, escalamos, rotamos, etc.
Si presionamos el tabulador 2 veces podemos abrir las opciones
Consola BlenderPara abrir la consola Blender debemos ir a ventana y seleccionar la consola de sistema
En esta consola se ejecuta todo lo que ejecutemos desde el editor de texto y también se verá reflejado en la escena 3d
Por ejemplo si agregamos un cubo en la ventana de información nos aparece un comando que podemos traspasar al editor de texto
Import bpy. Antes de todo debemos importar la librería bpy que es la librería de blender en phyton. Las librerías son algo similar a los addon o plug in que lo que hacen es aumentar la capacidad del funcionamiento de los códigos
Ahora podemos ejecutar ese código para poder agregar un cubo pero podemos achicar el código dejándolo de la siguiente forma.
Bucle For
For significa "para", lo que viene seguidamente de un valor que vamos a usar como una variable con nombre arbitrario, en un rango ("in range")
Si creamos un "bucle for" con la variable EJE_X en un rango de 0 a 5 podemos hacer la acción de agregar un cubo varias veces usando el mismo comando para agregar el cubo pero se debe hacer debajo del comando for con un espacio para que "tabule" ya que los bucles van vinculados a las tabulaciones.
En el parentesis debemos reemplazar el primer cero que corresponde al eje x por la variable que pusimos en el "for" que es el EJE_X y le agregamos.
Lo que hace es duplicar el cubo 5 veces de
Si vemos en la posición de transformación veremos como la posición
se duplicó de uno en uno (1m)
Pero que pasa si esa variable la duplicamos por 3? Lo que hará es que cada valor pasará a multiplicarse, pasaría de (0,1,2,3,4) a (0,3,6,9,12)
Luego para agregar las duplicaciones en los otros ejes simplemente agregamos esos bucles for con sus variasbles
Módulos de la aplicación
La api de Blender se compone de 3 módulos principales:
- Modulo de la aplicación: Cualquier acción que realicemos en Blender, agregar, eliminar objetos, editar, etc. Solo está sucediendo gracias a este modulo
- Modulo independiente
- Motor de juego: (que fue eliminado en la 2.80)
Manual de programación en Blender
Si vamos a los módulos de aplicación podemos encontrar context, data, type y operadores que son los más importantes
Context
El bpy.context son todas estas zonas
Si usamos bpy.context.select_objects y ejecutamos nos señalará cuál es el bojeto seleccionado, en este caso el cubo
Si usamos el bpy.context.scene y ejecutamos nos dará la escena actual
Si cremoa una nueva escena y nos posicionamos en ella y ejecutamos bpy.context.scene nos mostrará la escena actual. Eso quiere decir que funcioan tal y como dice su palabra, en el contexto
Data
Si usamos el bpy.data.objects podemos obtener el numero de objetos que total en el actual archivo .blend que en este caso son 4, y si metemos este código dentro de una función llamada list obtendremos el listado de objetos independiente de en que escena se encuentren
Si usamos el bpy.data.scene
Types
Todo lo que usamos en Blender, objetos, materiales, fotogramas, etc. está definido en types. Si usamos el bpy.types con Scene u Objects (siempre con mayuscula) simplemente nos ejecuta la clase y al tipo que corresponde
Si dentro de type usamos el context.selected_objects podemos definir el tipo del objeto seleccionado. Si tenemos 3 bojetos seleccionados y ysamos el corchete podemos definir el número del objeto por el index
Operadores
Cada botón, clic, eventos del mouse, pulsaciones de teclas está llamando a un operador. Si eliminamos o agregamos un objeto, creamos una nueva escena, cambiamos de una escena a otra, etc. Cualquier cosa que realice una operación puede llamarse operador.
En la documentación de la Phyton Api si vamos a Operadores podemos ver una serie de submodulos. Éstos son los operadores
Si entramos a Mesh operators y presionamos Ctrl+F podemos buscar lo que necesitamos como por ejemplo "cube". Aquí podemos ver la función con todos los argumentos
Los ops funcionan sobre lo seleccionados.
El ops.mesh funciona sobre objeto seleccionado en modo edición
Si hago la misma operación bpy.ops.mesh.subdivide() teniendo el objeto en modo objeto generará un error

Solo podemos operar en modo objeto con "object"
Con los modificadores es distinto. Si tenemos varios objetos seleccionados solo podemos aplicarlo al objeto activo, que es el último objeto seleccionado

Operadores personalizados- Lo primero que necesitamos hacer es definir la operación que queremos ejecutar cada vez que se llama a este operador
- Luego debemos calificar el conjunto de tareas y acciones como un operador. En este caso usamos el ops
- Debemos registrarnos como un operador en el módulo bpi.ops. Primero colocar las 3 operaciones dentro de la función DEF excecute que se utiliza para ejecutar y necesitamos pasar auto y contexto (self, context). Finalizando la función usamos el return {'FINISHED'}
- Luego debemos pasar esta función a una clase con un nombre creado por nosotros. La llamaremos MiOperador
También daremos el nombre al Operador para poder llamarlo y a la etiqueta.
Finalmente registramos la clase usando utils.register_class()
import bpy
# Task 1: create cubo
# Task 3: Apply wareframe modifier
# Task 3: Rotate cube along z axis
class MyOperator(bpy.types.Operator):
bl_idname = "mesh.micuboperator"
bl_label = "My Operator"
def execute(self, context):
bpy.ops.mesh.primitive_cube_add()
bpy.ops.object.modifier_add(type='WIREFRAME')
bpy.context.selected_objects[0].rotation_euler.z +=10
return {"FINISHED"}
bpy.utils.register_class(MyOperator)
Para llamar al operador primeramente lo ejecutamos desde el scripting y luego en la consola phyton lo llamamos con el nombre que hemos creado
Ejemplos de librerías
Librería random
Para usar la opción random usamos random.random
Ejemplo
1. Importamos la librería random con "from random import*"
2. Tenemos una variable que se llama obs que le vamos a dar el valor de "todos los objetos seleccionados"
3. Luego vamos a crear un bucle for en esa variable cambiando la posición en z con valor random
Matemáticas
1. Para importar matemáticas se usa la librería math
y puedes comenzar a utilizar símbolos matemáticos como pi
...radians, etc.