Introducción

Los scripts o “expresiones” son secuencias de instrucciones interpretadas y llevadas a cabo por el software de desarrollo 3D, es decir, programación. La gran mayoría de estos software soportan su uso de manera nativa.
El lenguaje que utiliza cada software, es diferente del resto. Cada uno tiene una sintaxis propia, aunque en su mayoría permiten realizar acciones similares. Comúnmente, las expresiones permiten ejecutar acciones internas del software, pudiendo incluso realizar muchas más acciones de las que permite la interfaz gráfica.

Usos y funcionalidad

Los scripts permiten automatizar muchas partes del proceso. Desde modelado (como, por ejemplo, crear cientos de objetos iguales), hasta texturas o animación.
Estos lenguajes ofrecen la ventaja de permitir extender las funcionalidades del software, siendo posible generar plugins o pequeñas aplicaciones que ayuden en el proceso de producción de un proyecto en específico.
También permiten acceder a archivos externos, como archivos de texto, donde es posible almacenar datos (coordenadas, valores numéricos, nombres, etc.), para poder utilizarlos en rutinas que se ejecuten automáticamente cuando reciban la información del archivo. Incluso es posible crear y modificar interfaces (botones, sliders, campos de texto) y asociarlos a acciones específicas de los elementos en la escena.
Adicionalmente, algunos software tienen herramientas “listener”, o “escuchas”, que permiten grabar las acciones que se ejecuten durante un período de tiempo y luego utilizar el código generado para crear botones, o elementos de interfaz, que ejecuten la misma secuencia de comandos.

Análisis

Con las expresiones, es posible acceder a todas las acciones y propiedades disponibles para cada uno de los elementos de la interfaz u objetos en la escena.
Todos los objetos, tienen propiedades genéricas que pueden ser obtenidas o controladas, como por ejemplo:
Nombre
Posición (x, y, z)
Tamaño (ancho, alto, largo)
Escala (x, y, z)
Rotación (x, y, z)
Color
Material
Visibilidad
Padres e hijos

Adicionalmente, cada objeto tiene propiedades exclusivas, que también pueden ser modificadas o controladas. Por ejemplo, en el caso de un cono, se puede modificar el radio de la base y de la punta.
También es posible modificar cualquier acción que ejecute el software, o crear instrucciones propias que permitan realizar tareas específicas necesarias para un proyecto en particular.
Se debe considerar que, muchas veces, es necesario tener conocimientos de geometría, trigonometría, lógica o matemáticas para poder crear acciones específicas, que cumplan con los requisitos necesarios.

Proceso de implementación

Existen dos opciones para crear expresiones: aprender el lenguaje de programación específico de cada software, para poder escribir las expresiones en la ventana de scripts; o utilizar las herramientas de grabación de código (listeners) y crear acciones a partir del código generado.
La manera más fácil, claro está, es la de permitir al software grabar automáticamente las acciones, para obtener el código generado. El problema de esta manera de “programar” (sin programar) es que su uso está limitado, solamente, a las acciones que permita la interfaz. Sin embargo, es posible también modificar el código obtenido para adecuarlo a las necesidades específicas de cada proyecto.
Aprender el lenguaje específico, abre un mundo de posibilidades, ya que permite una mayor flexibilidad a la hora de programar, pudiendo controlar comportamientos del software que no son accesibles desde la interfaz. Obviamente, el proceso de aprendizaje requiere de mucho más tiempo y es mucho más complejo, obligando al programador a adquirir algún grado de especialización, sin embargo, sus beneficios son directamente proporcionales al esfuerzo y tiempo invertidos.

Tipos de datos

Como todos los objetos existentes en el software tienen propiedades, es posible acceder a ellas y modificarlas, llegando incluso a crear o duplicar objetos. Los valores que poseen estas propiedades son, generalmente, de los siguientes tipos:
Escalar: Corresponde a una variable que almacena solamente un número (por ejemplo: 5), y puede ser del tipo float (5.35) o integer (5). Este número puede representar datos como la posición, la transparencia o la rotación de un objeto.
Vectorial: Se utiliza para almacenar coordenadas (vectores), es decir, valores tridimensionales (por ejemplo: [5,6,7]), donde los valores corresponden a los ejes [x,y,z] respectivamente.
Cadena: Del inglés string, este tipo de variables permite almacenar cadenas de caracteres, es decir, palabras.

Ejemplos expresiones simples

CUBO_A.rotaciónX = 45;
La rotación, en el eje X, del objeto CUBO_A es igual a 45º.

CUBO_A.rotaciónY = CUBO_B.rotaciónY;
La rotación, en el eje Y, del objeto CUBO_A es igual a la rotación, en el eje Y, del objeto CUBO_B.

CUBO_A.rotaciónZ = CUBO_A.rotaciónZ + 35;
La rotación, en el eje Z, del objeto CUBO_A, aumenta en 35º.

CUBO_A.posición = [50,30,20];
La posición del objeto CUBO_A, será 50 unidades en el eje X, 30 en el eje Y, y 20 en el eje Z, a partir del [0,0,0] de la escena.

CUBO_A.nombre = “NUEVO_CUBO”;
El nombre del objeto CUBO_A, ha sido cambiado a NUEVO_CUBO. Como el nombre es una cadena de caracteres creada por el usuario, el nombre debe ir entre comillas.

VENTANA_1.BOTON_A.texto = “Presioname”;
El texto del botón BOTON_A, que se encuentra en la VENTANA_1, ha sido establecido (o cambiado) como “Presioname”.
En este caso, VENTANA_1 es “padre” de BOTON_A, y “texto” es una propiedad del botón.

INFORMACIÓN ADICIONAL

Siguiendo la lógica de programación, y con un poco de interés y motivación, es fácil comprender el lenguaje y desarrollar expresiones que se adecuen a las necesidades de algún proyecto específico.
En el proceso de aprendizaje, es muy recomendable ponerse metas, o tratar de lograr algún objetivo que no se pueda resolver simplemente con los conocimientos que se posean, para poder ir siempre más allá, verse en la obligación de investigar, y aprender cosas nuevas.
Cuando se trabaja en equipos de producción, es una buena idea destinar a una persona a trabajar solamente en las expresiones. De esta manera, este programador se podrá especializar en producir el código necesario para solucionar los distintos problemas que surjan.