lunes, 20 de marzo de 2017

Python en Blender. El lenguaje



 Texto de Pablo Parra Iglesias
revisado por Enrique Rendón

Blender está construido con Python como base, haciendo que sea un programa ampliable y personalizable. Python da acceso a la funcionalidad completa del Blender Game Engine mediante su API de programación. Este proyecto se centra en los módulos específicos del Game Engine.

Python es un lenguaje de programación de alto nivel, interpretado y multipropósito. Es potente, flexible y con una sintaxis clara y concisa. Debido a que es interpretado, no necesita dedicar tiempo a su compilación. En la actualidad es uno de los lenguajes de programación más utilizados para el desarrollo de software.

Mediante Python se puede acceder a todos los sensores, actuadores y controladores de Blender, además se pueden modificar sus parámetros en tiempo de ejecución. También permite realizar acciones directamente en las escenas, cambiar y evaluar propiedades de los objetos, sin necesidad de emplear ladrillos lógicos.

A diferencia de muchos lenguajes de programación, en Python no es necesario poner ningún carácter al final de cada línea indicando el salto de línea, ni hay marcadores de comienzo y fin de bloque. Para indicar el final de línea basta con que cada bloque de código esté correspondiente indentado (entendiendo por bloque de código: sentencias if, bucles for o while, funciones, etc.). 

Cada nivel de indentación equivale a una pulsación de la tecla tab o a cuatro espacios (aunque esto último es modificable por el usuario). Los bloques de código no están delimitados por corchetes o paréntesis ni por palabras clave como end o start. El inicio lo marcan los dos puntos (‘:’) de la primera línea del bloque y el fin lo marca la vuelta al nivel de tabulación inicial del bloque. En la figura 1 se muestra un ejemplo de bloque de código

 
Figura 1. Bloque de código Python 



Python permite la creación de bloques vacíos, mediante la palabra clave pass. Esto se emplea cuando en una línea se requiere que haya algo escrito pero, en ese momento, el usuario todavía no ha puesto la lógica correspondiente a ese bloque lógico. La sentencia pass, es una operación nula, no ocurre nada cuando se ejecuta; se pasa a la siguiente línea. Si se dejase un bloque vacío sin poner la sentencia pass, saltaría un error de indentación. En el fragmento de código 1 se muestra un ejemplo del uso de esta sentencia.

 
Fragmento de código 1. Sentencia pass.



Las variables no hace falta declararlas, basta con darles un valor inicial para ser creadas. 

Para una mejor entendimiento del script programado, se puede emplear el carácter # para comentar el código. Todo lo que siga a la almohadilla no será interpretado por la consola.

En el fragmento de código 2 se muestra un ejemplo en el que se muestra cómo saber si un número es primo empleando un bucle for y sentencias if y else. En él se encuentran varios bloques de código.



Fragmento de código 2. Bucles y sentencias



En este primer fragmento se ha comentado el inicio y final de los bucles y las sentencias para que se entienda bien la importancia de que el código esté bien indentado. Si el código no estuviera correctamente indentado produciría resultados no deseados o saltaría un error al compilar. En los demás fragmentos de código ya no se comentará donde se inicia o finaliza el bucle, función o sentencia.

Para escribir una función hay que poner primero la palabra clave def, seguida del nombre de la función, y posteriormente entre paréntesis los argumentos de la función. Finalmente tiene que llevar los dos puntos (‘:’) que indican que se inicia la función. En el fragmento de código 3 se muestra un ejemplo de una función en la que se pasan como parámetros dos números de los que se quiere saber cuántos números primos hay entre ellos.



Fragmento de código 3. Función


Y al ser ejecutada la función pasando como parámetros los números 13 y 36 se obtiene el resultado que muestra la figura 2.



Figura 2. Ejecución de función.


Las funciones en Python permiten devolver uno o varios valores. Las variables que se quieran devolver hay que indicarlas mediante la sentencia return. En el fragmento de código 4 se muestra un ejemplo trivial en el que en una función se devuelven tres valores. En esta función se opera con el número pasado como parámetro: se suma uno, se multiplica por tres y se eleva al cuadrado. Estos tres valores son los que se devuelven.


Fragmento de código 4. Más de un valor de retorno en un función


En la figura 3 se muestra un ejemplo de cómo almacenar los valores devueltos por una función, en este caso de la función del fragmento de código 4. Además se ha impreso por consola el valor de cada una de las variables.

 
Figura 3. Múltiples valores devueltos por una función

En realidad no harían falta que las variables que reciben los valores de la función vayan entre corchetes. Pueden ir entre paréntesis o sin necesidad ni de corchetes ni de paréntesis. En este ejemplo se han usado los corchetes para que visualmente sea más semejante a otros lenguajes de programación.



No hay comentarios:

Publicar un comentario