Aprende a utilizar Maya 2011

Oct 24

Aprende a utilizar Maya 2011

Estoy empezando a utilizar Maya, este material me está ayudando:

  • Vídeos interesantes sobre Maya:

Utilizar jerarquías:

Skinning avanzado:

Más sobre skinning:

Encontraréis una increíble cantidad de tutoriales online gratuitos…

Por supuesto, Autodesk ha dispuesto sus propios tutoriales “How To” en su sitio web de recursos.

http://resources.autodesk.com/med/Autodesk_Maya/How_Tos

Me ha gustado mucho el uso del elemento nCloth de Maya, cómo utilizarlo con un pantalón de un conejo (animal xD) ,sólo colocárselo se le caen y le tienen que crear un cinturón virtual , muy simpático

Macros con Maya:

{
// plot function
float $start = 0.00; // start and end x values of graph aka the domain of the function
float $end = 20.00;
int $divisions = 20; // number of strips domain is divided into
float $increment = ($end - $start) / $divisions;  //change in x aka deltaX
//print ("Increment is: " + $increment + "\n");
string $cmd = "curve -d 1";
string $points = " ";

for($i = 0; $i <= $divisions; $i++){

float $x = $start + $i * $increment;
//print ("X is: " + $x + "  ");

// this is the function to plot
$x /= 4.0;
float $y = 0.5 * ($x * $x); // the equation y = 1/2 x^2
//print ("Y is: " + $y + "\n");
$points = ($points + " -p " + $x + " " + $y + " 0"); // the string of points to plot

}
$cmd = ($cmd + $points + " ;"); // we add all our strings up to one command and evaluate it
string $curve = `eval $cmd`;
print ($curve + "\n");
//print("Command is: " + $cmd + $points + " ;");
string $surface&#91;&#93; = `revolve  -ch 1 -po 0 -rn 0 -ssw 0 -esw 360 -ut 0 -tol 0.01 -degree 3 -s 8 -ulp 1 -ax 0 1 0 $curve`;
//print $surface;
};
&#91;/sourcecode&#93;
Con eso habremos generado una curva y su superficie de revolución asociada.
Ahora vamos a insertar un programa en una macro de Maya en lenguaje MEL para editar las coordenadas de la curva o del objeto, o de ambos a la vez desde una ventana.
&#91;sourcecode language="JavaScript"&#93;
global proc moveEach()
{
int $inc&#91;&#93;=
{
18,
44,
74
};

if ( `window -q -ex moveEachUI`)
deleteUI moveEachUI;

window -t "Move Each" moveEachUI;
string $moveForm = `formLayout`;
string $moveFieldForm = `formLayout`;
string $labelCol = `columnLayout -adj 1`;
string $sel&#91;&#93; = `ls -sl`;
float $_T&#91;&#93; = getAttr ($sel&#91;0&#93;+".translate");
float $_R&#91;&#93; = getAttr ($sel&#91;0&#93;+".rotate");
float $_S&#91;&#93; = getAttr ($sel&#91;0&#93;+".scale");
text " ";
text -h 22 -l "Translate " -al right;
text -h 22 -l "Rotate " -al right;
text -h 22 -l "Scale "-al right;
setParent $moveFieldForm;

string $xCol = `columnLayout -adj 1`;
text -l "X" -al center;
floatField -pre 3  -value $_T&#91;0&#93; TranslateMEx;  ;
floatField -pre 3 -value $_R&#91;0&#93; RotateMEx;
floatField -pre 3 -value $_S&#91;0&#93; ScaleMEx  ;
setParent $moveFieldForm;

string $yCol = `columnLayout -adj 1`;
text -l "Y" -al center;
floatField -pre 3  -value $_T&#91;1&#93; TranslateMEy;
floatField -pre 3 -value $_R&#91;1&#93; RotateMEy;
floatField -pre 3 -value $_S&#91;1&#93; ScaleMEy;
setParent $moveFieldForm;

string $zCol = `columnLayout -adj 1`;
text -l "Z" -al center;
floatField -pre 3 -value $_T&#91;2&#93; TranslateMEz;
floatField -pre 3 -value $_R&#91;2&#93; RotateMEz;
floatField -pre 3 -value $_S&#91;2&#93; ScaleMEz;
setParent $moveFieldForm;

formLayout
-edit

-af $labelCol "top" 0
-af $labelCol "bottom" 0
-af $labelCol "left" 0
-ap $labelCol "right" 0 $inc&#91;0&#93;

-af $xCol "top" 0
-af $xCol "bottom" 0
-ap $xCol "left" 0 $inc&#91;0&#93;
-ap $xCol "right" 0 $inc&#91;1&#93;

-af $yCol "top" 0
-af $yCol "bottom" 0
-ap $yCol "left" 0 $inc&#91;1&#93;
-ap $yCol "right" 0 $inc&#91;2&#93;

-af $zCol "top" 0
-af $zCol "bottom" 0
-ap $zCol "left" 0 $inc&#91;2&#93;
-af $zCol "right" 0

$moveFieldForm;

setParent $moveForm;
string $closeButt = `formLayout`;
string $cButtControl1 = `button -l "Move" -c "moveEachCommand"`;
string $cButtControl2 = `button -l "Move and Close" -c "moveEachCommand; deleteUI moveEachUI"`;
string $cButtControl3 = `button -l "Close" -c "deleteUI moveEachUI"`;

formLayout
-edit

-af $cButtControl1 "top" 0
-af $cButtControl1 "bottom" 0
-ap $cButtControl1 "right" 0 33
-af $cButtControl1 "left" 0

-af $cButtControl2 "top" 0
-af $cButtControl2 "bottom" 0
-ac $cButtControl2 "right" 0 $cButtControl3
-ac $cButtControl2 "left" 0 $cButtControl1

-af $cButtControl3 "top" 0
-af $cButtControl3 "bottom" 0
-af $cButtControl3 "right" 0
-ap $cButtControl3 "left" 0 66

$closeButt;

formLayout
-edit

-af $moveFieldForm "top" 0
-af $moveFieldForm "bottom" 22
-af $moveFieldForm "left" 0
-af $moveFieldForm "right" 0

-ac $closeButt "top" 0 $moveFieldForm
-af $closeButt "bottom" 0
-af $closeButt "left" 0
-af $closeButt "right" 0

$moveForm;

window -edit -wh 304 137 moveEachUI;
showWindow moveEachUI;
}

global proc moveEachCommand()
{
float $T&#91;&#93;;
$T&#91;0&#93; = `floatField -q -v TranslateMEx`;
$T&#91;1&#93; = `floatField -q -v TranslateMEy`;
$T&#91;2&#93; = `floatField -q -v TranslateMEz`;

float $R&#91;&#93;;
$R&#91;0&#93; = `floatField -q -v RotateMEx`;
$R&#91;1&#93; = `floatField -q -v RotateMEy`;
$R&#91;2&#93; = `floatField -q -v RotateMEz`;

float $S&#91;&#93;;
$S&#91;0&#93; = `floatField -q -v ScaleMEx`;
$S&#91;1&#93; = `floatField -q -v ScaleMEy`;
$S&#91;2&#93; = `floatField -q -v ScaleMEz`;

string $attr&#91;&#93;=
{
"x",
"y",
"z"
};

string $sel&#91;&#93; = `ls -sl`;

for ($i=0; $i<`size($sel)`; $i++)
{
float $objT&#91;&#93;= `getAttr ($sel&#91;$i&#93; + ".t")`;
float $objR&#91;&#93;= `getAttr ($sel&#91;$i&#93; + ".r")`;
float $objS&#91;&#93;= `getAttr ($sel&#91;$i&#93; + ".s")`;

setAttr ($sel&#91;$i&#93; + ".t") ($T&#91;0&#93; * $i + $objT&#91;0&#93;) ($T&#91;1&#93; * $i + $objT&#91;1&#93;) ($T&#91;2&#93; * $i + $objT&#91;2&#93;);
setAttr ($sel&#91;$i&#93; + ".r") ($R&#91;0&#93; * $i + $objR&#91;0&#93;) ($R&#91;1&#93; * $i + $objR&#91;1&#93;) ($R&#91;2&#93; * $i + $objR&#91;2&#93;);

move -r $T&#91;0&#93; $T&#91;1&#93; $T&#91;2&#93; $sel&#91;$i&#93;;
rotate -r -os $R&#91;0&#93; $R&#91;1&#93; $R&#91;2&#93;  $sel&#91;$i&#93;;
scale -r $S&#91;0&#93; $S&#91;1&#93; $S&#91;2&#93;  $sel&#91;$i&#93;;
for($s=0; $s<3; $s++) 			if($i>0 &amp;&amp; !$S[$s]==0)
setAttr ($sel[$i] + ".s" + $attr[$s]) (($S[$s]+$objS[$s])*$i);
}
};

Sólo tenemos que seleccionar un objeto y ejecutar la función moveEach para que aparezca la ventana con los controles.

Recordar que el manual de referencia del lenguaje MEL de Maya 2011 está aquí.

Y ahora el vídeo que demuestra el funcionamiento de la macro.

El objetivo de este vídeo es darse cuenta de que con la macro hemos creado una superficie de revolución ,sólo editamos luego los parámetros de la curva y cambia el objeto completo, es más, podemos cambiar ambos al mismo tiempo con resultados inesperados 😀

Por último os dejo una serie de vídeos de Youtube con tutoriales en español.

Artículos relacionados

  • ...

Exprésate dejando un comentario:

Introduce el captcha

Por favor escriba los caracteres de la imagen captcha en el cuadro de entrada