[go: up one dir, main page]

0% encontró este documento útil (0 votos)
90 vistas343 páginas

Programacion de Scripts para Animacion en Blender

Programe scripst en python
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
90 vistas343 páginas

Programacion de Scripts para Animacion en Blender

Programe scripst en python
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 343

Programación de

scripts para
animación
en Blender
David Esteban Zuluaga Ramírez

Programación de scripts para animación en Blender 1


CONTENIDO
Pág.
Capítulo 1: Aspectos de animación 5
Capítulo 2: Aspectos de la API 27
Capítulo 3:Produccion 3D 50
Capítulo 4: Manejo del software 76
Capítulo 5: Scripts 119
Capítulo 6:Transformaciones 157
Capítulo 7: Rig 201
Capítulo 8: Tableros de control 241
Capítulo 9: Proyecto Onion Skinning 280
Capítulo 10:Material extra 308

Programación de scripts para animación en Blender 2


Para qué esta guía
Esta guía es un curso básico de introducción al aprendizaje, para
escribir scripts en Python con el objetivo de crear addons de
herramientas para animación, por ello se trabajan diversas temáticas
para que el estudiante pueda adquirir las bases sobre la creación de este
tipo de herramientas. Es por esto que es necesario también entender
conceptos que son propios de las producciones animadas como lo son el
modelado, rig, animación, entre otros, puesto que el libro no solo
pretende sembrar las bases para realizar aplicaciones, sino despertar
curiosidad a la hora de combinar la lógica y los elementos artísticos que
encierran la creación de producción audiovisual. También es
importante, puesto que la idea de los ejercicios, ejemplos y
cuestionarios tratan siempre de retar al estudiante a valorar su
profesión, sus conocimientos y habilidades y a darse cuenta que no se
puede hacer lo que no se conoce, que el software es una herramienta y
que requiere de investigación, para llevar a cabo los procesos de una
manera eficiente y creíble.
Los diversos ejercicios y capítulos abordan desde las etapas de una
producción animada, pasando por el manejo necesario de la
herramienta, llegando a tocar el lenguaje de programación Python y
comenzando a combinar todos estos conceptos en los capítulos para que
el estudiante pueda ir asimilando gradualmente los temas y practicando
lo aprendido.

Todas las imágenes usadas para los ejemplos y ejercicios son


producción del autor, a excepción de las imágenes y elementos citados
en las referencias. También se elaboraron dos personajes, una jarra y
una silla cartoon, que pueden usarse con libertad para seguir
practicando y que son insumos para elaborar los ejercicios.
Que se diviertan combinando la lógica y el arte para crear hasta donde
la imaginación les alcance.
Programación de scripts para animación en Blender 3
Sobre el autor
Mi nombre es David Esteban Zuluaga Ramírez; soy animador de
personajes en 3D, y he trabajado en producciones 2D y 3D en cortos
animados y en videojuegos. Llevo en esta tarea más de seis años,
realizando animaciones para diferentes empresas y como freelance,
también he tenido la oportunidad de enseñar en el Diplomado
Animadelab, como profesor de las materias Fundamentos de Animación
y Animación 3D en Blender. Además he asesorado diversos proyectos
de animación 3D y he creado mis propias historias y personajes, para lo
cual he tomado estudios de música, dibujo, actuación, creación de
historias. Desde luego he tenido la oportunidad de tener grandes
mentores profesionales de la industria, que han compartido conmigo sus
conocimientos y experiencias en animación.
He utilizado entre otras, herramientas como Flash, Animate, After
effects, Toom boom, Blender, 3ds Max, Maya.
Considero que la animación, no es una herramienta ni un trabajo, sino
que es parte de la vida, de lo que observamos, de lo que vivimos y lo
que compartimos, siempre basándonos en la creación perfecta de Dios,
para crear la ilusión de la vida.

Programación de scripts para animación en Blender 4


1
Capítulo
Aspectos
de animación

En este capítulo se verá el contexto histórico de la


animación, los fundamentos teóricos acerca de la misma
y los ámbitos de aplicación de la animación y algunos
ejemplos y producciones en el programa Blender.

Programación de scripts para animación en Blender 5


Aspectos de animación
Contexto Histórico
Desde los principios, el hombre ha intentado capturar el
movimiento a través de imágenes y pinturas; diversos
pueblos a través de los años lo han hecho como una
forma de mantener con vida sus civilizaciones y culturas.
Al cabo de los años el conocimiento y la ciencia ha ido
en aumento y mentes inquietas han observado y
estudiado como nuestra vista percibe el movimiento
llegando a descubrir y a formular el principio de la
percepción visual; este principio, descubierto por Peter
Mark Roget, secretario de la Real Sociedad en Londres
en 1824, se refiere a que el ojo retiene una imagen que ve
durante el tiempo suficiente para ser sustituida por otra, y
así sucesivamente hasta lograr un movimiento completo.
fuente: educomunicacion.es, recuperado de http://educomunicacion.es/cineyeducacion/
cineprecine.htm
A raíz de esto, empezaron a surgir varios experimentos
que iniciaron como juguetes en los cuales se podía ver el
fenómeno de la imagen en movimiento. El mismo año, el
Dr John Ayrton París puso a la venta el primer juguete
óptico que explotaba la persistencia de la imagen sobre la
retina. fuente:educomunicacion.es, recuperado de http://educomunicacion.es/
cineyeducacion/cineprecine.htm

Programación de scripts para animación en Blender 6


Aspectos de animación
Contexto Histórico
En 1828, el belga Joseph Plateau concluyo que las
imágenes sucedidas a mas de diez por segundo producen
la sensación de movimiento y creó un instrumento capaz
de crear verdadera impresión de movimiento.
En 1877, el francés Emyle Reynaud, logró mayor
flexibilidad en el movimiento con un nuevo instrumento
con el que produjo películas animadas dotadas de
argumento que acompañaba de música y efectos de
sonido. Con ello mantuvo un espectáculo publico desde
1892 hasta finales del siglo XIX en el que usaba las bases
de la animación moderna.
El nacimiento del cine de animación se produjo en 1905,
diez años después del nacimiento oficial del cine y la
primera animación se considera El Hotel Eléctrico del
español Segundo de Chomon, aunque la historia oficial
dice que el honor corresponde a La Casa Encantada del
ingles James Stuart Blackton. fuente:educomunicacion.es, recuperado de
http://educomunicacion.es/cineyeducacion/cineprecine.htm

Programación de scripts para animación en Blender 7


Aspectos de animación
Contexto Histórico
Considerado pionero de los dibujos animados, tenemos a
Winsor MCay, quien empieza a experimentar, atraído por
la cinematografía, proyectando los dibujos y contando
historias. En uno de sus filmes consolidó su técnica de
animar los movimientos intermedios entre dos posiciones
extremas. Más adelante, John Randolph Bray creó la
técnica de acetatos trasparentes superpuestos, que
revolucionó la realización de dibujos animados y que se
ha mantenido hasta la era de la informática. Podemos
notar que todo lo anterior, se basaba en la
experimentación, en el ensayo y error, hasta que Walt
Disney con Mickey Mouse diseñado por Ub Iwerks,
inició el desarrollo de una de las mejores épocas del cine
de animación.
Lo que caracterizaba este proceso de producción, era la
ardua investigación para dar vida a los personajes, lo que
permitió el invento de la cámara multiplano, con la que
se logró dar más realismo a la producción de los dibujos
animados.
Programación de scripts para animación en Blender 8
Aspectos de animación
Contexto Histórico
Esta permitió obtener una profundidad de campo
impensable en la animación de la época. La constante
investigación del equipo de Disney permitió la
comprensión de las nuevas posibilidades de los dibujos
animados e introducen en sus películas una banda sonora
repleta de música y efectos sonoros. Fuente: www.thecult.es,
recuperado de http://www.thecult.es/Cine-clasico/historia-del-cine-de-animacion/Walt-Disney-
y-los-hermanos-Fleischer.html

Disney marcaría la forma de realizar producciones


animadas con su hito “Blancanieves y los siete enanitos”,
primer largometraje que mostró que los dibujos animados
podían competir con cualquier obra cinematográfica. Con
ella se logró contar una historia, con el cuidado que exige
una pieza de arte; se analizó en detalle la viabilidad de la
historia y luego los artistas y todo el equipo iban pasando
por una serie de etapas donde se daba forma cada vez
más a la idea, hasta iniciar el proceso de elaboración, en
la que los animadores estudiaban el comportamiento
humano con el fin de dar el realismo adecuado.

Programación de scripts para animación en Blender 9


Aspectos de animación
Contexto Histórico
Fue en estos estudios, ensayos, toma de clase con actores
reales, experimentar por ellos mismos el movimiento,
que se empezaron a colocar nombre a los fenómenos
físicos y crear pautas para crear animación realista. De
allí nacen los principios de la animación que aún hoy son
las bases para crear la ilusión de la vida.
En el capítulo 3 se habla de cada una de las etapas del
proceso de producción 3D. Hay muchos procesos en la
animación tradicional que aún se llevan a cabo y otros
que son exclusivamente del 3D.

Programación de scripts para animación en Blender 10


Aspectos de animación
Fundamentos
Ahora se hablara de uno de los procesos dentro de la
etapa de producción que es la animación, pues es
relevante para comprender como se comporta la
animación en 3D y crear soluciones que automatizarán
varios de estos procesos. Lo primero es definir la
animación; ya hemos visto que inició como una serie de
imágenes en movimiento y que en Disney se
establecieron las bases y pautas para realizar animación
creíble. Al pensar en animación 3D, se entiende que se
trabaja con personajes con volumen y que están ubicados
en un espacio; piense en que se toma algo de la vida real
y se plasma usando plastilina o arcilla, con lo que puede
decirse que tenemos una representación en 3D.

Programación de scripts para animación en Blender 11


Aspectos de animación
Fundamentos
Analícese lo siguiente: se tiene un personaje humano
moldeado en plastilina y arcilla, se sabe que es rígido y
no se pueden articular sus partes, por lo que se requiere
crear una armadura, puede ser con alambre maleable y
colocarla dentro del personaje. Ahora ya no solo se puede
mover el personaje como una única pieza sino articularla;
es eso exactamente lo que ocurre en 3D, solo que el
modelador trabaja con figuras geométricas en la
computadora para darle forma al personaje y luego el
rigger se encarga de construir el esqueleto o alambre
maleable para que se pueda mover. Hay otro elemento
importante a tener en cuenta y es el centro de los objetos
en un espacio 3D, pues es desde allí donde se traslada,
rota o se escala el personaje.

Programación de scripts para animación en Blender 12


Aspectos de animación
Fundamentos
Analícese otra cosa: se desea aplastar una pelota, pero
no puede hacerse desde el centro porque parecería que
levita, por lo que debería ser desde la base, es decir, se
debe entender cómo se mueve todo en el mundo real,
para poder realizar la debida configuración. Piénsese en
que se tiene un personaje recortado con sus diferentes
partes, brazos y piernas, y se van a colocar todas estas
piezas en un icopor, como si se armara al personaje;
piénsese en que el personaje ya está armado y que con
una serie de chinches se desea colocar el punto o pivote
desde el cual se quiere que rote, por ejemplo la cabeza,
creo que no se colocaría en el centro, ¿o sí?.

Programación de scripts para animación en Blender 13


Aspectos de animación
Fundamentos
Porque si fuera así, el personaje perdería la cabeza. ¿Por
qué tantas cosas para llevar a cabo el proceso de la
animación?, porque se está pensando simplemente no en
hacer que algo se mueva, sino que parezca vivo y creíble
con el fin de contar una historia. También es importante
tener en cuenta el concepto de jerarquía, es decir, si el
torso es hijo de nuestro brazo, se esperaría que al girar el
torso, el brazo se moviera con el torso y no al contrario.
Estas serían las bases a tener en cuenta que se explicarán
con detalle más adelante, con el fin de que puedan
entender el concepto y automatizar el proceso. Luego de
tener claro esto, se tiene que mirar también que en
animación se trabaja a 24 fps (24 fotogramas por
segundo); piénsese en que se ha hecho un dibujo de una
pelota y luego se ha hecho otro donde sube 3 metros
hacia arriba; cada dibujo que se haga se va a llamar
fotograma, el primero es cuando la pelota está en el
suelo, el último donde la pelota está arriba, entonces
supongamos que necesite doce dibujos para hacer que
Programación de scripts para animación en Blender 14
Aspectos de animación
Fundamentos
parezca que la pelota subió 3 metros hacia arriba, es decir
12 fotogramas, que equivaldrían a medio segundo de
animación, es decir, 24 fotogramas equivalen a un
segundo de animación. Ahora bien, ¿cómo se hace para
construir los demás dibujos y que la escena parezca
creíble?; observando la realidad, lo primero que se va a
notar es que a medida que va subiendo, la pelota va
tomando velocidad, pero hay un punto en el cual empieza
a perder velocidad hasta llegar a los tres metros, y es
cuando la fuerza de gravedad atrae la pelota hacia el
suelo; el momento en que la pelota empieza a perder
fuerza, ese va a ser el breakdown o dibujo intermedio, y a
los dibujos realizados cuando la pelota está en el suelo y
llega a su punto mas alto se llamaran keyframes o
fotogramas clave; la diferencia entre el uno y el otro, es
que el primer dibujo y el último ayudan a definir el
movimiento que va a realizar la pelota de un punto A a un
punto B, y el breakdown o intermedio es el dibujo que va
ayudar a crear una transición creíble entre el punto A y B.

Programación de scripts para animación en Blender 15


Aspectos de animación
Fundamentos
Quiere decir, que si se quisiera hacer los dibujos de
cuando la pelota cae de la altura de los tres metros, se va
a tener que hacer nuevamente otro dibujo clave que es
cuando la pelota toca el suelo, y realizar un breakdown
que ayude a definir la transición entre el dibujo de la
pelota cuando está a la altura de tres metros y cuando cae
al suelo, y el momento preciso para realizar esto es
cuando la pelota ha empezado a caer por la fuerza de
gravedad y es obligada a caer al suelo. Esto solo sería, si
se trasladara una pelota, sin modificar la rotación y la
escala en los impactos cuando toca el suelo. ¿Imagínense
cuántos dibujos se necesitarían y cuanta memoria hace
falta para recordar todo esto? Para poder saber como ver
dos dibujos extremos al mismo tiempo, los animadores
usaban una técnica llamada onion skinning, que consiste
en usar una mesa con tapa de acrílico con una luz por
debajo, donde se ubicaban una serie de papeles
perforados que encajaban en unos pernos de la mesa,
para que estos no se movieran al dibujar sobre ellos.
Programación de scripts para animación en Blender 16
Aspectos de animación
Fundamentos
Esta mesa le permitía ver al animador los keyframes que
previamente había dibujado y poder analizar teniendo
como apoyo esto, para hacer los breakdown.
Entonces las bases o fundamentos de la animación
establecen que en la animación se va a mover algo, ya
sea que se traslade, rote o escale; que hay un centro y
dependiendo donde se coloque este centro, a partir de allí
el elemento puede trasladarse, rotar o escalarse. Otro
aspecto, las jerarquías, determinan que siempre hay un
elemento que es padre y está emparentado con una o
varias partes que lo siguen o sea sus hijos, y que si se
quiere mover un objeto rígido debe usarse una armadura
y configurarla para poder mover sus diferentes partes.
De otra parte, los frames o fotogramas son los dibujos
necesarios que conforman la animación y los fotogramas
clave son los dibujos principales de la misma. El break
down corresponde a las transiciones entre un dibujo
principal a otro.

Programación de scripts para animación en Blender 17


Aspectos de animación
Fundamentos
Para facilitar el trabajo a la hora de realizar la animación
existe la técnica de onion skinning que le permite al
animador ver los dibujos principales para construir los
breakdown.

En la animación tradicional se usa un método llamado


onion skin, que procede de una técnica de animación
tradicional que consiste en utilizar papel de calcar fino y
translúcido para visualizar secuencias animadas.
Fuente: http://aprendeenlinea.udea.edu.co, recuperado de

http://aprendeenlinea.udea.edu.co/lms/ova/mod/resource/view.php?id=1577

Así como se menciona en este texto de la Universidad de


Antioquia, el onion skin era una técnica tradicional y
actualmente los softwares de animación 2D permiten
usar esta herramienta para animar.

Programación de scripts para animación en Blender 18


Aspectos de animación
Ámbitos
La animación es fundamental en la actualidad en diversos
ámbitos. Para el caso se pueden tomar varios ejemplos en
los cuales sería imprescindible el uso de la animación, tal
es el caso de la educación. Los docentes de Ciencias
Naturales, pueden hacer uso de la misma para mostrar el
corte interno de la célula o la disección de un insecto o
un animal. Anteriormente lo que se hacía era tomar el
insecto o animal, una rana por ejemplo y realizar la
disección. Hoy día los docentes hacen uso de
aplicaciones interactivas que muestran modelos 3D, en
los que se presenta el proceso de disección que puede
observarse desde diversas perspectivas.
Igualmente en Ciencias Sociales, los docentes pueden
mostrar a los estudiantes, la ubicación y las
características de una ciudad o municipio determinados,
con el uso de animaciones previamente elaboradas.
Fuente: https://education.smarttech.com, recuperado de

https://education.smarttech.com/es-es/products/smart-board-800

Programación de scripts para animación en Blender 19


Aspectos de animación
Ámbitos
Por tal razón la educación es uno de los ámbitos de
aplicación de la animación y precisamente en esta es
fundamental la motivación para la formación
permanente, que se logra con la proyección de
cortometrajes animados. Uno de ellos es “Donald en el
país de las Matemáticas”, que muestra a los alumnos la
importancia de esta área en diversos aspectos como la
música, el deporte, el arte y la ciencia. Primer ciclo de
cine y Matemáticas de Gran Canaria (http://
www.sinewton.org/web/images/Varios/donald.pdf)
En otras áreas como la medicina, la animación ha
permitido mostrar de qué manera puede efectuarse una
cirugía específica, de tal manera que podamos observar
el proceso paso a paso y algunas empresas se dedican a
elaborar animaciones para dar cobertura a la comunidad
médica y científica.
Fuente: http://www.pixeldreams.info,recuperado de www.pixeldreams.info/medicina-3d-
Barcelona-Anatom%C3%ADa-en-3d-0-23

Programación de scripts para animación en Blender 20


Aspectos de animación
Ámbitos
Con el auge de la tecnología, cada día más presente en
numerosos dispositivos, se presenta la oportunidad para
hacer partícipes a los estudiantes y brindarles la
oportunidad de explorar su capacidad creativa, mediante
la animación, que pone en juego la imaginación de
quienes desean moverse en el campo del diseño, el arte y
la animación digital.
Fuente: https://www.theflippedclassroom.es, recuperado de https://
www.theflippedclassroom.es/el-arte-de-la-video-animacion/

Programación de scripts para animación en Blender 21


Aspectos de animación
Ámbitos
A partir de este momento, se dedicara este espacio a
observar los ámbitos de aplicación de scripts en la
animación 3D. Para el efecto, se debe definir ante todo
qué es un script. Este término viene de una palabra
inglesa que significa “Guión”, como el de cine o teatro.
Se tiene entonces que un script, es un conjunto de
órdenes guardadas en un archivo de texto, generalmente
muy ligero y que es ejecutado por lotes o línea a línea,
en tiempo real por un intérprete.
Los scripts son pequeños programas que no son
compilados, es decir, por lo general necesitan de un
programa lector o intérprete que codifique la
información del script y lo lleve a lenguaje de máquina,
para que la información sea procesada y ejecutada por
el ordenador.
Fuente: http://culturacion.com/, recuperado de http://culturacion.com/que-son-los-scripts

Estos programas soportan otras herramientas y facilitan


las tareas en una producción, por lo que su importancia
radica en que permiten facilitar el trabajo a la hora de
realizar animaciones.

Programación de scripts para animación en Blender 22


Aspectos de animación
Ámbitos
Los scripts permiten automatizar procesos para que el
animador pueda optimizar su trabajo, lo que implica
ganancia de tiempo para el desarrollo de la producción,
en otras palabras, existen una serie de pasos repetitivos
que se pueden automatizar a través de scripts a la hora
de realizar animaciones.

Un ejemplo: si se deseara construir un árbol, se


elaboraría un script generador de árboles; hecho lo
anterior, Blender ya tiene todo lo necesario para
construir el árbol, por tanto, se puede crear la geometría
y deformarla para construir el árbol deseado.
Lo que está permitiendo este script es que pueda
automatizarse el proceso manual de modelar el árbol,
facilitando el trabajo y ahorrando tiempo a la hora de
construirlo, aprovechando lo que está entregando este
script, es decir, las opciones para personalizar un árbol
genérico y configurarlo hasta lograr el árbol
determinado.

En las siguientes producciones se utilizaron scripts para

Programación de scripts para animación en Blender 23


Aspectos de animación
Ámbitos
optimizar el proceso de animación:

Sintel es un cortometraje de producción independiente,


iniciado por Blender Foundation como un medio para
mejorar y validar aún más la suite de creación 3D de
fuente libre / abierta Blender. Con el financiamiento
inicial proporcionado por miles de donaciones a través
de la comunidad de Internet, nuevamente ha
demostrado ser un modelo de desarrollo viable tanto
para la tecnología 3D abierta como para la película de
animación independiente.
Esta película de 15 minutos se ha realizado en el
estudio del Amsterdam Blender Institute, por un equipo
internacional de artistas y desarrolladores. Además, los
desarrolladores, artistas y equipos de todo el mundo han
realizado varios objetivos técnicos y creativos cruciales.
Los scripts fueron elaborados por Campbell, uno de los
desarrolladores más activos de Blender desde hace
muchos años, especializado en el trabajo de scripting de
Python.

Programación de scripts para animación en Blender 24


Aspectos de animación
Ámbitos
Blender se ha usado en otros proyectos
cinematográficos (fue utilizado en Spiderman II en la
fase de composición de escenas y estudio de
cinemática) y se vio reforzado por la creación
de Elephants Dream, la primera película del mundo
realizada bajo licencia de código abierto en la que todos
los ficheros empleados en su desarrollo pueden ser
descargados de la web oficial del proyecto.
Fuente: http://www.esi.uclm, recuperado de http://www.esi.uclm.es/www/cglez/
fundamentos3D/01.04.Aplicacion.html

Toni Alatalo manejó todos los aspectos técnicos de la


producción, desde el equipo en el estudio, hasta la
creación de redes y el almacenamiento de archivos, y la
escritura de scripts para administrar trabajos en la
granja de renderizado. Además de la administración de
sistemas, usó secuencias de comandos de Python dentro
de Blender para animar los cientos de cables en la
escena de la centralita, así como otras herramientas
útiles. (Oulu, Finlandia)
Fuente: https://orange.blender.org, recuperado de https://orange.blender.org/theteam/

Programación de scripts para animación en Blender 25


Aspectos de animación
Ámbitos
Con idéntica filosofía nació el proyecto Peach del que
surgió otra película libre titulada Big Buck Bunny,
cuyos ficheros son igualmente descargables de la web
oficial del proyecto.
Fuente: https://peach.blender.org, recuperado de https://peach.blender.org/the-team
En esta también fue Campbell el desarrollador de los
scripts para la película

En otros ámbitos de aplicación se destaca el desarrollo


de videojuegos, como Yo Frakie!, un videojuego libre
desarrollado empleando el motor de videojuegos
integrado de Blender y Crystal Space. Todos los
ficheros de desarrollo (incluyendo código fuente),
fueron igualmente elaborados por Barton Campbell,
quien desarrolló los scripts para el video juego.
Fuente: https://apricot.blender.org, recuperado de https://apricot.blender.org/team/

Programación de scripts para animación en Blender 26


2
Capítulo
Aspectos de
la API

En este capítulo se vera que es Blender, se hablara de la


Api de Blender con la que se va a desarrollar los scripts,
mas adelante, la estructura de la API y las líneas de
llamados usadas para realizar los scripts de este manual.

Programación de scripts para animación en Blender 27


Aspectos de la API
¿Que es Blender?
Blender es un software que permite realizar
producciones en 3D, es un software libre y es el
software en el que se va a trabajar en el curso.
Originalmente, el programa fue desarrollado como una
aplicación propia por el estudio de animación holandés
NeoGeo; el principal autor, Ton Roosendaal, fundó la
empresa "Not a Number Technologies" (NaN) en junio
de 1998 para desarrollar y distribuir el programa. La
compañía llegó a la bancarrota en 2002 y los acreedores
acordaron ofrecer Blender como un producto de código
abierto y gratuito bajo los términos de la GNU GPL a
cambio de 100.000 €. El 18 de julio de 2003,
Roosendaal creó sin ánimo de lucro la Fundación
Blender para recoger donaciones; el 7 de septiembre se
anuncia la recaudación como exitosa (participaron
también ex empleados de NaN) y el código fuente se
hizo público el 13 de octubre.
Fuente: http://wikilearning.com, recuperado de https://www.artedinamico.com/portal/sitio/
articulos_mo_comentarios.php?it=2042&categoria

Programación de scripts para animación en Blender 28


Aspectos de la API
¿Por que Blender?
Blender es software libre de código abierto y un punto
importante es que los requisitos para ejecutar el
software son mínimos. Otra ventaja es que Blender es
muy versátil; puede llevarse el ejecutable a cualquier
lado con una memoria y no tiene ninguna restricción a
la hora de elaborar herramientas nuevas para Blender.
La mayoría de los software de animación 3D son
costosos y pesados, mientras que Blender es muy
liviano y ofrece ayudas en cada uno de sus menús en la
interfaz de usuario de Blender, para saber cual es la
instrucción del código que esta usando, para realizar
determinada acción en el programa, lo que lo convierte
en el programa ideal para empezar a aprender
programación de scripts enfocados en animación 3D.
Hoy en día la mayoría de gente que se ha acercado al
mundo del software 3d conoce o ha oído sobre Blender.
Es un programa que por su condición de software libre
ofrece avances que el software privativo no se plantea a
la misma velocidad. Blender también sorprende por ser
igual o más estable que el software comercial.
Existen varias ventajas de Blender sobre los “gigantes”
Programación de scripts para animación en Blender 29
Aspectos de la API
¿Por que Blender?
del mercado; si se compara con 3dsmax, que permite
desarrollar el mismo tipo de contenido de alta calidad.
Blender es multiplataforma, pues existe una versión
nativa para cada uno de los principales sistemas
operativos. Windows, Mac OS y Linux. Funciona
excelente en las 3 plataformas y no dependes del
sistema.
Pesa poco: como se dijo antes, Blender es muy liviano
en contraposición a los “monstruosos” programas de
hoy en día. Además, con una conexión sencilla a
internet se tiene acceso a Blender.
La velocidad de desarrollo en Blender es mayor, pues
dada la condición de software tipo “opensource”
permite la implementación de nuevas tecnologías
rápidamente. Existe una comunidad internacional de
desarrolladores muy activa a nivel global, supervisada
por la Blenderfoundation, con lo que se favorece el
aporte de ideas novedosas de calidad.
Respuesta a los reportes de bugs y propuestas de
mejoras. Si se está en medio de una producción y se
encuentra un bug o error, la mayoría de las veces el
reporte es atendido e incluso solucionado en unas horas
Programación de scripts para animación en Blender 30
Aspectos de la API
¿Por que Blender?
durante el mismo día. También se tienen en cuenta las
propuestas de mejora y de hecho existen iniciativas
promovidas como esta para mejorar el interface que
surgen de la comunidad.
Programación en Blender con Phyton. A diferencia de
3dsmax, en Blender se puede usar el lenguaje estándar
Phyton para acceder a cualquier funcionalidad del
programa. Programar cualquier funcionalidad o plugin
(addon). Si eres programador o desarrollador con
phyton crear herramientas en Blender no se diferencia
tanto de hacerlo para Maya o XSI.
Blender es libre para uso comercial. Este último punto
se ha dejado para el final. Se arranca siempre como
principal ventaja que incita a probar Blender. Pero
realmente hay muchas otras que importan sin las que
este software sería inútil. El nivel de calidad profesional
es un punto que va a la par e indispensable.
Se puede descargar desde cualquier sitio Blender para
cualquier uso, sea educativo, una conferencia o un
proyecto comercial con fines lucrativos. Su licencia no
se ha de renovar con cada actualización y pagar por
ello.
Programación de scripts para animación en Blender 31
Aspectos de la API
¿Por que Blender?
En conclusión, existen ventajas de Blender sobre
3dsmax y otros software, específicas en la
funcionalidad de sus herramientas.
Fuente: http://www.digital-rebel.com, recuperado de http://www.digital-rebel.com/8-
ventajas-de-blender-frente-3dsmax-maya-o-xsi/

Programación de scripts para animación en Blender 32


Aspectos de la API
API de Blender
La Api de Blender se refiere a las instrucciones a las
que puede accederse para comunicarse con el programa
a través de lenguaje de programación Python 3.0, la Api
esta organizada a través de módulos de la siguiente
forma:
Application Modules: Son los módulos que permiten
acceder a las herramientas internas de Blender y a los
datos que estén dentro de la escena del espacio 3D.
También contiene las opciones inherente a Blender
para manipular y modificar los elementos dentro de la
escena de Blender.
Fuente:https://docs.blender.org/api/blender_python_api_current, recuperado de https://
docs.blender.org/api/blender_python_api_current

Programación de scripts para animación en Blender 33


Aspectos de la API
API de Blender
Dentro de los Application Modules están los siguientes
elementos:
Context Access
Data Access
Operators
Types
Utilites
Utilite submodule
Path utilites
Application Data
Aplication Handlers
Aplication_Translations
Porperty_definitions

Programación de scripts para animación en Blender 34


Aspectos de la API
API de Blender
Estándar Module: Son los módulos que permiten
acceder a las herramientas adicionales en Blender, para
realizar scripts de una composición, edición, creación y
exportación de los objetos 3D directamente en Python.
Además da la posibilidad de usar funciones
matemáticas.
Fuente: https://docs.blender.org/api/blender_python_api_current, recuperado de https://
docs.blender.org/api/blender_python_api_current

Programación de scripts para animación en Blender 35


Aspectos de la API
API de Blender
Dentro de los estándar Module están los siguientes
elementos:
Math Types & Utilities (mathutils)
Geometry Utilities (mathutils.geometry)
BVHTree Utilities (mathutils.bvhtree)
KDTree Utilities (mathutils.kdtree)
Interpolation Utilities (mathutils.interpolate)
Noise Utilities (mathutils.noise)
Freestyle Module (freestyle)
OpenGL Wrapper (bgl)
Font Drawing (blf)
GPU functions (gpu)
GPU Off-Screen Buffer (gpu.offscreen)

Programación de scripts para animación en Blender 36


Aspectos de la API
API de Blender
Y también estos otros:
Audio System (aud)

Extra Utilities (bpy_extras)


ID Property Access (idprop.types)
BMesh Module (bmesh)

Programación de scripts para animación en Blender 37


Aspectos de la API
API de Blender
Game Engine Modules: Como su nombre lo indica
permite acceder al motor de videojuegos de Blender y
realizar aplicaciones sobre juegos en 3D y permite
acceder a las herramientas necesarias para realizar
juegos y controlar los elementos de la escena con un
mando. Dentro del modulo se encuentran los siguientes
elementos:
Game Types (bge.types)
Game Logic (bge.logic)

Rasterizer (bge.render)

Video Texture (bge.texture)

Game Keys (bge.events)

Physics Constraints (bge.constraints)

Application Data (bge.app)

( h t t p s : / / d o c s . b l e n d e r. o rg / a p i /
blender_python_api_current/)

Programación de scripts para animación en Blender 38


Aspectos de la API
API de Blender
Para el manual se uso el modulo, Aplication Modules,
de la lista de Aplication Modules. Se usaron Context
Access, Data Access y Operators por que a través de
ellos se puede acceder a las opciones de los objetos de
blender, para manipular las transformaciones de los
objetos, es decir, traslación, rotación, escala. Mover el
pivote de los objetos y crear armature para deformar
objetos y animarlos.
Context Access: depende del área de Blender con la
cual este trabajando.
Data Access: permite acceder a los datos de los objetos
dentro de la escena
Operators: Son las operaciones que tiene Blender para
trabajar con objetos.

Programación de scripts para animación en Blender 39


Aspectos de la API
API de Blender
En Data Access se usaron los siguientes
bpy.data.objects[ ""].
Permite acceder a los datos del objeto que se agreguen
entre corchetes, los que se van a utilizar son:
name: permite obtener el nombre del objeto, es de tipo
String
Location: permite obtener las coordenadas de ubicación
del objeto, es un vector tipo float con 3 elementos
Scale: permite escalar el objeto, es un vector tipo float
con 3 elementos
Traslate: permite trasladar el objeto, es un vector tipo
float con 3 elementos
rotation_euler((x,y,z)) : Es una función que permite
asignar la rotación del objeto, los elementos que son
necesarios son 3 tipo float, para darle valor a los
respectivas coordenadas x,y,z

Programación de scripts para animación en Blender 40


Aspectos de la API
API de Blender
dimensiones: permite obtener las dimensiones del
objeto , es un vector tipo float con 3 elementos
select: permite seleccionar el objeto, a través de
asignarle un valor booleano sea True o False
hide_render: permite desactivar la opción de que el
objeto no aparezca en el render
constraints[ "Transformation"].to_min: Es una opción
que trae blender, para configurar una restricción a la
traslación, rotación y escala de un objeto y asignarle un
valor mínimo permitido. Un valor de tipo float
constraints[ "Transformation"].to_max: Es una opción
que trae blender, para configurar una restricción a la
traslación, rotación y escala de un objeto y asignarle un
valor máximo permitido. Un valor de tipo float

Programación de scripts para animación en Blender 41


Aspectos de la API
API de Blender
constraints["Limit Location"].use: Es una opción que
trae Blender, para habilitar restricción a la traslación,
son valores True o False.
constraints["Limit Location"]: Es una opción que trae
blender para agregar una restricción de locación a una
coordenada especifica, los valores son tipo float.
constraints["Limit Location"].owner_space: Es una
opción que trae blender para que reconozca las
coordenadas locales o globales de la posición original
del objeto
bpy.data.objects[ "Armature"].
Me permite acceder a los datos de la armadura o
esqueleto, los que se van a utilizar son:
data.edit_bones.new(''): permite crear un nuevo hueso,
entre paréntesis debe ir el nombre del nuevo hueso

Programación de scripts para animación en Blender 42


Aspectos de la API
API de Blender
data.edit_bones.new('').head : permite asignarle las
coordenadas de ubicación de la cabeza del hueso, es un
vector tipo float de 3 elementos
data.edit_bones.new('').tail : permite asignarle las
coordenadas de ubicación de la cola del hueso, es un
vector tipo float de 3 elementos
data.edit_bones.new('').parent: permite emparentar un
hueso con otro.
data.edit_bones.new('').connect: permite conectar un
hueso con otro, son valores booleanos, True o False
data.bones[""].select: permite seleccionar un hueso de
la cadena del armature, dentro de los corchetes se debe
colocar el nombre del hueso, los valores que se puede
asignar son booleanos, puede ser True o False.
data.edit_bones.new('').name: permite obtener el
nombre del hueso, una cadena String

Programación de scripts para animación en Blender 43


Aspectos de la API
API de Blender
data.edit_bones.new('').select: permite seleccionar el
hueso, es un booleano, valores True o False
pose.bones[""].constraints[ "Transformation"]: es una
opción que trae blender que permite agregar una
restricción de transformación a un hueso dentro del
armature, dentro de los corchetes debe ir el nombre del
hueso
.pose.bones[""].constraints
["Transformation"].use_motion_extrapolate: es una
opción que tiene blender para que se puedan ver los
cambios de las transformaciones en la ventana 3D, es
un booleano, valor True o False
pose.bones[""].constraints
["Transformation"].map_from: es una opción que tiene
blender para activar la opción de mapear. Es un
booleano, valor True o False

Programación de scripts para animación en Blender 44


Aspectos de la API
API de Blender
pose.bones[""].constraints["Transformation"].from: Es
una opción que tiene blender para asignarle una
trasformación de un objeto a otro, los valores son
palabras reservadas,
“LOCATION”,”ROTATION”,”SCALE”
pose.bones[""].constraints["Transformation"].to_: es
una opción que tiene blender par restringir la
transformación de un objeto de un eje determinado de
un hueso, los valores permitidos son las palabras
reservadas, “X”,”Y”,”Z”
.scenes[ "Scene"].
Permite acceder a los datos de la escena,entre ellos esta:
unit_settings.system: permite cambiar las unidades de
medida, los datos permitidos son las palabras
reservadas, “METRIC” o “IMPERIAL”
data.images: permite acceder a los datos de las
imágenes que puedo ubicar como fondo de pantalla

Programación de scripts para animación en Blender 45


Aspectos de la API
API de Blender
De context acces se usaron los siguientes elementos
bpy.context.
object.active_material.diffuse_color: permite asignarle
un color a un objeto, es un vector float de 3 elementos
que indican los colores r,g,b
scene.cursor_location: permite asignar la ubicación del
cursor en el programa 3D, es un vector float de 3
elementos
object.constraint.add(type=“”): permite agregar una
restricción a un objeto, acepta palabras reservadas, las
que se trabajaron fueron, “LIMIT LOCATION”
scene.objects.get("Armature"): permite obtener el
armature asociado al objeto
scene.objects.active: permite activar objeto en la
escena, permite booleano, True o False
scene.objects["camera"] : permite situarme en las
propiedades de la cámara
Programación de scripts para animación en Blender 46
Aspectos de la API
API de Blender
scene.render.image_settings.file_format: es una opción
de blender que permite configurar el formato de
imagen del render, acepta palabras reservadas, “PNG”,
“JPG”,”TARGA”

scene.render.alpha_mode: Es una opción de blender


para que no aparezca el fondo de la escena en el render,
las palabras reservadas que acepta son “SKY” O
“TRANSPARENT”

scene.render.resolution_percentage: Es una opción de


blender que permite asignarle un valor a la resolución
de 0 a 100, acepta un valor float

scene.render.image_settings.color_mode: Es una opción


de blender que permite configurar el modo del color del
render, acepta palabra reservada, “RGB”,”RGBA”,este
ultimo permite mantener la transparencia del fondo

Programación de scripts para animación en Blender 47


Aspectos de la API
API de Blender
space_data.background_images: Es una opción del
render que me permite acceder a los datos de la imagen
de fondo

De operators se usaron los siguientes:


object.select all(action=''): permite seleccionar todos
los objetos de la escena, acepta las palabras reservadas
“SELECT”, “DESELECT”, “TOGGLE”, la palabra se
debe colocar después del signo igual
permite fijar pivote en la posición del cursor
object.origin.set("type="ORIGIN_CURSOR")
object.mode_set(mode='EDIT', toggle=False): permite
acceder al modo edición, también al modo objeto y
también al modo pose
object.constraint_add type='LIMIT_LOCATION'):
Agrega a las propiedades de un objeto una opción para
limitar su locación

Programación de scripts para animación en Blender 48


Aspectos de la API
API de Blender
object.origin.set("type="")
permite fijar pivote de una forma especifica, acepta
palabras reservadas como,
“GEOMETRY_ORIGIN”,”ORIGIN_CURSOR”,”ORI
GIN_CENTER OF MASS”
object.mode_set(mode='', toggle=False): permite
acceder a los distintos modos en blender, las palabras
reservadas son, “EDIT”, “POSE”,”OBJECT”
Todos estos elementos se irán mostrando con detalle y
usando en la guía para una mayor comprensión, pues es
vital entender también muchos aspectos del software
3D blender, para poder entender los conceptos aquí
mencionados. Es por esto que en las siguientes
lecciones se colocaran en practica los aspectos de
animación en el programa blender y como automatizar
estos procesos por medio de script en Python blender.

Programación de scripts para animación en Blender 49


3
Capítulo
Producción 3D

En este capítulo veremos una mirada rápida en la cual se


mostrarán todas las etapas de la animación 3D, desde la
preproducción hasta llegar a la producción y
postproducción. También se hablará de los inicios de las
gráficos en computación, los software 3D de la industria,
el oficio del animador y el rig y como ellos trabajan en
conjunto.

Programación de scripts para animación en Blender 50


Producción 3D
Preproducción
Idea

Boceto Tocando en la cena por Laura Natalia Zuluaga Ramírez

Cualquier cosa que nos inspire a contar una historia

Programación de scripts para animación en Blender 51


Producción 3D
Preproducción
Guión

NARRADOR: Había una vez un bosque en el que vivía


una tortuga llamada Tuga, la cual no quería su caparazón.

Exterior-Bosque-Día

Tuga lleva su caparazón en sus brazos, se detiene de


manera abrupta y mira con enojo su caparazón dejándolo
caer al suelo agitando fuertemente sus brazos.

Al caer al suelo el caparazón, Tuga golpea con fuerza con


su pata izquierda el caparazón y empieza a saltar sobre
su pierna derecha, sosteniendo con sus manos su pierna
izquierda……….

Programación de scripts para animación en Blender 52


Producción 3D
Preproducción
Storyboard

Fragmento storyboard por Laura Natalia Zuluaga Ramírez

Storyboard: Es el guión gráfico.

Programación de scripts para animación en Blender 53


Producción 3D
Preproducción
Concept Art

Representación de los elementos de la historia, una


imagen que represente toda la historia

Programación de scripts para animación en Blender 54


Producción 3D
Producción
Modelado 3D

Vista wireFrame Front Right

Se crea una representación en 3D


de los personajes y escenarios de la
historia.

Programación de scripts para animación en Blender 55


Producción 3D
Producción
Rigging

Se crean los huesos de los


personajes, se ubican con
respecto a las deformaciones
que el personaje va a tener.
Se crean los controles y se
configuran para que el
animador pueda realizar los
movimientos necesarios.

Programación de scripts para animación en Blender 56


Producción 3D
Producción
Materiales y texturas

En este proceso se identifican los colores planos, que son


la base para pintar el personaje; luego se hacen los cortes
que hacen referencia a las diferentes partes del personaje
y en un software de diseño, se pinta esta imagen plana y
luego se carga en la geometría.

Programación de scripts para animación en Blender 57


Producción 3D
Producción
Animación
Se anima el personaje
usando los controles
creados por el rigger; se
estudia el mundo real para
crear el realismo en cada
pose del personaje.

Programación de scripts para animación en Blender 58


Producción 3D
Producción
Iluminación

Se refiere a la configuración y ambientación de las


sombras y luces que se requieran para crear la atmósfera
deseada para la escena de la historia.

Programación de scripts para animación en Blender 59


Producción 3D
Producción
Partículas, cabellos y telas

Se estudia el comportamiento real y mediante cálculos y


procedimientos, se simulan las físicas del
comportamiento de cabello, tela y fenómenos naturales.

Programación de scripts para animación en Blender 60


Producción 3D
Producción
Render

Es la imagen final de la
producción.

Programación de scripts para animación en Blender 61


Producción 3D
PostProducción
Composición

Proceso de edición, retoque, corrección de imagen que se


hace con cada una de las imágenes generadas en el
render.

Programación de scripts para animación en Blender 62


Producción 3D
PostProducción
Composición

Se tienen las imágenes finales que se exportan en el


formato de video para reproducirlas y ver la producción
completa.

Programación de scripts para animación en Blender 63


Producción 3D
Gráficos en computadores
Historia

El concepto se introdujo en los años 70 donde designaba


únicamente los gráficos, que entonces llamábamos
gráficos por computadora; tenían la intención de
representar en forma de imagen, información
generalmente estática por medio de diagramas, mapas o
esquemas. Pero el concepto de gráfico por computadora
se extendió rápidamente a todos los gráficos producidos
por medios informáticos.
Historia de los gráficos por computadora, recuperado de

https://www.ecured.cu/Gr%C3%A1ficos_por_computadora

Programación de scripts para animación en Blender 64


Producción 3D
Gráficos en computadores
Vectorizar

Vectorizar consiste en convertir imágenes que están


formadas por píxeles en imágenes formadas por vectores.

Programación de scripts para animación en Blender 65


Producción 3D
Gráficos en computadores
Software 3D

Autodesk 3ds
Max
Autodesk Maya
Modo 302
RhinoCeros
Cinema 4D

Imágenes software 3d, recuperado de https://static1.sw-cdn.net/files/cms/


tutorials/featured/most-popular/supported-apps.jpg

Estos softwares ayudan a crear y realizar producciones


3D, todos ellos son software de pago.

Programación de scripts para animación en Blender 66


Producción 3D
Gráficos en computador
Blender
Blender es un software
que permite también
realizar producciones en
3D, pero tiene la ventaja
que es un software libre
y es el software en el que
vamos a trabajar en el
curso.

Logo de Blender, recuperado de https://www.blendernation.com/wp-content/


uploads/2012/11/blender_logo_shiny.png

Programación de scripts para animación en Blender 67


Producción 3D
Gráficos en computador
Blender

Historia
Originalmente, el programa fue desarrollado como una
aplicación propia por el estudio de animación holandés
NeoGeo; el principal autor, Ton Roosendaal, fundó la
empresa "Not a Number Technologies" (NaN) en junio
de 1998 para desarrollar y distribuir el programa. La
compañía llegó a la bancarrota en 2002 y los acreedores
acordaron ofrecer Blender como un producto de código
abierto y gratuito bajo los términos de la GNU GPL a
cambio de 100.000 €. El 18 de julio de 2003, Roosendaal
creó sin ánimo de lucro la Fundación Blender para
recoger donaciones; el 7 de septiembre se anuncia la
recaudación como exitosa (participaron también ex
empleados de NaN) y el código fuente se hizo público el
13 de octubre.
Fuente: http://wikilearning.com, recuperado de https://www.artedinamico.com/portal/sitio/
articulos_mo_comentarios.php?it=2042&categoria=3

Programación de scripts para animación en Blender 68


Producción 3D
Gráficos en computador
Cuestionario
Según el capítulo, para usted ¿cuál es la etapa más
importantes en la producción 3D?

¿En qué etapas de las mencionadas es útil el concept art?

Según lo que aprendió en el capítulo, ¿por qué es


importante la etapa de postproducción?

Defina con sus propias palabras, ¿qué es modelado, rig y


animación?

¿Cómo iniciaron los gráficos por computador?

¿Qué es vectorizar?

¿Cree que todas las etapas de la producción 3D están


interrelacionadas? ¿explique por qué?

Programación de scripts para animación en Blender 69


Producción 3D
Gráficos en computador
Cuestionario
A la hora de crear una historia, esta nace primero de
algún elemento que sirvió de inspiración. Esta idea es
enmarcada en un tema, por ejemplo juguetes, después a
este tema le doy una premisa, es decir, el sentido que
quiero dar a la historia a través del tema, por ejemplo
estos juguetes van a resaltar el valor de la amistad.
Escribo el argumento, en el cual involucro escenarios y
personajes que se relacionan en una serie de situaciones
donde en este ejemplo se resaltará el valor de la amistad.

Dada esta breve explicación piense en algo que le


gustaría contar y escriba:
Idea, tema, premisa, argumento:
(Frase o pequeño párrafo)

Piense por un momento, ¿será que un software bastará


para crear las infinidades de historias que se pueden
contar?, y conteste, ¿será que se necesita de aplicaciones
adicionales para apoyar la realización de cada una de las
etapas en la producción 3D?
Programación de scripts para animación en Blender 70
Producción 3D
Gráficos en computador
Cuestionario: Solución

Según el capítulo, para usted ¿cuál es la etapa más


importante en la producción 3D?

Respuesta personal

¿En qué etapas de las mencionadas es útil el concept art?

En el modelado, materiales y texturas

Según lo que aprendió en el capítulo, ¿por qué es


importante la etapa de postproducción?

Es la etapa en la cual se refina ajusta y edita, para


posteriormente generar el producto final

Programación de scripts para animación en Blender 71


Producción 3D
Gráficos en computador
Cuestionario: Solución

Defina con sus propias palabras, ¿qué es modelado, rig y


animación?

Modelado: Darle forma a un objeto para representar


un elemento del mundo real o imaginario

Rig: Construir, ubicar y configurar el esqueleto de un


objeto o personaje para que el animador pueda
realizar la animación según se requiera

Animación: Es crear la ilusión de que un elemento


tiene vida

Programación de scripts para animación en Blender 72


Producción 3D
Gráficos en computador
Cuestionario: Solución
¿Como iniciaron los gráficos por computador?

Respuesta en la página de gráficos por computadora

¿Que es vectorizar?

Es representar una forma en vectores a partir de una


imagen

¿Cree que todas las etapas de la producción 3D están in-


terrelacionadas?, ¿explique por qué?

Sí, puesto que una depende de la otra, si no existe la


preproducción no se podría tener claridad de lo que
se quiere hacer y si tratara de producir algo sin antes
planear voy a tener muchas dificultades, porque no
tengo un objetivo claro. Por último si tratara de hacer
la edición necesitaría haber producido primero.

Programación de scripts para animación en Blender 73


Producción 3D
Gráficos en computador
Cuestionario: Solución
A la hora de crear una historia, esta nace primero de
algún elemento que sirvió de inspiración. Esta idea es
enmarcada en un tema, por ejemplo juguetes, después a
este tema le doy una premisa, es decir, el sentido que
quiero dar a la historia a través del tema, por ejemplo
estos juguetes van a resaltar el valor de la amistad.
Escribo el argumento, en el cual involucro escenarios y
personajes que se relacionan en una serie de situaciones
donde en este ejemplo se resaltará el valor de la amistad.

Dada esta breve explicación piense en algo que le


gustaría contar y escriba:

Idea: Juguetes en el corredor

Tema: Juguetes

Premisa: El valor de la amistad

Programación de scripts para animación en Blender 74


Producción 3D
Gráficos en computador
Cuestionario: Solución

Argumento: Unos juguetes en el cuarto de un niño


esperan el nuevo juguete, pero al llegar este nuevo
juguete, el jefe de los juguetes tiene conflictos con él;
pero a medida que pasa el tiempo ocurre una serie de
sucesos en las cuales las vidas de ellos se ven
comprometidas y al superar esto terminan siendo
amigos.

Piense por un momento, ¿será que un software bastará


para crear las infinidades de historias que se pueden
contar? y conteste, ¿será que se necesita de aplicaciones
adicionales para apoyar la realización de cada una de las
etapas en la producción 3D?

Respuesta personal

Programación de scripts para animación en Blender 75


4
Capítulo
Manejo del
software

En este capítulo veremos lo necesario para trabajar


con la herramienta Blender y posteriormente
desarrollar los scripts.

Programación de scripts para animación en Blender 76


Manejo del software
Instalación

En la web oficial de Blender, https://blender.org , pueden


descargar el software, se puede descargar una versión
para instalar o una versión ejecutable para el curso
cualquiera de las opciones es irrelevante

Luego de descargar cualquier versión de Blender 2.7, en


este caso descargaré la 2.76, se procede igual en todas,
para este caso elegí descargar la versión de Blender
ejecutable, descargo el archivo compreso y ejecuto el
archivo blender.exe.

https://blender.org
Programación de scripts para animación en Blender 77
Manejo del software
Instalación

Me aparece la
ventana de
inicio

Doy clic en la zona


gris para que
desaparezca el
menú y acceder al
espacio de trabajo

Programación de scripts para animación en Blender 78


Manejo del software
Entorno de trabajo
Menú principal: Espacio 3D: Lugar
Tengo las opciones donde creo manipulo y
para abrir y guardar edito los objetos
un archivo creados en la escena

Aquí encuentro las Cursor 3D en el lugar en el que


este el cursor, allí se crearan los Propiedades: Lugar donde
opciones de vistas, puedo manipular las
selección, agregar objetos objetos en el espacio 3D
propiedades de los objetos de la
escena
Programación de scripts para animación en Blender 79
Manejo del software
Layout

En la primera ventana podemos ver que al hacer clic en


la pestaña default, podemos ver varios espacios de
trabajo predeterminado, al presionar clic llegamos al
espacio de trabajo personalizado para programar scripts
en Python.

Programación de scripts para animación en Blender 80


Manejo del software
Sistema de coordenadas

Es un conjunto de valores que permiten definir


unívocamente la posición de cualquier punto de un
espacio geométrico respecto de un punto denominado
origen.

Una escena puede identificarse con las coordenadas en


3 dimensiones del espacio.

Programación de scripts para animación en Blender 81


Manejo del software
Escena

La escena en 3D es el archivo que contiene toda la


información necesaria para identificar y posicionar todos
los modelos, luces y cámaras para su renderización.

Programación de scripts para animación en Blender 82


Manejo del software
Vistas

Son las formas en las que podemos visualizar los


elementos dentro del programa 3D.

Vista cámara

Programación de scripts para animación en Blender 83


Manejo del software
Vistas

Vista left

Vista right

Programación de scripts para animación en Blender 84


Manejo del software
Vistas

Vista front

Vista top

Programación de scripts para animación en Blender 85


Manejo del software
Movimientos en Blender
Los movimientos en Blender se refieren a la forma en la
que puedo moverme por el espacio 3D.

Orbitar

Programación de scripts para animación en Blender 86


Manejo del software
Movimientos en Blender

Paneo

Programación de scripts para animación en Blender 87


Manejo del software
Movimientos en Blender

Zoom

Programación de scripts para animación en Blender 88


Manejo del software
Crear objetos

Para crear un objeto en la escena es importante primero


presionar clic, para indicarle donde quiero que el objeto
sea creado en la escena.

Aquí podemos crear objetos como cubos, planos, esferas;


también podemos crear luces, cámara y tenemos otras
opciones para agregar a la escena.

Programación de scripts para animación en Blender 89


Manejo del software
Crear objetos

Después abrimos el menú,


damos clic en la figura que
deseamos agregar, en este
ejemplo vamos a dar clic en
la uvsphere.

Programación de scripts para animación en Blender 90


Manejo del software
Nombrar objetos

Para nombrar el objeto nos dirigimos al panel properties


y damos clic en object, nos aparece el nombre del objeto
que fue asignado por defecto, podemos cambiarlo como
en cualquier editor de texto presionando en el nombre y
agregando el de nuestra preferencia, para este ejemplo
agregaremos el nombre “cabeza”.

Programación de scripts para animación en Blender 91


Manejo del software
Seleccionar objetos

Nos situamos en el objeto y presionamos clic derecho,


aparecerá un contorno naranja indicando que el objeto ha
sido seleccionado.

Programación de scripts para animación en Blender 92


Manejo del software
Copiar objetos

Para copiar el objeto, seleccionamos el objeto y


presionamos shift D luego, desplazo el cursor del mouse
para ubicar la copia en el lugar de la escena que quiero
que se ubique; por último presionamos clic izquierdo
para terminar el proceso.

Programación de scripts para animación en Blender 93


Manejo del software
Borrar objetos

Seleccionamos el objeto y presionamos la tecla


“X” luego damos clic en la opción delete

Programación de scripts para animación en Blender 94


Manejo del software
Viewport Shading

Hay diferentes formas de visualizar los objetos en


escena,; en particular nos interesan solo dos, solid que es
la representación solida del objeto, y wireframe que es la
malla inalámbrica que nos muestra como está construido
el objeto que quiero que se ubique; por último
presionamos clic izquierdo para terminar el proceso.

Programación de scripts para animación en Blender 95


Manejo del software
Modo

A la hora de trabajar en los objetos de la escena tengo


que cerciorarme en qué modo estoy, de lo contrario esto
puede traer problemas a la hora de efectuar operaciones
en el objeto. Hay diversos modos, pero para este curso
solo nos interesa el object mode, el edit mode y el pose
mode; este último lo explicaremos y trabajaremos más
adelante.

Programación de scripts para animación en Blender 96


Manejo del software
Modo objeto

Programación de scripts para animación en Blender 97


Manejo del software
Modo edición

Seleccionar vértices: puedo


seleccionar vértices oprimiendo
la opción vertex.

Programación de scripts para animación en Blender 98


Manejo del software
Modo edición

Seleccionar aristas: puedo seleccionar aristas


oprimiendo la opción aristas.

Programación de scripts para animación en Blender 99


Manejo del software
Modo edición

Seleccionar polígonos: puedo seleccionar


polígonos oprimiendo la opción face.

Programación de scripts para animación en Blender 100


Manejo del software
Transformaciones

Programación de scripts para animación en Blender 101


Manejo del software
Trasladar objetos

Para todas las transformaciones debo seleccionar en la


barra de herramientas de 3D view, qué tipo de
transformación requiere, en este caso está seleccionada la
opción translate; para trasladarlo solo presiono clic en
uno de los ejes y sitúo el objeto en el espacio 3d donde
deseo; luego suelto el clic.

Programación de scripts para animación en Blender 102


Manejo del software
Rotar objetos

En este caso está seleccionada la opción rotate; para


rotarlo solo presiono clic en uno de los ejes y giro el
objeto hasta la rotación que deseo, luego suelto el clic.

Programación de scripts para animación en Blender 103


Manejo del software
Escalar objetos
En este caso está seleccionada la opción scale, para
escalarlo solo presiono clic en uno de los ejes y escalo el
objeto hasta la escala que deseo, luego suelto el clic.

Programación de scripts para animación en Blender 104


Manejo del software
Ejercicios
Practique los movimientos a través del espacio 3D,
cuando ya tenga dominio en el espacio 3D realice los
ejercicios.

Cree una esfera y cambie su nombre por ejercicio 1,


copie la esfera y cambie el nombre por ejercicio 1.1.

Cree una esfera, un cubo y nómbrelos respectivamente


como ejercicios 2 y 2.1, escale el cubo 5 unidades en el
eje z, ahora escale la esfera 5 unidades en el eje x.

Cree una esfera y con ella seleccionada, vaya al modo


edición y modifique sus vértices.

Rote un cubo 30 grados en el eje x y capture la imagen


final.

Muestre el cubo en la vista lateral y capture la imagen.

Construya una figura con cubos, esferas y pirámides,


haga las capturas de pantalla de la vista top, left, right,
front y vista cámara.

Programación de scripts para animación en Blender 105


Manejo del software
Ejercicio: Solución
Cree una esfera y cambie su nombre por ejercicio 1,
copie la esfera y cambie el nombre por ejercicio 1.1
unidades en el eje x cambie el nombre por ejercicio 1.1
La solución de los ejercicios los pueden encontrar en:

capitulos\2\ejercicios

Programación de scripts para animación en Blender 106


Manejo del software
Ejercicio: Solución

Cree una esfera y un cubo y nómbrelos respectivamente


como ejercicios 2 y 2.1; escale el cubo 5 unidades en el
eje z, ahora escale la esfera 5 unidades en el eje x.

Programación de scripts para animación en Blender 107


Manejo del software
Ejercicio Solución

Cree una esfera y con ella seleccionada vaya al modo


edición y modifique sus vértices.

Programación de scripts para animación en Blender 108


Manejo del software
Ejercicio Solución

Rote un cubo 30 grados en el eje x.

Programación de scripts para animación en Blender 109


Manejo del software
Ejercicio Solución

Muestre el cubo en la vista lateral.

Programación de scripts para animación en Blender 110


Manejo del software
Ejercicio Solución
Construya una figura con cubos, una esfera y un cono
y haga las capturas de pantalla de la vista top, left,
right, front y vista cámara.

Programación de scripts para animación en Blender 111


Manejo del software
Herramientas de animación

La línea de tiempo me permite establecer la duración de


mi animación y ver los fotogramas claves que han sido
creados en ella; la línea de tiempo solo me sirve como un
visor para saber en donde están ubicados mis fotogramas
claves.

Programación de scripts para animación en Blender 112


Manejo del software
Herramientas de animación
Un fotograma clave es un contenedor que permite
guardar información de un objeto en escena, es decir
puedo guardar la posición, orientación, dimensión de un
objeto en escena.

Para crear un fotograma


clave, selecciono el
objeto y presiono i en el
espacio 3D.
Luego selecciono la
información que quiero
guardar del objeto en
este caso seleccionaré su
Traslación.

Al presionar I puedo ver


una línea amarilla en la
línea de tiempo, que
muestra el lugar en el cual
he creado mi fotograma
clave.

Programación de scripts para animación en Blender 113


Manejo del software
Herramientas de animación
Dope Sheet

Ahora vamos a ver el Dopesheet que es la hoja de


tiempos del animador; podemos encontrarlo presionando
clic en el icono de línea de tiempo, allí daremos clic en la
opción Dope sheet. El Dope Sheet sirve para mover
fotogramas y crear variación de tiempo en mi animación.

Observemos que lo he
desplazado del frame 10
al frame 52.

Programación de scripts para animación en Blender 114


Manejo del software
El rig, el animador

El rig es el profesional encargado de realizar los


controles y de programar lo que el animador necesita
para realizar los movimientos de los personajes.
Entonces el animador es el cliente del rig y deben
trabajar en equipo, el animador le da las especificaciones
del rig que necesita.

Personaje pose estándar Personaje posado por el


animador

Básicamente es esto, tenemos un personaje en 3D rígido


que no se puede deformar modelado por un profesional,
el rig ubica un armadura en el personaje, configura y crea
las deformaciones para que el animador pueda cumplir
con la exigencia de la historia.
Programación de scripts para animación en Blender 115
Manejo del software
Cuestionario

Nombre los 3 movimientos para moverse en el espacio


3D y explique en qué consiste cada uno.

Nombre las tres transformaciones y responda ¿cuál es la


utilidad de cada uno de ellos?

Vaya a otro layout diferente al del ejemplo y diga con sus


propias palabras la utilidad del layout.

¿Qué es un fotograma y cuál es la diferencia entre un


fotograma y un fotograma clave?

¿Qué sucede si la escala en x de una esfera es mayor que


la de z o viceversa?

Cree un cubo y agregue un fotograma clave de locación,


luego desplace el cubo en el eje x y agregue otro
fotograma clave de locación en otro frame en la línea de
tiempo, y modifique las claves en el dopesheet, describa
qué ocurrió en el primer caso y cuando modificó el
tiempo en el dopesheet.
Programación de scripts para animación en Blender 116
Manejo del software
Cuestionario: Solución

Nombre las tres transformaciones y cuál es la utilidad de


cada uno de ellos.

Trasladar, rotar y escalar; trasladar me permite


mover el objeto por el espacio 3D, rotar me permite
orientar el objeto en el espacio 3D y escalar me
permite modificar la escala del objeto

Vaya a otro layout diferente al del ejemplo y diga con sus


propias palabras la utilidad del layout.

Respuesta personal

¿Qué es un fotograma y cuál es la diferencia entre un


fotograma y un fotograma clave?

Un fotograma es un contenedor que puede guardar


información, un fotograma clave es un contenedor
que ya posee información.

Programación de scripts para animación en Blender 117


Manejo del software
Cuestionario: Solución

¿Qué sucede si la escala en x de una esfera es mayor que


la de z o viceversa?

Si la escala de x es mayor la esfera se ha aplastado, si


es menor la esfera se ha estirado

Cree un cubo y agregue un fotograma clave de locación,


luego desplace el cubo en el eje x y agregue otro
fotograma clave de locación en otro frame en la línea de
tiempo, y modifique las claves en el dopesheet; describa
qué ocurrió en el primer caso y cuando modifico el
tiempo en el dopesheet.

En el primer caso el objeto se desplaza de un punto a


otro, al modificar las claves acercando la última a la
primera el objeto se mueve más rápido.

Programación de scripts para animación en Blender 118


5
Capítulo
Scripts

En este capítulo veremos qué es un script y como


relaciono el código de Python con Blender,
programaremos algunos ejemplos y veremos los
resultados en la ventana 3D de Blender.

Programación de scripts para animación en Blender 119


Scripts
¿Qué es un script?
Este término viene de una palabra
inglesa que significa “Guión”, como
el de cine o teatro y, literalmente, esto
es lo que es. Tenemos entonces, que
un script, es un conjunto de órdenes
guardadas en un archivo de texto,
generalmente muy ligero y que es
ejecutado por lotes o línea a línea, en tiempo real por un
intérprete.

Los scripts son pequeños programas que no son


compilados, es decir, por lo general necesitan de un
programa lector o intérprete que codifique la información
del script y lo lleve a lenguaje de máquina, para que la
información sea procesada y ejecutada por el ordenador.

Logo Script-icon http://clubpenguin.wikia.com/wiki/


File:Stage_Script_icon.png

Fuente: http://culturacion.com, recuperado de


http://culturacion.com/que-son-los-scripts/

Programación de scripts para animación en Blender 120


Scripts
¿Qué es un script?
Script escrito en Python

Programa intérprete
Programación de scripts para animación en Blender 121
Scripts
¿Para qué se usan?

Crear pequeños programas que soporten otras


herramientas y faciliten las tareas en una producción. En
este caso la idea es desarrollar scripts que permitan
facilitar el trabajo a la hora de realizar animaciones. En
la imagen vemos un script generador de árboles;
analicemos lo siguiente: Blender ya tiene todo lo
necesario para construir el árbol, puedo crear la
geometría y deformarla para crear el árbol de la imagen.

Imagen recuperado de
https://i.ytimg.com/vi/EmfGoj9mg8o/maxresdefault.jpg

Programación de scripts para animación en Blender 122


Scripts
¿Para qué se usan?

Lo que me está permitiendo este script es que pueda


automatizar el proceso manual de modelar el árbol,
facilitando el trabajo y ahorrando tiempo a la hora de
construirlo. Puesto que lo que me está entregando este
script son opciones para personalizar un árbol genérico y
configurarlo hasta lograr el árbol deseado.

Imagen recuperado de
https://i.ytimg.com/vi/EmfGoj9mg8o/maxresdefault.jpg
Programación de scripts para animación en Blender 123
Scripts
Ejemplo script

Este ejemplo de un script en el programa 3Ds Max


permite aplicar deformaciones del objeto que vemos en
pantalla mediante unos controles; al mover estos
controles el objeto será afectado. Entonces se programó
un script y luego se usó 3ds max para ejecutar el script y
afectar la malla del objeto.

Imagen recuperado de
https://area.autodesk.com/dynamic_resources/
area_learning_tutorials/1217/content/141505525835.png

Programación de scripts para animación en Blender 124


Scripts
¿Qué es Python?

Python es un lenguaje de programación poderoso y fácil


de aprender. Cuenta con estructuras de datos eficientes y
de alto nivel y un enfoque simple pero efectivo a la
programación orientada a objetos. La elegante sintaxis de
Python y su tipado dinámico, junto con su naturaleza
interpretada, hacen de éste un lenguaje ideal para
scripting y desarrollo rápido de aplicaciones en diversas
áreas y sobre la mayoría de las plataformas.
Recuperado de:
https://www.python.org/static/opengraph-icon-200x200.png

Con el vamos a programar los scripts en blender, pero


primero conoceremos como acceder a blender desde la
consola y otros aspectos importantes.

Programación de scripts para animación en Blender 125


Scripts
Blender desde la consola

Para trabajar de una manera cómoda en Blender es


necesario abrir el programa desde la consola de
comandos del sistema operativo, para ello presionamos
en el teclado Windows+R, se abrirá una ventana que nos
permite ejecutar comandos de Windows, en ella
escribiremos cmd.

Programación de scripts para animación en Blender 126


Scripts
Blender desde la consola

Se nos abrirá el cmd; allí deberemos escribir el


directorio donde tenemos alojada la carpeta del programa
Blender y luego escribiremos blender.exe; de esta manera
podemos ejecutar Blender desde consola.

Programación de scripts para animación en Blender 127


Scripts
Blender desde la consola

Al abrir Blender desde consola, vamos a tener la consola


de manera abierta permanentemente, hasta que Blender
sea cerrado; allí podemos ver las salidas del código que
ejecutemos.

Programación de scripts para animación en Blender 128


Scripts
Text editor

Desde el text editor vamos a programar todos los códigos


que posteriormente serán ejecutados en Blender.

Programación de scripts para animación en Blender 129


Scripts
Text editor

Entonces primero escribo mi código, y luego lo pruebo


presionando en Run script. En la siguiente ruta puede
encontrarse el código del ejemplo:
capitulos/3/ejemplos/1-cadena hola python

Podemos apreciar que la consola me ha impreso la


cadena.

Programación de scripts para animación en Blender 130


Scripts
Text editor

Para guardar mi código, tengo la opción de dirigirme a


Text, save as y puedo darle un nombre y especificar la
ruta donde deseo guardarlo; la extensión del archivo
es .py, en este caso como solo estoy trabajando código no
es necesario guardar el archivo de Blender.

Programación de scripts para animación en Blender 131


Scripts
Text editor

Si quiero abrir mi archivo me sitúo en Text, open text


block, busco la ruta y abro mi archivo en este caso abriría
hola python.py

Programación de scripts para animación en Blender 132


Scripts
Comunicando Python-Blender

Podemos apreciar que a la hora de relacionar Blender con


Python utilicé la librería bpy; para ello escribí import bpy
y luego relacioné los elementos que necesito de la
siguiente manera:
bpy.data.objects[“Cube”].name=“hola”
esta línea cambia el nombre por defecto del objeto cube
por el nuevo nombre

El archivo del ejemplo se encuentra en:


capitulos/4/ejemplos/1-relacionar variable python con
blender cambio nombre objeto
Programación de scripts para animación en Blender 133
Scripts
Comunicando Python-Blender

Resultado del objeto, el nombre del objeto ha cambiado


por hola

Programación de scripts para animación en Blender 134


Scripts
Outliner

El outliner es nuestro visor para saber que está contenido


en la escena; podemos observar como nos muestra los
objetos en una jerarquía donde el que está en la cabeza es
el contenedor y al desglosarlo aparece lo que esta
adentro. De esta manera podemos relacionar la
programación de scripts de Python en Blender como una
serie de directorios.

Programación de scripts para animación en Blender 135


Scripts
Outliner

Como en nuestro ejemplo anterior


bpy.data.objects

Programación de scripts para animación en Blender 136


Scripts
Cursor 3D

Puedo mo dificar la
posición del cursor 3D
dando clic para cambiar su
ubicación en el espacio 3D,
también tengo un menú en
el cual puedo cambiar su
ubicación ingresando sus
valores

Con estas opciones puedo manipular la posición del


cursor 3D ingresando únicamente los valores, para este
caso he ingresado los valores 0,0,0 es decir que el cursor
3D se ubique en el origen

Programación de scripts para animación en Blender 137


Scripts
Unidades de medida

Al presionar la tecla n situado en la ventana 3D se


despliegan las opciones de transformación; es de vital
importancia que revisemos este aspecto antes de seguir.
Por defecto Blender trabaja con unidades de medida
propia y no tiene relación con ningún sistema de medida
conocido. Para esto cambiaremos el sistema de medida a
metros.

Programación de scripts para animación en Blender 138


Scripts
Unidades de medida

Nos situamos en el panel de propiedades y vamos a la


opción scene, allí buscaremos las opciones units y
daremos clic en metrics

Programación de scripts para animación en Blender 139


Scripts
Unidades de medida

Ahora ya hemos configurado las unidades de medida a


un sistema conocido, para escribir cm simplemente
escribimos el número seguido de cm, al igual que los m y
los mm.

Programación de scripts para animación en Blender 140


Scripts
Unidades de medida
Es necesario comprender lo siguiente: la escala es la
visualización del objeto en la ventana 3D, la dimensión
es el tamaño real del objeto.

Con estos conocimientos ya podemos empezar a estudiar


y a realizar nuestros primeros movimientos de objetos en
la ventana 3D.

Programación de scripts para animación en Blender 141


Scripts
Librería bpy
Bien, en Blender hay una librería que nos permite asociar
los elementos con Python y es bpy; veremos algunos usos
de ella y durante el resto del curso se seguirá trabajando
la librería para lograr mayor compresión y claridad para
lograr los objetivos del curso.

Entonces comencemos a usar bpy. Miremos lo siguiente:

primero cada versión de Blender tiene su propia librería,


si es una versión muy antigua con las modernas hay
diferencias muy grandes, pero siempre es bueno tener a la
mano la librería de la API con la cual estoy trabajando.

En esta web están las API de las versiones de blender.


https://docs.blender.org/api/

Programación de scripts para animación en Blender 142


Scripts
Librería bpy
Como usar la librería

Lo primero que debemos hacer es escribir en nuestro


script la instrucción:

Import bpy

Necesito saber en todo momento en donde estoy ubicado


y el camino que estoy siguiendo, como si de directorios
se tratase. También saber de antemano qué es lo que
quiero hacer, retomando el ejemplo para cambiar el
nombre, observo que él me dice cuál es la ruta donde está
ese directorio para realizar esa acción al situar mi cursor
en la casilla name.
Programación de scripts para animación en Blender 143
Scripts
Librería bpy
Cambiando las métricas con un script

bpy.data.objects[“Cube”].name=“hola”
En este caso en nuestro primer script usé la librería bpy
para modificar una de las propiedades del objeto; pero
ahora voy a cambiar la opción Metrics de las unidades
de medida.

El archivo del ejemplo se encuentra en:


capitulos/4/ejemplos/2-cambiando las metricas con un
pequeño script

Programación de scripts para animación en Blender 144


Scripts
Librería bpy
Cambiando las métricas con un script

Observemos como al situar el cursor Python me dice


como se llama esta opción y como la reconocería Python.
Vemos que el nombre es unitSettings.system, la primera
letra la escribo en minúscula, al relacionar todos los
elementos el script quedaría de la siguiente manera:

Programación de scripts para animación en Blender 145


Scripts
Librería bpy
Moviendo un objeto con script

Entonces pongamos en práctica lo que conocemos hasta


ahora:
Para desplazar un objeto, primero debo decidir en qué eje
quiero desplazarlo, en este caso vamos a usar el eje x,
entonces debo recordar que mi vector está conformado de
la siguiente manera (x,y,z), nuevamente observo lo que
me brinda Blender.
bpy.data.objects[“Cube”].location

Casi está listo nuestro script, ahora nos falta agregar la


posición a la cual quiero que se mueva mi cubo,
recordemos siempre cambiar las unidades de medidas o
ejecutar el script ya creado para cambiarlo de manera
automática.
Programación de scripts para animación en Blender 146
Scripts
Librería bpy
Moviendo un objeto con script

Entonces hasta ahora tenemos lo siguiente:


bpy.data.objects[“Cube”].location.x
y ahora asigno un valor; si escribo 1.0 Blender lo toma
como un metro, si escribo 0.1 lo tomaría como cm, y así,
para el ejercicio escribo 1.0
bpy.data.objects[“Cube”].location.x=1.0

El archivo del ejemplo se encuentra en:


capitulos/4/ejemplos/3-Moviendo un objeto con script

Programación de scripts para animación en Blender 147


Scripts
Librería bpy
Reutilizar script

Para reutilizar scripts lo único que debo hacer es ir al


directorio donde tengo guardado mi script y abrir el
archivo bpy desde el archivo Blender donde quiero usar
el código, en este caso he creado un nuevo archivo de
Blender y he creado una esfera en la ventana 3D.

Al abrir mi script puedo ver mi código del script anterior,


y también ver como aparece el nombre del archivo con su
extensión.

Programación de scripts para animación en Blender 148


Scripts
Ejercicios

Cree una esfera y escriba un script que cambie de color la


esfera a negro.

Escriba un script que muestre la posición del cubo que


aparece por defecto en Blender y la imprima en consola.

Escriba un script que seleccione todos los objetos de la


escena.

Programación de scripts para animación en Blender 149


Scripts
Ejercicios: Solución

Cree una esfera y escriba un script que cambie de color la


esfera a negro.
Para resolver este ejercicio debo crear un material
primero para la esfera, me situó en el panel propertiers y
luego new material.

La solución del ejercicio la podemos encontrar en :


capitulos/4/ejercicios/1 pintando una esfera

Programación de scripts para animación en Blender 150


Scripts
Ejercicios: Solución

Cree una esfera y escriba un script que cambie de color la


esfera a negro.

Programación de scripts para animación en Blender 151


Scripts
Ejercicios: Solución
Escriba un script que muestre la posición del cubo que
aparece por defecto en Blender y la imprima en consola.

La solución del ejercicio la podemos encontrar en :


capitulos/4/ejercicios/2 localizando el cubo

Programación de scripts para animación en Blender 152


Scripts
Ejercicios: Solución
Escriba un script que me permita seleccionar todos los
objetos de la escena
Blender me proporciona el código de la instrucción que
ejecuto:

La solución del ejercicio la podemos encontrar en :


capitulos/4/ejercicios/3 seleccionar objetos

Programación de scripts para animación en Blender 153


Scripts
Cuestionario
¿Qué es un script?

¿Para qué se usa un script?

¿Qué script conoce usted que use en algún software?

¿Qué es la librería bpy?

Programación de scripts para animación en Blender 154


Scripts
Cuestionario: Solución
¿Qué es un script?

Respuesta en la página de la definición script

¿Para qué se usa un script?

Respuesta en la página para que se usa un script

¿Qué script conoce usted que use en algún software?

Conozco y he usado el tweenmachine para Autodesk


Maya

¿Qué es la librería bpy?

Respuesta en la página de librería bpy

Programación de scripts para animación en Blender 155


Scripts
El punto de pivote

Todos tenemos un punto de giro, un centro al igual, desde


allí podemos rotar nuestras extremidades. Sería un caos
que tratáramos de girar la cabeza con el pivote en la
coronilla, sería algo como lo que se ve en la imagen,
entonces veremos en el próximo capítulo conceptos
como el pivote y como ubicar este pivote adecuadamente
para no perder la cabeza.
Programación de scripts para animación en Blender 156
6
Capítulo
Transformaciones

Conoceremos las transformaciones a través de ejemplos


y ejercicios; desde aquí se pondrán en práctica todos los
conceptos hasta ahora aprendidos, para programar scripts
en Python y tendremos que resolver el primer problema
para animar un personaje.

Programación de scripts para animación en Blender 157


Transformaciones
¿Qué son transformaciones?

Se conocen como los movimientos esenciales en un


ambiente 3D, la traslación, la rotación y la escala.

Ya hemos visto
como hacer estos
movimientos en el
programa 3D, ahora
nos remitiremos a
programar estas
trasformaciones en
Python.

Programación de scripts para animación en Blender 158


Transformaciones
Trasladando objeto con script

Creé una variable llamada objeto, en la cual guardé el


directorio que hace referencia a mi objeto, lo que me
resta es simplemente seguir usando la variable para
llamar a location y agregar las coordenadas de mi vector.

El archivo del ejemplo se encuentra en:


capitulos/5/ejemplos/1-trasladando un objeto con script/
trasladando un objeto.blend

Programación de scripts para animación en Blender 159


Transformaciones
Trasladando objeto con script

Podemos observar que el objeto se ha desplazado a las


coordenadas que le he indicado (2,5,0)

Programación de scripts para animación en Blender 160


Transformaciones
Trasladando objeto con script

En el ejemplo del código que vemos en la imagen he


solicitado que los valores sean ingresados por teclado,
luego de realizar las operaciones indicadas imprime la
coordenada (x,y) resultante.

El archivo del ejemplo se encuentra en:


capitulos/5/ejemplos/1-trasladando un objeto con script/
trasladando un objeto2 por teclado.blend
Programación de scripts para animación en Blender 161
Transformaciones
Trasladando objeto con script

Al ejecutar mi script observo el resultado en pantalla.

Programación de scripts para animación en Blender 162


Transformaciones
Rotar objeto con script

Al rotar un objeto las cosas varían de la siguiente


manera, el directorio hasta la referencia con el objeto
sigue siendo el mismo.
bpy.data.objects["Cube"]
Pero luego debo agregar rotation_euler, ahora si ingreso
un número por ejemplo 90, no va a rotar 90 grados y
tampoco lo va a realizar a no ser que sea un valor de tipo
float, es por esto que hice una conversión de grados a
radianes, entonces escribí math.radians(float(90)), no
obstante math.radians hace parte de la librería math, por
lo tanto debo importarla primero.
Programación de scripts para animación en Blender 163
Transformaciones
Rotar objeto con script

El resultado es el siguiente: he escalado el cubo con


anterioridad para que se note la rotación en la ventana
3D.

El archivo del ejemplo se encuentra en:


capitulos/5/ejemplos/2-rotar un objeto con script
/1-rotar objeto.blend

Programación de scripts para animación en Blender 164


Transformaciones
Rotar objeto con script

Si quisiera solicitar la entrada por teclado sería como se


muestra en la imagen .

El archivo del ejemplo se encuentra en:

capitulos/5/ejemplos/2-rotar un objeto con script


/2-rotarobjetoporteclado.blend

Programación de scripts para animación en Blender 165


Transformaciones
Rotar un objeto con script

Este sería el resultado, el objeto hace la rotación


ingresada por teclado.

Programación de scripts para animación en Blender 166


Transformaciones
Rotar objeto con script
Se quiere que el objeto rote el número de veces que el
usuario indique por teclado y también que ingrese el
grado a girar. Para esto hacemos lo siguiente:

Programación de scripts para animación en Blender 167


Transformaciones
Rotar objeto con script

El resultado, se ha rotado el objeto por la entrada de


teclado es decir 90, y se ha elegido que gire una vez, es
decir, 180 grados.

El archivo del ejemplo se encuentra en:


capitulos/5/ejemplos/2-rotar un objeto con script
/3-rotar objeto ciclo.blend

Programación de scripts para animación en Blender 168


Transformaciones
Escalar objeto con script

He cambiado la escala conservando el valor de z.

El archivo del ejemplo se encuentra en:


capitulos/5/ejemplos/3-escalar objeto con script en
python
Programación de scripts para animación en Blender 169
Transformaciones
El punto pivote

Es el centro donde gira el objeto o donde se ejerce


la fuerza para que un objeto se pueda mover.

Alguien alguna vez dijo


dadme una palanca y un
punto de apoyo y
moveré el mundo.

Programación de scripts para animación en Blender 170


Transformaciones
El punto pivote

Los objetos cuentan


con un punto
denominado pivote.

Programación de scripts para animación en Blender 171


Transformaciones
El punto pivote

La geometría va a girar a
partir de su centro de
gravedad.

La geometría se puede
escalar a partir de su centro.

Programación de scripts para animación en Blender 172


Transformaciones
El punto pivote
Rotación pivote desde
el centro de la
geometría.

Rotando desde el centro de


la geometría.

Si muevo el pivote y
trato de rotar la
geometría esta girará con
respecto a la posición en
la cual haya ubicado el
pivote.

Rotando desde otro punto.


Programación de scripts para animación en Blender 173
Transformaciones
Modificar pivote en Blender

Programación de scripts para animación en Blender 174


Transformaciones
Modificar pivote en Blender

Rotación pivote desde otro punto.

Para modificar el pivote selecciono el objeto al cual


quiero modificar su pivote, luego doy clic en el espacio
3D al lugar en el cual quiero mover el pivote, después
voy a las opciones de objects tools, me aparece un listado
con 4 opciones, en este caso vamos a seleccionar origin
to 3D cursor, con esta opción el pivote se moverá al lugar
al cual le hayamos indicado, en particular nos interesa
solo dos, orig to center, volver el pivote al origen y origin
to 3D cursor.

Programación de scripts para animación en Blender 175


Transformaciones
Volver el pivote al origen
Para este ejemplo se ha
movido el pivote del objeto a
otro punto; para restablecer
el pivote al centro de la
geometría debemos ir a la
ventana de object tools.

Allí se selecciona la opción


origin to geometry, el resultado
es que el pivote volverá al centro
de la geometría, podemos
seleccionar varios objetos y
restablecer el pivote al centro de
la geometría de esta forma.

Programación de scripts para animación en Blender 176


Transformaciones
Volver el pivote al origen
Moviendo el pivote a una coordenada
diferente

En este trasladé el pivote de un objeto a una coordenada


diferente, 5 unidades hacia arriba en el eje z, para ello
obtuve la coordenada de z, luego hice lo siguiente:

El archivo del ejemplo se encuentra en:

capitulos/5/ejemplos/4-mover el pivote de un objeto

Programación de scripts para animación en Blender 177


Transformaciones
Volver el pivote al origen
Moviendo el pivote a una coordenada
diferente

El centro del objeto se ha movido a la coordenada(0,0,5),


también hubiese podido escribir:
coordenada = bpy.context.scene.cursor_location=
(0,0,elemento.location.z),
puesto que x, y no cambiaron su posición.

Programación de scripts para animación en Blender 178


Transformaciones
Ejercicio
Crear una esfera y cambiar el pivote de ésta
manualmente y luego escribir un script que cambie el
pivote de la esfera, luego escale la esfera y describa lo
ocurrido y capture la pantalla.

Seleccione el objeto cube por defecto y vaya a la ventana


de transformación en la location, escriba en el eje x 2*2
capture el resultado y describa lo ocurrido.

Programación de scripts para animación en Blender 179


Transformaciones
Solución ejercicio
Crear una esfera y cambiar el pivote de esta
manualmente y luego escribir un script que cambie el
pivote de la esfera, luego escale la esfera, describa lo
ocurrido y capture la pantalla.

La solución del ejercicio la podemos encontrar en:

capitulos/5/ejercicios/1 cambiar el pivote manual y por


script esfera

Programación de scripts para animación en Blender 180


Transformaciones
Solución ejercicio
Cambiar el pivote de una esfera manualmente
y por script

Programación de scripts para animación en Blender 181


Transformaciones
Solución ejercicio
En este ejercicio se deberá crear una esfera y cambiar el
pivote de esta manualmente y luego escribir un script que
cambie el pivote de la esfera, luego escale la esfera,
describa lo ocurrido y capture la pantalla

Al escalar la esfera ella se escala desde el pivote, y


parece que se dirigiera hacia el pivote cada vez que se
escala.

Programación de scripts para animación en Blender 182


Transformaciones
Ejercicio Resuelto
Seleccione el objeto cube por defecto y vaya a la ventana
de transformación en la location, escriba en el eje x 2*2
capture el resultado y describa lo ocurrido.

Al realizar la operación
el cubo se ha
desplazado 4 unidades
en el eje x.

Programación de scripts para animación en Blender 183


Transformaciones
Ejercicio

En este ejercicio se debe mover el pivote del objeto


exactamente en su extremo superior.

Debe quedar como muestra la figura.

La solución del ejercicio la podemos encontrar en:


capitulos/5/ejercicios/2 mover pivote extremo superior
objeto

Programación de scripts para animación en Blender 184


Transformaciones
Ejercicio: Solución

Para solucionar este ejercicio es necesario conocer las


dimensiones del objeto, luego procedo de la siguiente
manera:

Programación de scripts para animación en Blender 185


Transformaciones
Emparentamiento

El concepto de emparentamiento es el concepto de padre


e hijo; en este caso si 2 objetos cualesquiera son
emparentados van a tener una relación padre e hijo, para
emparentar un objeto a otro, primero selecciono el que
quiero que sea hijo y luego el padre. El que está
delineado con un color naranja oscuro va a ser el hijo por
que lo seleccioné primero y el que tiene un color más
claro es el padre, luego presiono Ctrl p y selecciono la
opción object.

Programación de scripts para animación en Blender 186


Transformaciones
Emparentamiento

Lo que ocurre ahora es que si el padre es decir el cube se


traslada, rota o escala, el hijo también lo va a hacer desde
el punto pivote del objeto padre.

Programación de scripts para animación en Blender 187


Transformaciones
Desemparentamiento

Para desemparentar dos objetos debo situarme en el hijo


y presionar Alt p, en este caso el cubo es padre de la
esfera, así que debo seleccionar la esfera, luego presionar
en clear parent.

Programación de scripts para animación en Blender 188


Transformaciones
Desemparentamiento

Puedo comprobar que al mover el cubo la esfera no sigue


al cubo, también puedo ver que en el outliner que la
relación padre e hijo ha desaparecido.

Programación de scripts para animación en Blender 189


Transformaciones
Ejercicio

Objeto A Objeto B

Objeto C Objeto D

En este ejercicio deberán crear varios objetos y


emparentarlos entre sí de la siguiente forma: el objeto C
deberá ser el padre del objeto A y el objeto B, y el objeto
D deberá ser padre del objeto C

Programación de scripts para animación en Blender 190


Transformaciones
Ejercicio: Solución

Cuando se mueve el padre de todos, todos deben


seguirlo.

Las solución del ejercicio la podemos encontrar en:

capitulos/5/ejercicios/3 emparentar varios objetos

Programación de scripts para animación en Blender 191


Transformaciones
Ejercicio

Lo ideal sería que dibujen


ustedes mismos su
personaje pero si no,
pueden usar el personaje
del curso para tal fin

La idea de este ejercicio es poner en práctica todo lo


aprendido hasta ahora con el siguiente desafío: desde las
primeras versiones de Blender, siempre se usaba un
personaje de galleta de jengibre para realizar las primeras
prácticas. Para nuestro caso la idea es hacer un personaje
en 2D, usando planos y círculos para hacer el personaje
en una pose tipo T, luego se deberá nombrar todas las
partes del personaje y después ubicar su respectivo pivote
para que gire cada pieza de manera adecuada, por último
se deberá emparentar y realizar una pose para verificar el
movimiento, del personaje.
Programación de scripts para animación en Blender 192
Transformaciones
Ejercicio: Solución
Ubicar los pivotes al personaje

Revisar los ejemplos y ejercicios anteriores para saber


como emparentar y cambiar el pivote; me limitaré a
explicar la solución de manera general.
Lo primero es construir al personaje en pose T y darle los
siguientes nombres a los objetos:
(cabeza, cuello, torso, cadera, pierna_derecha,pierna_izq,
brazo_derecho,brazo_izq,mano_derecha,mano_izq,pie_iz
q,pie_derecho)
La solución al ejercicio la podemos encontrar en:
capitulos/5/ejercicios/4 ubicar los pivotes del personaje y
emparentar sus partes

Programación de scripts para animación en Blender 193


Transformaciones
Ejercicio: Solución
Ubicar los pivotes al personaje

Lo primero fue establecer un contador, este contador


iniciará en 1, se incrementará cada vez que entre a cada
uno de los if, dentro de los if encontraré que le pido que
seleccione el objeto con el nombre específico al cual
quiero que se cambie el pivote, retomando la solución del
ejercicio de cambiar el pivote al extremo superior
procedo de la siguiente manera:

Programación de scripts para animación en Blender 194


Transformaciones
Ejercicio: Solución
Ubicar los pivotes al personaje

Verifico primero si lo que quiero es cambiar el pivote del


objeto al extremo superior e inferior y de qué eje, si es el
eje x o el eje y.

dimensiony= a.dimensions.y/2
que puedo obtener al situarse en el panel dimensiones

origen= a.traslate.z
obtengo el origen en la coordenada z

nuevocentro = origen+dimensiony
si quiero situarlo en la parte superior, si quiero situarlo en
la parte inferior cambio el signo + por -
(0,0,nuevocentro)
Ahora bien, esto funcionaría bien para la cabeza, el
cuello y el torso pero no para las extremidades, para esto
necesito también obtener el punto en x
((el nombre del objeto).x.location,0,nuevocentro)

Programación de scripts para animación en Blender 195


Transformaciones
Ejercicio: Solución
Ubicar los pivotes al personaje

Por último es escribir las instrucciones y limitaciones del


script como un comentario para que la persona que lo
vaya a usar sepa que puede hacer y qué no.

Para usar este script los pivotes de los objetos deben estar
en su correspondiente centro de la geometría.

Usar el script una sola vez en el personaje y luego cerrar


el script, si lo usa luego de haber fijado los orígenes estos
cambiarán de posición.

Programación de scripts para animación en Blender 196


Transformaciones
Cuestionario
¿Qué es pivote y cuál es su importancia?

¿Qué pasa si cambio el pivote de una esfera a su parte


inferior y escalo 0.5 unidades en el eje z?

¿Qué pasa si moviera el pivote de un objeto 5 unidades


en el eje z y rotara el eje x del objeto?

¿Que pasa si tengo varios objetos y quiero emparentarlos


de la siguiente forma A[b,c,d],B[c,d] sería correcto
realizar este emparentamiento?, describa qué ocurre.

¿Qué pasa si tengo el objeto A y B y emparento el objeto


B con el A y luego digo que un objeto C se emparente
con A, y luego digo que C sea el padre de A? describa lo
que ocurre.

Programación de scripts para animación en Blender 197


Transformaciones
Cuestionario: Solución
¿Qué es pivote y cual es su importancia?

El pivote es el punto donde rotan los objetos, la


importancia de este radica en que dependiendo como
ubique el pivote el objeto se va a trasladar, rotar o
escalar siempre teniendo como referente el punto
pivote.

¿Qué pasa si cambio el pivote de una esfera a su parte


inferior y escalo 0.5 unidades en el eje z?

La esfera se aplasta

¿Qué pasa si moviera el pivote de un objeto 5 unidades


en el eje z y rotara el eje x del objeto?

El objeto parece que se balanceara en el aire como si


estuviese en un columpio.

Programación de scripts para animación en Blender 198


Transformaciones
Cuestionario: Solución
¿Qué pasa si tengo varios objetos y quiero emparentarlos
de la siguiente forma A[b,c,d],B[c,d]? ¿sería correcto
realizar este emparentamiento?, describa qué ocurre.

Se puede realizar pero no daría el resultado esperado;


en el primer emparentamiento A sería padre de b, c y
d, pero al decirle que c y d sean padres de B, se
cambian y el padre de c y d pasa a hacer B.

¿Qué pasa si tengo el objeto A y B y emparento el objeto


B con el A y luego digo que un objeto C se emparente
con A, y luego digo que C sea el padre de A? describa lo
que ocurre.

A termina siendo el padre de B y C, y B termina


siendo el padre de C.

Programación de scripts para animación en Blender 199


Transformaciones
Rig

Hemos llegado al final de este capítulo. En el próximo


capítulo veremos rig y luego haremos que nuestros
scripts tengan interfaz para que el animador pueda
trabajar con ellos desde Blender.

Programación de scripts para animación en Blender 200


7
Capítulo
Rig

En este capítulo veremos que es el rig, su


funcionamiento, los conceptos importantes para poder
trabajar con ellos y qué es el emparentamiento de un
objeto con un armature.

Programación de scripts para animación en Blender 201


Rig
¿Qué es rig?

Es un objeto que me permite realizar articulaciones, el rig


se ubica dentro de la malla de un objeto para deformarlo
según su necesidad.

Programación de scripts para animación en Blender 202


Rig
¿Qué es rig?
Cabeza

Cola

Es posible generar a partir de este primer bone una


cadena de huesos, la regla es siempre generarlos a partir
de la cabeza.

Programación de scripts para animación en Blender 203


Rig
¿Qué es rig?

Cabeza

Hueso

Cola

A partir de la cabeza puedo generar una cadena de


huesos; es muy importante que el hueso o bone se cree
desde el origen, puesto que va a ser la base de todos los
huesos que se creen a partir de este.

Programación de scripts para animación en Blender 204


Rig
¿Qué es rig?

El origen es la coordenada (0,0,0)


He creado un hueso a partir de este, desde la
cabeza.

Programación de scripts para animación en Blender 205


Rig
Crear un bone en Blender

Para crear un Bone me situó en la ventana 3D,


presiono Barra Espaciadora y escribo armature

He creado un armature,
para borrarlo se borra
como cualquier elemento
en la escena de Blender

Programación de scripts para animación en Blender 206


Rig
Editar bone en Blender

Para editarlo
presiono en el
teclado Tab para
entrar en el
modo edición.

Para crear un Bone me sitúo en la ventana 3D


presiono, barra Espaciadora y escribo armature.

Programación de scripts para animación en Blender 207


Rig
Editar bone en Blender

Una vez aquí, selecciono la cabeza y


Presiono E y la tecla z, para que el
nuevo bone se cree alineado al eje z

Programación de scripts para animación en Blender 208


Rig
Editar bone en Blender

Estos son los


huesos hijos.

Programación de scripts para animación en Blender 209


Rig
Editar bone en Blender

Si vuelvo al modo objeto comprobaré que


todos son un solo objeto llamado armature

Programación de scripts para animación en Blender 210


Rig
Subdivisiones

Presionaré la tecla
T para d e s p l e g a r
el panel

En los programas 3D tengo la posibilidad de crear


objetos, pero también de subdividirlos; para ello
crearemos un objeto cubo y entraremos en el modo
edición, presionaré la tecla T para desplegar el panel,
luego selecciono el objeto, presionando la tecla A.

Programación de scripts para animación en Blender 211


Rig
Subdivisiones

Luego oprimiré en subdividir, observemos como el


objeto se ha subdivido en partes iguales

Programación de scripts para animación en Blender 212


Rig
¿Por qué las subdivisiones?

Esto viene del proceso llamado modelado, en el cual


tengo que modelar el objeto realizando subdivisiones y
técnicas de modelado para construir la pieza requerida.

Esta pieza luego se le pasa al rig, es por esto que por


ahora vamos a trabajar con un cubo subdividido para
hacer los ejemplos y ejercicios.

Programación de scripts para animación en Blender 213


Rig
Ubicando nuestro armature

Lo primero es crear un cube


y nombrarlo

Luego lo bloqueamos para que no pueda moverlo de la


posición en la que está, puesto que el armature es el que
permitirá que se mueva de ahora en adelante.

Programación de scripts para animación en Blender 214


Rig
Ubicando nuestro armature

Ahora entraremos al modo edición y subdividiremos 2


veces presionando en la opción subdividir.

Programación de scripts para animación en Blender 215


Rig
Ubicando nuestro armature

Vuelvo al modo objeto y creo un armature


presionando barra espaciadora y escribiendo
armature.

Programación de scripts para animación en Blender 216


Rig
Ubicando nuestro armature

Ahora me sitúo en la ventana propertiers con la


armature seleccionada y selecciono la casilla x-
Ray esto me permitirá activar el modo rayos x y
ver la armadura.

Programación de scripts para animación en Blender 217


Rig
Ubicando nuestro armature

Ubico los huesos como aparece en la imagen,


donde la cabeza de cada hueso está ubicada en una
arista.

Programación de scripts para animación en Blender 218


Rig
Ubicando nuestro armature

Vuelvo al modo objeto y observo que si desplazo la


armadura la malla queda en el lugar donde está, lo
que sucede es que no hemos emparentado la malla a
los huesos.

Programación de scripts para animación en Blender 219


Rig
Ubicando nuestro armature

Entonces tengo que hacer que el objeto sea hijo de la


armadura. Para ello selecciono el objeto y luego el
armature y los emparento seleccionando la opción.

Programación de scripts para animación en Blender 220


Rig
Mode pose

En el mode pose puedo posar a un objeto que


tenga un armature asociado, al girar los huesos
observo que ya deforma la malla.

Programación de scripts para animación en Blender 221


Rig
Skinning

El proceso que hicimos de manera automática se


llama skinning y es un proceso que se debe hacer con
extremo cuidado para que se pueda deformar como
se requiere.

Programación de scripts para animación en Blender 222


Rig
Skinnig

El skinning es el proceso mediante el cual se le dan pesos


a los diferentes huesos que tanto van a influir la malla; se
manejan los siguiente valores: rojo es 100%, amarillo es
50 % de influencia, azul es 0 % de influencia, el rig debe
combinar estos colores para que se deforme de manera
adecuada.

Programación de scripts para animación en Blender 223


Rig
Skinning

En este ejemplo le quité la mayoría de influencia al


objeto para ver como se comporta la malla, vemos
que se esta dañando al deformarse.

Programación de scripts para animación en Blender 224


Rig
Skinning

Bueno, no se va profundizar acerca del skinning, pero era


bueno que tuviesen al menos el concepto de cómo
funciona; en personajes más complejos el skinning
requiere de mucha paciencia y de realizar el cálculo
correcto para distribuir los pesos.

Programación de scripts para animación en Blender 225


Rig
Skinning

También como vemos en la imagen se pueden subdividir


los huesos.

Programación de scripts para animación en Blender 226


Rig
Reiniciando los bones
Para reiniciar la posición de los
huesos voy al modo pose y
selecciono todos los huesos
presionando A y presiono
Alt G = reinicia la traslación de
los huesos
Alt R = reinicia la rotación de
los huesos
Al S = reinicia la escala de los
huesos

El resultado es el que se muestra en la


imagen.

Programación de scripts para animación en Blender 227


Rig
Cinemáticas

Principalmente encontramos dos tipos de


cinemáticas, la cinemática directa y la cinemática
inversa.

Programación de scripts para animación en Blender 228


Rig
Cinemáticas

Cinemática directa: A pesar de que el hueso


principal es el padre, cada hueso puede rotar
por separado y todos los huesos de la cadena
no son afectados por este.

Programación de scripts para animación en Blender 229


Rig
Cinemáticas

Cinemática inversa: Si muevo un solo hueso de la


cadena todos los demás también van a ser afectados.

Programación de scripts para animación en Blender 230


Rig
Cinemáticas

En este curso no se pretende profundizar en las


cinemáticas, pero es necesario que se tenga el
concepto claro para entender la mecánica del
movimiento del rig. En este curso los personajes
solo tendrán cinemática directa.

Programación de scripts para animación en Blender 231


Rig
Script ubicando los bones

El archivo del ejemplo se encuentra en:

capitulos/6/ejemplos/1-ubicando los huesos mediante


script

Programación de scripts para animación en Blender 232


Rig
Script ubicando los bones

Código ubicando los bones con script.

Programación de scripts para animación en Blender 233


Rig
Ejercicio

En este ejercicio se requiere ubicar los huesos del


personaje, específicamente en cada una de sus aristas en
el eje z, nombrarlos y realizar los respectivos
emparentamientos; se deberá escribir el script y tomar los
respectivos pantallazos de su funcionamiento, posando el
personaje, para ello deben usar el archivo:

capitulos\6\ejemplos\2-personaje para el ejercicio

Programación de scripts para animación en Blender 234


Rig
Ejercicio: Solución
En este ejercicio se requiere ubicar los huesos del
personaje, específicamente en cada una de sus aristas en
el eje z, nombrarlos y realizar los respectivos
emparentamientos, se deberá escribir el script y tomar los
respectivos pantallazos de su funcionamiento, posando el
personaje.
Para resolver el ejercicio se utilizaron los ejemplos vistos
y se resolvió el problema, realizando un cálculo de la
base y altura del personaje para ubicar los huesos
exactamente en los centros del personaje, como se pedía
en el ejercicio,

El código con la solución completa la pueden encontrar


en:

capítulos/6/ejercicios/script ubicando los huesos del


cube

Programación de scripts para animación en Blender 235


Rig
Ejercicio: Solución

Programación de scripts para animación en Blender 236


Rig
Ejercicio: Solución

Captura posando al personaje Cube

Programación de scripts para animación en Blender 237


Rig
Cuestionario
¿Qué es rig?

¿Cuáles son los tipos de cinemáticas que conoce?

¿Qué es el skinning?

¿Qué es el mode pose?

Programación de scripts para animación en Blender 238


Rig
Cuestionario: Solución
¿Qué es rig?

Respuesta en la página de rig.

¿Cuáles son los tipos de cinemáticas que conoce?

Respuesta en la página de cinemáticas.

¿Qué es el skinning?

Respuesta en la página de skinning.

¿Qué es el mode pose?

Respuesta en la página de mode pose.

Programación de scripts para animación en Blender 239


Rig
Tableros de Control

Hemos llegado al final del capítulo, en el siguiente


capítulo veremos como agregar botones en la ventana de
Blender para ejecutar nuestros scritps, también
aprenderemos a crear tableros dentro de la ventana 3D
para controlar a nuestros personajes.

Programación de scripts para animación en Blender 240


8
Capítulo
Tablero de
Control

En este capítulo veremos como adicionar botones en la


interfaz de Blender para ejecutar nuestros scripts.

Programación de scripts para animación en Blender 241


Tablero de control
Comunicando código-ventanas

La idea es que nuestro código en Python tenga un botón


con el cual podamos ejecutar el script creado. Para ello
solo vamos a ver algo muy básico con respecto a la
ubicación de un botón con etiqueta en una de las
cabeceras de Blender.

Programación de scripts para animación en Blender 242


Tablero de control
Comunicando código-ventanas

El código me permitiría crear un botón en la cabecera UI


en la ventana 3D de Blender, pero hasta ahora el botón
no tiene ninguna instrucción asignada, solo mostraría el
botón y me permite pulsarlo.
El archivo del ejemplo lo podemos encontrar en:

capitulos/7/ejemplos/1- Relacionando ventanas con el


código

Programación de scripts para animación en Blender 243


Tablero de control
Ejemplo acción de botón
En esta ventana podemos apreciar que al agregar en la
definición
def execute(self,context):
Print(“Hola Blender”)
return {“FINISHED”}

El resultado será el siguiente, me imprime el texto: hola


Blender en consola.

Programación de scripts para animación en Blender 244


Tablero de control
Ejemplo acción de botón

Vamos a hacer que el cubo se desplace al presionar el


botón ADELANTE

El archivo del ejemplo lo podemos encontrar en:


capitulos/7/ejemplos/2-moviendo_objeto_con_boton_

Programación de scripts para animación en Blender 245


Tablero de control
Ejemplo acción de botón
Para realizar dicha instrucción solo cambiamos la línea
de print y la cambiamos por la instrucción
bpy.data.objects["Cube"].location.x += 1
observamos que esta ahí, es la forma simple de desplazar
el objeto asignándole un valor, con la variación de que
agrego un + antes del igual para que se haga un
incremento en el desplazamiento del objeto en el eje x;
con esto conseguimos que el objeto se desplace en el eje
x cada vez que oprimimos el botón adelante.

Programación de scripts para animación en Blender 246


Tablero de control
Ejercicios

Cree para el ejercicio del capítulo 5 del personaje de


pivotes un botón para activar el script y otro botón
adicional para reiniciar los pivotes al origen respectivo.

Cree para el ejercicio del capítulo 6 un botón para


generar automáticamente el rig del cube.

Programación de scripts para animación en Blender 247


Tablero de control
Ejercicio: Solución
Para realizar la solución reutilizaré los códigos ya
realizados; así que me limitaré a explicar cómo
incorporar el código para ejecutar la acción. Se procede
como en los ejemplos, primero creo una clase para
agregar la etiqueta del panel y especificar la región en la
cual deseo ubicar mi panel:
bl_label
bl_space_type
Bl_region_type
Luego dibujaré los 2 botones que requiero para realizar
las acciones de ejecutar mi script de la siguiente manera
Def draw(self,context):
Self.layout.operator();
Lo importante de los argumentos que se deben escribir
son el id del botón y el texto que queremos agregar en el
botón .

Luego solo resta crear las dos clases que se encargarán de


los eventos de la acción del botón. Creo 2 variables
bl_idname que especifican el id del botón del cual se
ejecutará.

Programación de scripts para animación en Blender 248


Tablero de control
Ejercicio: Solución

Pueden observar en la imagen lo explicado anteriormente


para ubicar y dibujar los botones.

Programación de scripts para animación en Blender 249


Tablero de control
Ejercicio: Solución
Luego hacemos lo mismo con la etiqueta del botón
Bl_label y agregamos el nombre que queremos para el
botón .
Luego creamos una definición:
def execute (self,context)
Aquí debemos agregar la acción que se quiere para el
botón y luego solo copiamos y pegamos el script del
ejercicio del personaje de pivotes realizado anteriormente
y me cercioro que todo el código que inserte esté
debidamente identado; la única línea que agregaremos al
principio después del primer if será la siguiente, para
asegurarme que ningún elemento en la escena este
seleccionado:

Por último para terminar la primera acción del botón


debemos escribir:
return {“FINISHED”}
retorna el resultado de la ejecución.

Programación de scripts para animación en Blender 250


Tablero de control
Ejercicio: Solución

Para realizar la acción de reiniciar los pivotes hice lo que


aparece en la imagen:
bpy.ops.object.select_all(action='TOGGLE')
Me permite seleccionar todos los objetos de la escena.
Luego escribo:
bpy.ops.object.origin_set(type='ORIGIN_GEOMETRY')
Que devolverá todos los objetos en la posición original
bpy.ops.object.select_all(action='DESELECT')

Por último deselecciono todos los objetos para que no


haya problema a la hora de realizar la operación
nuevamente de acomodar los pivotes.

Programación de scripts para animación en Blender 251


Tablero de control
Ejercicio: Solución

El script en ejecución desde la ventana de Blender

Programación de scripts para animación en Blender 252


Tablero de control
Ejercicio: Solución

Procedo a crear el botón que genera el rig del personaje


automáticamente. Para ello repito los pasos exactamente
como procedí para generar el script del personaje de
pivotes,

el archivo con la solución lo pueden encontrar en:

capitulos/7/ejercicio/boton_para_ejercicio_personaje_6
Programación de scripts para animación en Blender 253
Tablero de control
Ejercicio: Solución

El resultado es un botón que me genera la cadena de


huesos automáticamente y ya solo queda proceder a
realizar el skinning visto en el capítulo 6, para empezar a
posar al personaje.

Programación de scripts para animación en Blender 254


Tablero de control
Restricciones
Las restricciones me permiten limitar los
desplazamientos, rotaciones o escalas en Blender de los
objetos en escena, lo que es ideal a la hora de preparar un
personaje para animación, así como también realizar
controles para facilitar al animador realizar su tarea. Una
de las formas de realizar esto es situarnos en los
candados de los ejes que se quieren restringir de la
traslación, rotación y escala y presionar los que se
quieren restringir, en este ejemplo he restringido y, y z

Programación de scripts para animación en Blender 255


Tablero de control
Restricciones
Aunque restringir los ejes es útil, no basta para tener un
control total de nuestro objeto, puesto que no podemos
limitar nuestro objeto, para que se desplace en un rango
específico; para ello existen otro tipo de restricciones.
En este curso solo abordaremos una que será suficiente
para lo que se pretende en el curso.

Programación de scripts para animación en Blender 256


Tablero de control
Restricciones
Agregando limit location

Para agregar una restricción limit location, en este caso


en el desplazamiento, debemos seleccionar el objeto el
cual vamos a restringir y con anterioridad bloquear todas
las transformaciones que no se van a utilizar; entonces
podemos apreciar en la imagen que solo no bloqueé el
desplazamiento en el eje x, así mismo también voy a
bloquear todos los objetos que no deseo manipular como
la etiqueta de control, la barra roja por donde se
desplazara el cubo y todos los elementos que no vaya a
mover.

Programación de scripts para animación en Blender 257


Tablero de control
Restricciones
Agregando limit location

Luego selecciono el
cubo y con el cubo
seleccionado me sitúo
en el panel de
propiedades y busco
la opción Constraints.

Selecciono la opción limit location

Programación de scripts para animación en Blender 258


Tablero de control
Restricciones
Agregando limit location

Nos aparecerán las siguientes opciones que vamos a


configurar para limitar el rango del desplazamiento en un
eje, en este caso el eje x.

Programación de scripts para animación en Blender 259


Tablero de control
Restricciones
Agregando limit location

Así que activo las opciones Minimun x y Maximum x y


escribo el valor del rango en el cual el objeto se va a
poder desplazar.

Ahora cambiamos las coordenadas a local space para que


el objeto tenga presente que se va a desplazar siempre
teniendo en cuenta las coordenadas desde su localización
actual.

Programación de scripts para animación en Blender 260


Tablero de control
Restricciones
Agregando limit location

La influencia la dejamos en 100 % y listo, ya tendríamos


un control que solo se puede desplazar en el rango de
valores que le dimos.

El archivo del ejemplo lo podemos encontrar en:

capitulos\7\ejemplos\3-restriccion sencilla
Programación de scripts para animación en Blender 261
Tablero de control
Restricciones
Script limit location

El archivo del ejemplo lo podemos encontrar en:


capitulos\7\ejemplos\5-script restriccion sencilla

Programación de scripts para animación en Blender 262


Tablero de control
Restricciones
Script agregando limit location
Bien ahora vamos a usar nuestro control, para controlar
la rotación de un objeto. Para ello vamos a agregar otro
constraint, pero ya no al control, sino al objeto
controlado y será de tipo transform.

En Target agregamos el objeto


control que es el que controlará el
brazo del personaje; al activar la
opción extrapolate al desplazarse
el objeto, se suceden los cambios
en el objeto controlado, en tiempo
real; luego seleccionamos de qué
manera va a controlar el objeto.
En este caso el desplazamiento en
x, agregamos los mismos valores
que en la restricción previamente
creada para el control.

Programación de scripts para animación en Blender 263


Tablero de control
Restricciones
Transform constraint

Aquí modificamos las siguientes opciones: lo único que


me interesa para este ejemplo es que cuando se desplace
en x el objeto rote en y; así que los demás valores los
dejo como están pero le voy a decir que en vez de x en el
source necesito que sea x y el destino y.

El archivo del ejemplo lo podemos encontrar en:


Capítulos/7/ejemplos/4-restriccion especifica

Programación de scripts para animación en Blender 264


Tablero de control
Restricciones
Transform Constraint
Para terminar le digo
que puede rotar en y en
el rango de 60 a –60 y
cambio el valor de
ambos tanto del control
c o mo d e l o b j e to
controlado a Local
Space.

El resultado es que al
desplazar el control el
brazo va a girar .

Programación de scripts para animación en Blender 265


Tablero de control
Restricciones
Script transform constraint

El archivo del ejemplo lo podemos encontrar en:


Capítulos/7/ejemplos/6-script especifica

Programación de scripts para animación en Blender 266


Tablero de control
Restricciones
Script transform constraint

Programación de scripts para animación en Blender 267


Tablero de control
Ejercicio

Para este ejercicio se requiere realizar un script en el cual


pueda hacer que la cabeza de un personaje gire a los
lados, además se requiere crear un control que limite los
grados de rotación de los lados, el script debe ser
activado por un botón, especificar al animador que debe
estar en modo pose y seleccionar el hueso cabeza para
aplicar el script de manera correcta, así mismo un botón
que automáticamente me realice la restricción del control
que me permite controlar esta acción, para realizar el
ejercicio deben abrir el archivo:
Capítulos/7/ejercicios/7-personaje para ejercicio

Programación de scripts para animación en Blender 268


Tablero de control
Ejercicio: Solución
Bueno para resolver el ejercicio es necesario tener muy
presente este capítulo y lo visto anteriormente, lo primero
es leer bien lo que se pide para resolver este problema y
pensar primero en la lógica del script antes de realizar las
acciones de los botones, lo primero es el eje en el que
debe rotar .

Al girar el hueso de la cabeza observo que el eje con el


cual gira la cabeza hacia los lados es el eje z, entonces
quiere decir que al desplazar mi control en x se deberá
girar en z para que la cabeza se mueva hacia los lados.
La solución del ejercicio la podemos encontrar en:
capitulos/7/ejercicios/controles_y_restriccion_personaje

Programación de scripts para animación en Blender 269


Tablero de control
Ejercicio: Solución

Teniendo eso claro procedo a configurar el control, para


ello me baso en los ejemplos ya establecidos; por eso no
explicaré cómo configurarlo, puesto que la solución se
encuentra en los ejemplos del capítulo.

Programación de scripts para animación en Blender 270


Tablero de control
Ejercicio: Solución

Ahora procedo a realizar el script para controlar la


cabeza; lo primero que voy a hacer es crear una variable
que me permita obtener la armadura, luego voy a obtener
el hueso que me interesa controlar, después voy a decirle
que al hueso que está activo se le agregue un constraint
de transformación, luego le digo que vaya a mode pose, y
que seleccione el hueso de la cabeza que está dentro del
armature el cual tiene un constraint y se lo agregue al
hueso.

Programación de scripts para animación en Blender 271


Tablero de control
Ejercicio: Solución

Luego procedo a configurar las opciones del constraint


TRANSFORM.

Programación de scripts para animación en Blender 272


Tablero de control
Ejercicio: Solución
Si observan, la única diferencia del ejemplo es que
necesito decirle a Blender que obtenga la información
dentro del armature del hueso que quiero controlar. Lo
demás se procede igual y tengo en cuenta el mapeo,
porque lo que quiero es que la traslación del objeto en x
del control, controle la rotación en y del hueso de la
cabeza. Para la configuración del control procedo de la
misma manera como lo pueden apreciar en la imagen,
solo hay que tener en cuenta que los valores min z y y
max rot debo escribirlos en radianes para obtener el
ángulo especifico.

Programación de scripts para animación en Blender 273


Tablero de control
Ejercicio: Solución
En este caso los valores que escribí serían 30 y –30
grados respectivamente.

Luego ambos códigos, tanto el de la restricción del botón


como la configuración del objeto, los agrego en dos
botones por separado como se indica en los ejemplos de
crear botones y realizar acción de botón y ejecuto el
script.

Programación de scripts para animación en Blender 274


Tablero de control
Ejercicio: Solución
El resultado se muestra en la imagen; para usar los
botones procedo de la siguiente manera: restrinjo el
botón seleccionándolo y presionando restringir control, y
luego me sitúo en el mode pose y selecciono hueso 1 y
presiono configurar control.

Programación de scripts para animación en Blender 275


Tablero de control
Cuestionario
¿Que es un tablero de control?

¿Qué es una restricción ?

¿Por qué es importante a la hora de preparar los


personajes en la animación?

Describa los pasos para incorporar el script en Blender

Según lo que ha aprendido en el capítulo, ¿por qué es


importante restringir la movilidad de los controles?

Si se tiene una pelota, describa cuáles serían las


restricciones más adecuadas a la hora de realizar un rig,
si se requiere para la escena que esta se aplaste y se
estire, que se traslade y gire. Describa los botones que
crearía y los controles para dicho fin, ¿cuántos controles
utilizaría?

Programación de scripts para animación en Blender 276


Tablero de control
Cuestionario: Solución
¿Que es un tablero de control?

La solución está en el principio del capítulo.

¿Qué es una restricción?

La solución está en el principio del capítulo.

¿Por qué es importante a la hora de preparar los


personajes en la animación?

Porque me ayuda a tener mayor control a la hora de


animar.

Describa los pasos para incorporar el script en Blender

Esta respuesta se encuentra en los ejemplos de


agregar un botón en Blender.

Programación de scripts para animación en Blender 277


Tablero de control
Cuestionario: Solución
Según lo que ha aprendido en el capítulo, ¿por qué es
importante restringir la movilidad de los controles?

Para tener un rango específico del movimiento de una


de las partes del personaje.

Si se tiene una pelota, describa cuáles serían las


restricciones más adecuadas a la hora de realizar un rig,
si se requiere para la escena que esta se aplaste y se
estire, que se traslade y gire; describa los botones que
crearía y los controles para dicho fin, ¿cuántos controles
utilizaría?

Bueno, con lo visto anteriormente lo importante


siempre es analizar lo que se quiere; en este caso lo
que se pide es que la pelota se traslade, rote y escale,
por ello podría tener un control que me permita
restringir la escala; si la pelota se aplasta o se estira,
podría tener un control para que la pelota pueda
girar y uno más para que la pelota al tocar el suelo no
se pase de éste.

Programación de scripts para animación en Blender 278


Tablero de control
Onion Skinnig

El próximo capítulo tratará sobre un proyecto para


realizar un script, que pueda facilitar la tarea al animador
creando una herramienta llamada Onion Skinning.

Programación de scripts para animación en Blender 279


Capítulo
Proyecto:
Onion Skinning 9
Realizaremos una herramienta para facilitar el trabajo del
animador y pondremos en práctica todo lo aprendido
hasta el momento.

Programación de scripts para animación en Blender 280


Onion Skinning
Acerca del proyecto

Vamos a desarrollar paso a paso un script para Blender


que permita crear una especie de papel cebolla, para que
el animador pueda ver varias poses de manera
consecutiva y tomar decisiones respecto a la animación
que se encuentre realizando, pero vamos a explicar
primero por qué esto es importante. En la imagen
podemos apreciar una serie de poses realizadas para
tomar decisiones con respecto al personaje, pero en el
programa 3D solo puedo ver una pose no las tres al
mismo tiempo.
Programación de scripts para animación en Blender 281
Onion Skinning
Acerca del proyecto
Lo ideal sería ver las tres al mismo tiempo y todas las
poses que se requieran para tomar decisiones a la hora de
animar. Blender ya permite realizar este tipo de cosas
pero con una limitante, que explicaremos a continuación.

Programación de scripts para animación en Blender 282


Onion Skinning
Acerca del proyecto

Usaré la geometría sin rig y crearé dos keyframes para


que la jarra se desplace de un punto a otro en el eje x;
para activar el Onion Skinn debo dirigirme a
propiedades, seleccionar en la opción start y end el rango
de poses que quiero que se muestren y luego presiono en
el botón calculate.

Programación de scripts para animación en Blender 283


Onion Skinning
Acerca del proyecto

Luego me sitúo en el botón Frames y voy a poder ver las


poses del desplazamiento de la jarra.

Programación de scripts para animación en Blender 284


Onion Skinning
Acerca del proyecto
Lo que no ocurre cuando la geometría tiene un rig,
puesto que la información de las deformaciones en la
malla y las poses han sido construidas al mover los bones
del armature, por ende la malla no tiene keyframes.

Los keyframes
estarían en el
armature.

Programación de scripts para animación en Blender 285


Onion Skinning
Acerca del proyecto

Y al presionar el cálculo para ejecutar el onion skinning


no ocurriría nada puesto que la malla no tiene los
keyframes sino el armature.

Programación de scripts para animación en Blender 286


Onion Skinning
Acerca del proyecto

Entonces, ¿cómo realizar una solución para crear un


script que me permita ver la malla que deforma el
armature y así facilitar el trabajo del animador al crear las
poses?, trabajando como trabajaban los animadores
clásicos, usando la técnica de Onion Skinning.

Programación de scripts para animación en Blender 287


Onion Skinning
Planteamiento

Para ello se plantea una posible solución a esta limitante


y es crear un script que trabaje como si fuese la técnica
de onion skinning; el script va a contener tres botones;
uno para capturar todas las keyframes del personaje, otro
para mostrar las keyframes y uno para borrar las
keyframes de la cámara; también una caja de texto para
que el animador elija las poses que quiere ver, pero antes
va a requerir que el animador ya haya creado al menos un
keyframe en los bones del armature en la línea de tiempo,
también la cámara debe estar activa, puesto que los
animadores trabajan siempre para la vista de la cámara, y
en esta vista deberán aparecer las poses que escribió en la
caja de texto.

El archivo lo pueden encontrar en:

capitulos\8\onion skinning

Programación de scripts para animación en Blender 288


Onion Skinning
Pensando en la solución

Es necesario para esto, entender muy bien lo que vamos a


hacer; partiendo de esto, es necesario saber cómo se
utiliza y para qué fin; para esto vamos a explorar un poco
la vista cámara, que es la que nos va a mostrar la imagen
final de mi animación, y el animador por eso siempre
trabaja para la cámara .

Programación de scripts para animación en Blender 289


Onion Skinning
Pensando en la solución

Para activar la cámara


seleccionamos la cámara
y presionamos Ctrl 0.

La cámara nos
muestra lo que ella
esta viendo.

Programación de scripts para animación en Blender 290


Onion Skinning
Pensando en la solución
Entonces lo segundo es pensar como puedo mostrar las
diferentes poses; hemos visto como crear un keyframe
para guardar la información de la locación, rotación y
escala, queremos hacer que esas distintas poses que ha
creado el animador las pueda visualizar para tomar
decisiones y que le ayuden en el proceso de la animación.

Programación de scripts para animación en Blender 291


Onion Skinning
Pensando en la solución
Usaré el personaje de la jarra para hacer la animación de
un simple salto y les dejaré el archivo también de otro
personaje para probar el script.

El archivo lo pueden encontrar en:


capitulos\8\personaje silla
Programación de scripts para animación en Blender 292
Onion Skinning
Pensando en la solución
Bien entonces observaré que mi dopesheet ya tiene las
keyframes de mi animación.

Ahora quiero poder ver las keyframes que el animador


elija y mostrar varias al mismo tiempo, algo que no
puedo hacer en estos momentos; además quiero ver solo
las keyframes y no los frames. Voy a ir explicando de
manera general el problema y después con todo lo que
han aprendido pueden revisar el script completo en el
archivo .blend.
Programación de scripts para animación en Blender 293
Onion Skinning
Desarrollando la solución

Para ello lo primero es valernos y agradecer a las


personas que realizaron los códigos que nos van ayudar a
que nuestro programa haga lo que se requiere, los cuales
he modificado para lograr la finalidad del proyecto.

Programación de scripts para animación en Blender 294


Onion Skinning
Desarrollando la solución

https://blender.stackexchange.com/questions/1718/is-it
-possible-to-render-only-keyframes-from-dope-sheet
Este algoritmo me permite guardar los frames que esté
viendo la cámara y que el armature del personaje esté
seleccionado, pero para nuestro proyecto vamos a
necesitar modificarlo, pues quiero que solo exporte
formato png en alfa, es por esto que modifiqué el código
para que solo exporte png, para que capture las poses del
personaje sin fondo y para que guarde únicamente los
keyframes que ha creado el animador.

Código recuperado de
https://blender.stackexchange.com/questions/1718/is-it-possible-to-render-only-keyframes-from
-dope-sheet

Programación de scripts para animación en Blender 295


Onion Skinning
Desarrollando la solución
El va a preguntar por las keyframes y va a guardar las
keyposes con la siguiente característica.

Le estoy diciendo que realice la captura y el guardado de


las keyframes en formato png, luego le digo que cada una
de las keyposes me las guarde sin fondo, que quiero que
tenga una calidad de 30 porciento y por último le digo
que lo guarde RGBA para que me conserve la
transparencia de las keyposes; otro aspecto importante
aquí es darle la ruta para guardarlas de la siguiente
manera, deben tener el mismo nombre de la keypose.

Es por esto que estoy formando una cadena, donde la


variable f contiene los frames y la extensión .png para
asegurarme que me guarde cada una de las keyposes con
el número del frame, str(f), es para convertir este valor en
un string.
Programación de scripts para animación en Blender 296
Onion Skinning
Desarrollando la solución

Estas últimas líneas se van a encargar de verificar que se


hayan seleccionado los elementos de los keyframes, y
validar que el proceso de render se pueda efectuar de
manera satisfactoria.

Programación de scripts para animación en Blender 297


Onion Skinning
Desarrollando la solución

Ahora vamos a proceder a obtener estas keyposes y


mostrarlo en la cámara activa, para lo cual, lo primero
que haré es obtener el valor de las keyframes, que el
animador va a poder escribir en un campo de texto
separadas por comas, luego tomo este valor y uso la
instrucción.

Val.split(“,”) para guardar cada uno de los keyframes


separados por comas.

Programación de scripts para animación en Blender 298


Onion Skinning
Desarrollando la solución

Luego procedo de la siguiente manera: hago un ciclo que


me permita recorrer el arreglo y obteniendo cada una de
las keyposes en la ruta especifica.

Programación de scripts para animación en Blender 299


Onion Skinning
Desarrollando la solución

Luego las cargo en la vista 3d de la siguiente manera:


hago un for en el cual voy a recorrer
bpy.context.screen.areas, puesto que quiero ubicarme en
la VIEW_3D, creo una variable space_data y guardo la
vista activa donde se van a visualizar las keyframes.

Programación de scripts para animación en Blender 300


Onion Skinning
Desarrollando la solución

En estos momentos me encuentro ubicado en estas


opciones cuando me refiero a background_image.new se
refiere que va a crear una imagen por cada keyframe.

Programación de scripts para animación en Blender 301


Onion Skinning
Desarrollando la solución

Las siguientes dos instrucciones se refieren a activar la


opción background images y a guardar el elemento
creado como una imagen por separado.

Por último esta instrucción fija el elemento imagen en la


vista cámara.

Programación de scripts para animación en Blender 302


Onion Skinning
Probando la solución

Solo queda agregar toda la lógica en componentes y


agregarlos en la ventana de Blender, en este caso he
optado en algo como esto.

Ahora es necesario que presionen el botón actualizar y el


procederá a guardar todas las keyposes del personaje,
para ello primero es necesario seleccionar el armature.
Programación de scripts para animación en Blender 303
Onion Skinning
Probando la solución

Entonces escribo las keyframes que el animador desea


ver en el campo de texto, mostrar pose keyframe,
separados por comas.

Programación de scripts para animación en Blender 304


Onion Skinning
Probando la solución
En la imagen podemos ver el Onion Skinnig
funcionando, por último y no menos importante es como
eliminar las imágenes del Onion Skinning.

Programación de scripts para animación en Blender 305


Onion Skinning
Probando la solución

Este código fue modificado para limpiar las keyposes y


volver a visualizar otras keyposes que se desean ver.

Código de Nikita Gorodetsky recuperado de


https://github.com/nortikin/nikitron_tools/blob/master/bgimage_shower.py

Programación de scripts para animación en Blender 306


Materia Extra
Mini Juego en Blender

En el último capítulo veremos material adicional, el cual


les servirá para seguir aprendiendo y fortaleciendo todo
lo visto en el curso; así también elementos esenciales
para realizar animaciones con más detalles y también
como realizar un minijuego con el motor de juegos
Blender Game.

Programación de scripts para animación en Blender 307


Capítulo
Material
Extra 10
En este capítulo se mostrarán de manera general,
elementos que nos pueden ayudar a preparar al personaje
para realizar una animación; también se propondrá un
ejercicio para realizar los controles necesarios para
realizar un minijuego.

Programación de scripts para animación en Blender 308


Material Extra
Ejercicio
Para este ejercicio se requiere
realizar un script en el cual se
pueda hacer que el personaje
suba y baje hasta tocar el suelo;
para que este no lo atraviese y
se pueda animar el personaje
como si estuviese saltando en el
suelo, se requiere crear un
control que limite esta acción y
que el personaje suba a una
altura determinada de 5
unidades hacia arriba. El script
debe ser activado por un botón,
especificar al animador que
debe estar en modo pose y seleccionar el hueso control
desplazamiento para aplicar el script de manera correcta,
así mismo un botón que automáticamente me realice la
restricción del botón, el archivo para realizar el ejercicio
del personaje lo pueden encontrar:
capitulos/9/ejemplos/0-personaje para ejercicio

Programación de scripts para animación en Blender 309


Material Extra
Ejercicio: Solución

Como el ejercicio se puede resolver entendiendo los


ejemplos y ejercicios del capitulo 8, no explicaré la
solución. Solo diré que lo importante es entender la
localización precisa, cuando el personaje está en el suelo
y partiendo de allí, delimitar hasta donde subiría, es
decir, cuál sería la altura máxima permitida.

Pueden encontrar el archivo de la solución en:

capitulos\9\ejercicio\controles para el personaje jarra


Programación de scripts para animación en Blender 310
Material Extra
Controles en vez de huesos

Realmente los animadores no manipulan huesos sino


controles, como si de un personaje de videojuegos se
tratase; vamos a usar el personaje del ejemplo para
cambiar los huesos por controles, que faciliten la tarea y
la comprensión de la función que debe realizar una parte
del personaje.

Programación de scripts para animación en Blender 311


Material Extra
Controles en vez de huesos

Entonces en vez de ver los huesos, vamos a hacer que se


muestren las figuras que queremos que se vean a la hora
de mover nuestro personaje; para este ejemplo utilizaré el
personaje de la jarra, pero solo cambiaré un hueso para
dar el ejemplo de cómo se hace. Podrían practicar
haciendo los demás controles y buscando cuáles son las
formas más adecuadas para representar los controles a la
hora de realizar las diferentes transformaciones.
Programación de scripts para animación en Blender 312
Material Extra
Controles en vez de huesos
Lo primero que tengo que
hacer es dibujar la forma
que quiero para mi control
en el origen.

Le doy un nombre para poder identificarlo fácilmente. En


este caso lo llamaré desplazamiento.

Luego en el pose mode


selecciono el hueso
control.

El archivo del ejemplo lo puedo encontrar en:


capitulos\9\ejemplos\1-material_extra_controles
Programación de scripts para animación en Blender 313
Material Extra
Controles en vez de huesos

Luego me voy a propiedades en la opción bone, busco la


casilla custom shape.

Allí escribo o selecciono


del menú desplegable el
nombre de la forma
creada y listo.

Programación de scripts para animación en Blender 314


Material Extra
Controles en vez de huesos

Ahora lo recomendable es que oculte la figura que he


creado para que no sea manipulada por el animador,
siempre que quiera cambiar la forma puedo volver a la
figura y modificarla.

Programación de scripts para animación en Blender 315


Material Extra
Shapekeys
ShapeKeys me permite deformar la
geometría interna de la malla y
guardar el estado de la forma original
y la forma final; el resultado es que al
desplazar el control del ShapeKeys me
deformará la malla de la geometría.

Geometría
original

Ahora con el objeto


seleccionado me voy a
la opción object data.

El archivo del ejemplo lo podemos encontrar en:


capitulos/9/ejemplos/2-shapekeys

Programación de scripts para animación en Blender 316


Material Extra
Shapekeys
Allí me aparecen varias opciones. Busco el título Shape
Keys, ahora me sitúo en el + y lo presiono, observaré que
me aparece un cubo con una llave y allí puede leerse
Basis, lo que quiere decir que en este momento se ha
guardado el estado inicial de la malla.

Presiono el + y me crea otro


shape keys con un rango de
0.000 y varias opciones más,
pero para este ejemplo solo
me interesa la barra value.

Programación de scripts para animación en Blender 317


Material Extra
Shapekeys
Ahora cambiaré el nombre por deformar cabeza,
presionando doble clic en el Shape Key creado.

Ahora voy a EDIT MODE con el objeto seleccionado y


escalaré y subiré un poco la cabeza del personaje hacia
arriba.

Programación de scripts para animación en Blender 318


Material Extra
Shapekeys

Ahora volveré al OBJECT MODE y desplazaré el valor


de la barra value, observaré que la cabeza se empieza a
deformar .

Programación de scripts para animación en Blender 319


Material Extra
Shapekeys

Esto lo puedo animar cambiando o alternando entre los 2


estados.

Programación de scripts para animación en Blender 320


Material Extra
Shapekeys y controles

En este apartado no voy a explicar como se hace, puesto


que es necesario abordar elementos más avanzados, pero
sí dejaré imágenes de un ejemplo de lo que se puede
lograr;

También dejaré el archivo en:


capitulos/9/ejemplos/3-shapekeysycontroles

Programación de scripts para animación en Blender 321


Material Extra
Shapekeys y controles

Programación de scripts para animación en Blender 322


Material Extra
Minijuego en Blender
Conceptos importantes del juego

La idea es dar un panorama muy general de lo necesario


para realizar un minijuego en Blender; es por esto que se
va a usar el personaje de la jarra, para lo cual se
realizaron tres animaciones y se configuraron para que
tengan movilidad a la hora de presionar determinadas
teclas en el teclado; también, como activar las
animaciones a la hora de presionarlos.
El archivo del ejemplo lo podemos encontrar en:
capitulos\9\ejemplos\4-minijuego
Programación de scripts para animación en Blender 323
Material Extra
Minijuego en Blender
Conceptos importantes del juego

Lo primero es hablar del motor de videojuegos de


Blender, al presionar en la opción de menú superior, ya
estaríamos accediendo al motor de videojuegos de
Blender.

Programación de scripts para animación en Blender 324


Material Extra
Minijuego en Blender
Conceptos importantes del juego

Ahora para acceder a las opciones para que nuestro


motor de juego reconozca nuestros objetos en el mundo
del juego, debemos seleccionar el objeto y situarnos en
las opciones de Physics; por lo general siempre se realiza
un ejemplo con una primitiva básica, en este caso usaré
un cubo.

Programación de scripts para animación en Blender 325


Material Extra
Minijuego en Blender
Conceptos importantes del juego

También creé un piso para que nuestro cubo se pueda


parar.

Programación de scripts para animación en Blender 326


Material Extra
Minijuego en Blender
Conceptos importantes del juego
Para el cubo voy a decirle la siguiente configuración:
selecciono la opción dynamic, para que el objeto pueda
ser afectado por la gravedad y reconozca a los otros
objetos en el videojuego; si en estos momentos presiono
la tecla P el cubo caería, pero atravesaría el suelo, puesto
que todavía este no ha sido configurado.

Programación de scripts para animación en Blender 327


Material Extra
Minijuego en Blender
Conceptos importantes del juego

Ahora selecciono el suelo y agrego la siguiente


configuración. Escojo la opción Static, la cual le dará la
propiedad de ser un objeto inmóvil, pero que reconoce
que hay otros objetos en el juego, y cuando el personaje
caiga por acción de la gravedad este impedirá que siga
cayendo.

Programación de scripts para animación en Blender 328


Material Extra
Minijuego en Blender
Conceptos importantes del juego

Ahora ya tenemos los elementos básicos para empezar a


desarrollar el juego; entonces prosigamos diciendo al
cubo que cuando presione las teclas en el teclado, el cubo
se desplace. Para eso, vamos a la opción Logic Editor

Programación de scripts para animación en Blender 329


Material Extra
Minijuego en Blender
Mover el cubo
Allí encontramos tres elementos: sensores en el cual
puedo elegir que al presionar una tecla ocurra un evento.
Controller me permite escoger expresiones lógicas. En
este caso vamos a usar el AND, y el último es el
Actuators el cual me permite decirle al cubo que se va a
mover las unidades que desee en el eje que elija,
seleccionando la opción Motion.

En este caso seleccioné un Sensor keyboard y seleccioné


la tecla UP y luego en Controller, le digo que va a ser un
operador lógico AND y por último selecciono que al
presionar la tecla y al cambiar la posición en el eje x se
desplace el cubo 0.10 unidades.

Programación de scripts para animación en Blender 330


Material Extra
Minijuego en Blender
Mover el cubo

Y lo mismo sería para que el cubo se mueva hacia atrás, a


los lados y salte. Luego de esto al presionar P ya voy a
poder desplazar al personaje con la teclas del teclado.
Bien, ahora vamos a agregar el personaje de la jarra para
que se pueda mover con las teclas; lo primero es
emparentar el armature de la jarra con el cubo.

Programación de scripts para animación en Blender 331


Material Extra
Minijuego en Blender
Mover el cubo

Al emparentar el cubo con el armature ya podría


desplazar el cubo con el personaje.

Programación de scripts para animación en Blender 332


Material Extra
Minijuego en Blender
Mover el cubo

Pero para no tener inconvenientes con los tres objetos


juntos, es decir, la geometría del personaje, el armature y
el cubo, debo configurar adecuadamente el armature y la
geometría del personaje, de la siguiente manera: para la
geometría hice la siguiente configuración, le voy a decir
que no sea detectable por el motor de videojuegos, pero
que se pueda ver el personaje.

Programación de scripts para animación en Blender 333


Material Extra
Minijuego en Blender
Mover el cubo
Al Armature del personaje le
voy a agregar la siguiente
configuración; puesto que el
armature por defecto no
aparece en el motor de
videojuegos no es necesario
hacerlo invisible, pero sí es
necesario decirle que no sea
detectado por el motor de
videojuegos

Ahora modifiquemos una propiedad más en el Cubo; voy


a decirle que ya no sea visible, pues me interesa que se
vea el personaje pero no el Cubo en el videojuego.

Programación de scripts para animación en Blender 334


Material Extra
Minijuego en Blender
Ciclos de animación

Ahora, si presionamos P, tenemos al personaje


desplazándose totalmente rígido, puesto que no se ha
realizado ninguna animación. Es por esto que antes de
seguir con la programación del juego, debemos hacer las
animaciones primero. Puesto que se trata de un juego, es
necesario que las animaciones se hagan en el puesto, sin
desplazar el personaje.

Programación de scripts para animación en Blender 335


Material Extra
Minijuego en Blender
Ciclos de animación

La clave para que el ciclo de animación quede bien es


que tanto al inicio como al final se tenga la misma pose.

Programación de scripts para animación en Blender 336


Material Extra
Minijuego en Blender
Ciclos de animación
No voy a explicar cómo realizar las animaciones, pero sí
cómo vincularlas a nuestro juego. Lo primero, es que
cada una de las animaciones sea una action; para crear las
acciones debo ir a esta opción.

Y luego creo una acción en este caso, la llamé caminar.


Para que quede guardada es necesario presionar la F.

He creado tres animaciones, caminar, saltar y reposo; ya


habiendo creado las animaciones ahora procedemos a
activarlas en mi videojuego.
Programación de scripts para animación en Blender 337
Material Extra
Minijuego en Blender
Activar animaciones

Lo primero es seleccionar el armature y agregar la


siguiente configuración. En este caso quiero que la
animación de espera se reproduzca desde el inicio del
juego; para ello, en lugar de agregar un Sensors
Keyboard agregaré un Always, para que siempre ocurra
la acción; luego en Controllers agrego un operador lógico
AND y por último agrego un Actuators de tipo Action y
allí realizaré la siguiente configuración: le voy a decir
que quiero que la acción sea un Loop End, para que se
repita la acción cada vez que presione la tecla.

Programación de scripts para animación en Blender 338


Material Extra
Minijuego en Blender
Activar animaciones

Luego agrego el rango de frames de cuándo comienza y


termina el ciclo de animación “esperar”. En este caso la
animación comienza en el frame 0 y termina en el frame
25, cambio la opción layer a 0 para que no interfiera con
otras animaciones en el juego.

Para configurar la animación de caminar y saltar, solo


debo agregar el Sensors Keyboard y asignarle
exactamente la tecla mediante la cual quiero que se
active la animación; lo demás se procede igual que como
se explicó en la animación esperar. Con esto al presionar
P ya podríamos jugar y activar las animaciones con las
teclas respectivas.

Programación de scripts para animación en Blender 339


Material Extra
Minijuego en Blender
Crear un enemigo
Con esto ya vincularía la animación al juego. Ahora por
ultimo voy agregar un cubo que trate de empujar a la
jarra afuera de la plataforma..

Para ello agrego la


siguiente configuración al
cubo en primera instancia,
va a hacer Static.

Programación de scripts para animación en Blender 340


Material Extra
Minijuego en Blender
Crear un enemigo
Luego hago un ciclo de animación
donde voy a mover al cubo en el
eje y, la guardo como una Action y
luego la cargo en el juego.

Hago la siguiente configuración: quiero que mi cubo que


va a empujar al personaje, siempre esté realizando el
ciclo de animación, por eso le digo en el Sensors Always.
Aquí no es necesario agregar un Layer específico pues es
la única animación que va a tener el cubo.

Programación de scripts para animación en Blender 341


Material Extra
Minijuego en Blender
Crear un enemigo
Ya hemos concluido el juego y si desplazamos al
personaje con las teclas se activarán las distintas
animaciones, al igual que el cubo empujará el personaje
hasta sacarlo de la plataforma.

Programación de scripts para animación en Blender 342


Material Extra
Seguir aprendiendo
La clave

Estudiar como se mueve todo en el mundo es


la clave.

Las páginas que siguen les darán nuevas


pautas para seguir aprendiendo.
https://wiki.blender.org/index.php/Doc:ES/2.6/Tutorials/
Resources/External_links

https://www.blendswap.com

https://www.blendernation.com

Programación de scripts para animación en Blender 343

También podría gustarte