Hola, en esta oportunidad realizare un ejercicio en el que pondremos en practica el envió de datos a un procedimiento o función, el cual usara estos datos para personalizar una cadena de
n cubos.
El enunciado seria el siguiente:
- Se necesita crear una cadena de cubos alineados consecutivamente.
- La cantidad de cubos es variable.
- Estos deben estar emparentados correctamente desde su base a su extremo más lejano.
- El tamaño de los cubos no afecta su distribución
Para resolverlo necesitaremos:
- Un procedimiento que reciba tres atributos
- limiteX: nos indica cuantos cubos crearemos.
- sizeCubo: tamaño de los cubos que crearemos.
- nomCubo: nombre que le asignaremos a los cubos.
- Comando For para repetir las instrucciones.
- Comando If para evaluar y asignar los parents.
Comenzaremos definiendo el procedimiento "cadenaCubos" que recibirá
los tres valores para configurar nuestra cadena, luego usaremos el comando "For" para repetir "n" veces la instrucción y finalizaremos con el comando "If" para generar el parent solo después
de haber creado el primer cubo.
El resultado usando Mel seria el siguiente:
- proc cadenaCubos(int $limiteX,float $sizeCubo,string $nomCubo){
- for ($x=0;$x<$limiteX;$x++)
- {
- polyCube -h $sizeCubo -w $sizeCubo -d $sizeCubo -n ($nomCubo+"_"+$x);
- move 0 ($x*$sizeCubo) 0;
- if($x>0)
- {
- parent ($nomCubo+"_"+$x) ($nomCubo+"_"+($x-1));
- }
- }
- }
- cadenaCubos(10,1,"cubo");
|
Su equivalente en Python seria así
:
- import maya.cmds as cmds
- def cadenaCubos(limiteX,sizeCubo,nomCubo):
- for x in range(limiteX):
- cmds.polyCube(name=(nomCubo+'_'+str(x)),depth=sizeCubo,height=sizeCubo,width=sizeCubo)
- cmds.move(0,(x*sizeCubo),0)
- if x>0:
- cmds.parent(nomCubo+'_'+str(x),nomCubo+'_'+str(x-1))
- cadenaCubos(10,1,"cubo")
|
El resultado es una cadena de cubos emparentados que ya podemos animar.
|
Ejemplo animado. |
Espero les sea útil este pequeño ejercicio, un saludo.
Comentarios