Professional Documents
Culture Documents
Los Scripts son casi siempre interpretados y aunque solamente unos pocos son
compilados, este no es el caso de MEL. MEL es un lenguaje de secuencias de
comandos, es decir, se puede escribir un comando en MEL y ejecutar esa orden
tan pronto como se pulsa la tecla enter.
Inserción de comandos
Línea de comandos
Como lenguaje, MEL desciende del script del shell de UNIX. Esto significa que
MEL está fuertemente basado en la ejecución de comandos para ejecutar las
acciones (como la ejecución de comandos en un shell UNIX), mas que manipular
estructuras de datos, llamadas a funciones, o el uso de métodos orientados a
objetos com en otros lenguajes.
La mayoría de los comandos que usted usa para controlar a Maya actúan como
utilidades de linea de comando UNIX: pequeños programas independientes con
muchas opciones con muchas opciones que modifican su comportamiento.
Mantener los orígenes del MEL en mente le ayudará a entender sus principales
aspectos.
Asiganción y valores
El operador de asignación es el signo igual (=). MEL también cuenta con atajos
para operadores de asignación como C y Java (+=, -=, *=, ++, --, etc).
MEL, tiene los tipos de datos siguientes: el usual entero (int), el punto flotante
(float) y tipos de datos de string. También tiene un tipo de datos vector que es un
triple flotante (que puede ser útil cuando se trabaja con datos en 3D), los array
(una lista de tamaño variable, en los que todos los elementos son del mismo tipo),
y las matrices (matriz, una tabla de flotantes de dos dimensiones de tamaño
fijo). Los elementos de un array deben ser del mismo tipo.
int $a = 5;
float $b = 3.456;
vector $v = <<1.2, 3.4, 6.5>>;
float $ar[] = {1.2, 3.4, 4.5}; // Un array de flotantes
matrix $mtx[3][2]; // Una matriz de 3x2 de flotantess
Detrás de la escenas
3. Desde el menú principal del Script Editor seleccione Edit Clear All.
Veamos ahora que sucede con los comandos MEL que realizan todas las
operaciones de la interfase
Con todos los comandos ahora haciendo eco al Script Editor, se despliegan
mucho más comandos.
Mientras que los detalles exactos de los comandos no son tan fáciles de
comprender, lo importante es saber que casi todas las operaciones que
usted realiza en Maya son de hecho el resultado final de una serie de
comandos MEL.
if ( $a == $b) {
...
} else if ($a > $b) {
...
} else {
...
}
$a = ($b > 10) ? $c : ($c - 10);
switch ($color) {
case "blue":
...
break;
case $c1:
...
break;
default:
...
break;
}
while ($a < size($arry)) {
...
}
do {
...
} while ($a > 0);
int $i;
for ($i = 10; $i > 0; $i--) {
print($i+"...\n");
}
print("Blastoff!!!");
string $arry[3] = {"red","green","blue"};
for ($k in $arry) {
...
}
Fin de línea
Comentarios
MEL usa el estilo de C++ de comentarios de una sola línea al precederlos con // y
comentarios de más de una línea al colocarlos dentro de los caracteres /* */
Comandos
Los scripts MEL son esencialmente una lista de comandos que ejecuta Maya.
Cada comando posee una lista de argumentos y flags (banderas) asociados con
el. Estos argumentos pueden asignarse al escribir el comando. Si usted no los
asigna, Maya usará los valores por omisión para cualquier comando que esté
usted corriendo, estos argumentos pueden consultarse o editarse. Una bandera lo
que hace un comando (crear, editar o consultar)
// Se crea una esfera llamada "miEsfera" de radio 5
sphere -radius 5 -name "miesfera";
// Edición de el radio de miEsfera
sphere -edit -radius 3 "miEsfera";
// Imprimir el radio de miEsfera
sphere -query –radius miEsfera;
COMANDO QUERY
Result: 1.5
El primer uso del comando sphere creó la esfera MiEsfera. Este es un ejemplo de
la llamada al comando en modo de creación. En el modo de creación el comando
genera un nuevo objeto. en el segundo uso del comando sphere, se utilizó la
bandera –query. Con esta bandera (flag) el comando esfera opera en modo query
(consulta). Con esta bandera, el comando sphere opera en modo query y devuelve
el valor del parámetro especificado.
Comando Edit
Commandos de edición
Un aspecto importante que hay que recorder del commando edit es que puede
usted editar mas de una bandera a la vez.
polyCube -edit -height 3.123 -witdh 1.345 Cubert;
ciclos
for
operacion;
while
Modos de comando
Tipos de Variables
Strings
Una variable string es usada para mantener una serie de caracteres de texto. Las
variables strig pueden ser inicializadas con algún texto como se ve enseguida:
$texto = “”;
Una operación común llevada a cabo sobre variables string es la concatenación
(join). Esto se hace mediante el signo más (+) como podemos ver:
Es importante entender que MEL preprocesa cada string y sustituye los caracteres
especiales dondequiera que encuentra un caracter diagonal invertida (\). Un
carácter especial es aquél que es imposible de ingresar manualmente en un editor
de texto pero existe en la tabala ASCII. Son referidos también como caracteres de
escape. Para que un string contenga un carácter de nueva línea, simplemente
utilice la secuencia de caracteres: \n. esta secuencia de caracteres es
reemplazada por el caracter ASCII equivalente de nueva línea. El siguiente
ejemplo imprime parte de un texto en una línea, y posteriormente el resto en la
línea siguiente:
print "Hola\nJuan";
El resultado es:
\t tabulador
\r retorno de carro
Vectores
Las variables vector le permiten guardar tres valores de punto flotante. Los
vectores son utilizados típicamente para guardar posiciones y direcciones.
Sphere;
3. Sds
Array
Existirán ocasiones en las que necesitará guardar una serie de variables MEL le
permite definir un array (arreglo) de variables. Con frecuencia no es conocido el
número de elementos que estarán en el array, así que MEL permite que el número
de elementos se incremente automáticamente, de acuerdo a las necesidades. Los
siguientes son ejemplos de arrays:
int $values[] = { 2, 5, 7, 1 } ;
string $myArray[ ] =
{"polyCube","polyShpere","polyPlane","polyCylinder"};
int $myArraySize = size($myArray);
print $myArraySize;
int $values[4] = { 2, 5, 7, 1 };
int $values[3] = { 4, 8, 9 };
Una operación típica es anexar un elemento a el array existente. Para hacer esto,
utilice el comando size de la siguiente forma:
int $values[2] = { 5, 1 };
int $values[] = { 1, 2, 3, 4 };
// Eliminar el tercer elemento
int $temp[];
int $i;
for ( $i=0; $i < size($values); $i++ )
{
if ( $i == 2 ) // Saltar el tercer elemento(index 2)
continue;
$temp[size($temp)] = $values[$i];
}
$values = $temp;
print $values;
Operadores aritméticos
(/).
Suma y resta
int $a = 3;
int $b = 5;
float $a = 2.3;
print (4 - $a)" // Result: 1.7
El operador suma (+) tiene un propósito diferente cuando se usa con variables
string. En este caso funciona como operador de concatenación.
string $a = "Hola";
string $b = "mundo";
Operadores relacionales
Realizar acción
Fin
action ( ) ;
int $a = 10;
if ( $a == 10 )
print "a es 10";
else
int $a = 10
if ( $a == 10 )
int $b = $a*2;
else
Operadores de comparación
Operadores de comparación
Relación Símbolo Ejemplo
Igual a == a == b
Diferente a ¡= a ¡= b
Ejemplos:
$Local = 234;
$visitante = 123;
if ( $ Local == $ visitante)
print "Empate" ;
operadores lógicos
Operadores lógicos
Operador Lógico Símbolo Ejemplo
or || a || b
not ¡ a¡b
Ejemplo:
int $a = 10;
int $b = 12;
int $a = 10;
int $b = 12 ;
if ( $a == 10 && $b == 12 ) // true and true = true
print "si" ; // se imprime si
if ( $a == 10 && $b == 2 ) // true and false = false
print "si"; // no se imprime
if ( $a == 3 && $b == 2 ) // false and false = false
print "si"; / / no se imprime
int $a = 10.
int $b = 12"
// La Comparacion es verdadera, pero el operador not (!) la
invierte por lo que el resultado es falso
if ( !($a == 10 && $b == 12) )
print "no"; // Nunca se imprime
Presione Ctrl+Enter
En el escenario se crea un objeto con las letras que forman la palabra “Hola
Mundo”.
2. Desde el menú del Script Editor seleccione File Save Script to the Shelf o
1. Haga clic en la flecha que aparece del lado izquierdo del Shelf y después en
Shelf Editor.
1. Seleccione el script
2. Desde el menú del Script Editor seleccione File Save Script.
3. Para usar el script desde el menú del Script Editor seleccione File Load
9. El script se ejecuta
Debe quedar claro que existen diferentes formas en las que puede usted ejecutar
comandos MEL:
• Command Line
• Command Shell
El Commnnad Shell es una ventana que funciona como una ventana Unix.
Los comandos MEL pueden ejecutarse desde esta ventana. Para aquellas
personas con los shells de Unix pueden sentirse más a cómodos usando el
Commnnad Shell. Para acceder a este, seleccione
• Script Editor
• Shelf
• Script Files
Procedimientos y funciones
Diseño Top-Down
Aunque existen otras estrategias, el acercamiento más simple, más común y más
fácil de aplicar para desarrollar software incluidos los scripts MEL es el llamado
diseño Top-Down. El diseño Top-Down requiere que primero encuentre cual es el
problema que usted está tratando de resolver con su programa. y, posteriormente
una declaración de los pasos básicos que tiene que llevar a cabo su programa
para encontrar una solución.
Una vez que ha empezado con una declaración de nivel superior o “top level” del
problema que está tratando de resolver, usted da un paso hacia la obtención del
detalle de la solución al dividirla en un paso por cada componente. Y así
sucesivamente dividir cada paso que usted ha identificado en pasos más
pequeños. Si usted hace esto con la manera en que escribe sus scripts MEL, tarde
o temprano los refinamientos cada vez más pequeños de su diseño lo llevarán
hacia la obtención de cada línea de código de su script.
Procedimientos y funciones
Los procedimientos y funciones son maneras simples de agrupar juntos una serie
de instrucciones MEL en una operación simple que su script puede volver a usar
de nuevo. Cuando un script (u otro procedimiento) utiliza uno de estos grupos
predefinidos de instrucciones MEL, se dice que ese script llama al procedimiento
o función, en el sentido de que el procedimiento o función es llamada para hacer
su trabajo.
Cuando empieza a escribir scripts MEL más grandes, se hace más difícil manejar
lo complejo que se vuelven. Una aproximación sencilla para manejar la
complejidad es dividirlos en partes más pequeñas y más manejables. Mientras que
el sistema completo puede ser bastante complejo, las partes individuales que lo
conforman pueden ser fácilmente entendidas. Esta aproximación consistente en
dividir una tarea de programación de cómputo en partes más pequeñas es
conocida como programación estructurada.
Antes de que usted pueda usar un procedimiento, tiene que decirle a Maya que es
lo que hace ese procedimiento al definir este. Una función o definición de
procedimiento le dice a Maya el nombre del procedimiento o función, que
argumentos (si hay) necesita para realizar su trabajo, que tipo de datos manejará
de regreso en un valor que devuelve (si es una función), y que instrucciones MEL
ejecutar cuando Maya encuentre una llamada al procedimiento en el script.
El resultado es:
8.
9. El resultado es:
Una matriz es una variable muy similar a un array excepto que tiene dos
dimensiones. Mientras que un array puede ser considerado un solo renglón de
elementos, una matriz tiene tanto filas como columnas de elementos. A diferencia
de los arrays sin embargo, las matrices no pueden ser redimensionadas una vez
que han sido definidas. De esta forma, no es posible añadir elementos a una
matriz.
Las matrices se inicializan usando una sintaxis similar a la de los vectores. Los
elementos de la matriz se definen en un orden de filas. En el siguiente ejemplo, el
primer renglón de la matriz consiste en los valores 3, 4, 6, 7 mientras que la
segunda fila tiene los valores 3, 9, 0, 1.
Puesto que una matriz tiene un número fijo de filas y columnas, si usted intenta
acceder a un elemento fuera del rango de los índices se produce un error.
Los vectores pueden ser manipulados matemáticamente como unidad. Pueden ser
sumados o restados:
- (1, 2, 0)
- (1, 0, 0)
- (1, 2, 3) y (1, 2, 0)
- (1, 2, 3) y (0, 1, 0)
3. confirmDialog
4. -title "Confirmar"
5. -message "¿Está seguro?"
6. -button "Si"
7. -button "No"
8. -defaultButton "Si"
9. -cancelButton "No"
10. -dismissString "No";
3. Coloque un botón en el Shelf que al ejecutarlo el usuario, cree un cono y
mande un Confirm Dialog que diga que se cierre el programa porque es una
prueba y que se borrará la figura. Y que al pulsar el botón adecuado la
figura se cierre.
En Maya los todos los vectores son 3D. Los tres componentes se llaman x, y y z.
es importante entender que los vectores no tienen una localización fija. Un vector
corresponde a un movimiento relativo, un corrimiento. En términos de posición, un
vector no tiene significado sin un punto. El vector se suma al punto para dar un
nuevo punto.
Vectores en MEL
Un vector se define usando el tipo de dato vector. Debido a que MEL no hace
distinción entre puntos y vectores, todas las operaciones que se aplican a los
puntos. Pueden ser aplicadas a los vectores.
Suma
c= a + b
A + (b + c) = (a + b) + c (Propiedad asociativa)
Resta de vectores
c=a–b
las líneas punteadas en la figura muestran una forma más intuitiva de ver la resta
de vectores.la resta puede ser vista como una suma con el segundo vector en la
dirección opuesta.
c = a + (-b)
Figura 2 resta de vectores
Escalado
b = sa
Longitud
c 2 = a 2 + b 2 ; es decir:
c = a2 + b2
c = a 2 + b 2
c = x 2 + y 2
c = x 2 + y 2 + z 2
Se sigue el mismo procedimiento para un vector de n dimensiones.
MEL
El resultado:
Array de flotantes
El resultado es:
Normalizar un vector:
Los vectores con longitud 1 son también llamados vectores normales. Para
normalizar un vector use el comando unit:
Se imprime:
Se imprime entonces:
Array (flotantes)
Los vectores pueden ser manipulados matemáticamente como unidad. Pueden ser
sumados o restados:
practica
Vectores
El producto punto se denota usando el carácter punto medio (•). Dados dos
vectores, a y b, el producto punto se calcula de la siguiente forma.
El cálculo del ángulo se basa en el producto punto (•) de dos vectores. El producto
punto puede ser calculado también de la siguiente manera:
a • b = a bcos(θ)
a•b
cos(θ) =
a b
a•b
θ = cos-1
a b
Note que el resultado del ángulo θ, está en radianes. El valor va desde 0 (cuando
los dos vectores son colineales) a π radianes (180 grados), cuando los vectores
están en direcciones opuestas.
MEL
El comando ángulo pude ser usado para calcular el ángulo entre dos vectores:
El resultado es:
1. Para los siguientes vectores obtenga mediante MEL para cada caso:
a) a + b; b + c
b) c – a; a – b
(2, 0, 0)
(7, 0, 0)
Transformaciones
p’ = p* transformación
p = p* transformación identidad
Interfases
Las mejores interfases de usuario son generalmente las más simples y están
construidas teniendo en cuenta los siguientes aspectos subyacentes que se tratan
de resolver:
Menus en un Dialog Box trabajan igual que los menus en la ventana de Maya. En
sus Dialog Boxes, usted puede crear un menú con un número de alternativas cada
una de las cuales corre un script MEL.
Tabs son una de las formas en que MEL le permite agrupar controles en un Dialog
Box, de forma que el usuario puede seleccionar ver un solo conjunto a la vez.
Confirm Dialog
Cuando su script necesita pedir al usuario por una de varias opciones, puede usar
el commando MEL confirm dialog para detener temporalmente la ejecución de su
script y crear un pequeño Dialog Box que pide al usuario seleccionar de un
conjunto de botones.
Uno de los botones, llamado el Default Button, está marcado de forma especial
(dependiendo de Sistema Operativo y Versión de Maya). Presionar Enter produce
el mismo resultado que hacer clic en el Default Button.
Banderas
-icon (-icn): el usuario puede especificar uno de los cuatro iconos estándar
“question”, “information”, “warning” y “critical”.
Se requiere trabajar con un proyecto por parte de un grupo de usuarios. Solo los
usuarios autorizados tienen permitido abrir dicho proyecto. Coloque un botón el
Shelf que al ejecutarse abra un promptDialog en el cuál el usuario ingrese una
clave. El diálogo contendrá dos botones Aceptar y cancelar, al hacer clic en
cancelar aparecerá un confirmDialog que indicará que la aplicación ha sido
terminada por el usuario, y contendrá un solo botón: Aceptar. Si se introduce una
clave incorrecta en el promptDialog aparecerá un confirmDialog que indicará que
la clave no es válida y la aplicación se cerrará, al dar clic en el único botón
(Aceptar) la ejecución se detiene. Si se ingresa la calve correcta en el
promptDialog y se hace clic en el botón Aceptar aparecerá un promptDialog que
servirá para que el usuario confirme que desea abrir el archivo. Al dar clic en el
botón aceptar que es el único que posee, se abre un promptDialog con tres
botones: Si, No, y No estoy seguro, al dar clic en Si se abre el archivo indicado, al
dar clic en No se detiene la aplicación y al dar clic en No estoy seguro se abre un
promptDialog dando información al usuario. Coloque iconos en los promptDialog
así como color de fondo.