Mel / Python - Procedimiento - Cadena de Cubos

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:
  1. Se necesita crear una cadena de cubos alineados consecutivamente.
  2. La cantidad de cubos es variable.
  3. Estos deben estar emparentados correctamente desde su base a su extremo más lejano.
  4. El tamaño de los cubos no afecta su distribución
Para resolverlo necesitaremos:
  1. 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.
  2. Comando For para repetir las instrucciones.
  3. 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:
  1. proc cadenaCubos(int $limiteX,float $sizeCubo,string $nomCubo){

  2.     for ($x=0;$x<$limiteX;$x++)
  3.     {
  4.     polyCube -h $sizeCubo -w $sizeCubo -d $sizeCubo -n ($nomCubo+"_"+$x);
  5.     move 0 ($x*$sizeCubo) 0;

  6.     if($x>0)
  7.         {
  8.             parent ($nomCubo+"_"+$x) ($nomCubo+"_"+($x-1));
  9.         }
  10.     }
  11. }
  12. cadenaCubos(10,1,"cubo");


        Su equivalente en Python seria así:
        1. import maya.cmds as cmds

        2. def cadenaCubos(limiteX,sizeCubo,nomCubo):

        3.    for x in range(limiteX):
        4.       cmds.polyCube(name=(nomCubo+'_'+str(x)),depth=sizeCubo,height=sizeCubo,width=sizeCubo)
        5.       cmds.move(0,(x*sizeCubo),0)

        6.       if x>0:
        7.          cmds.parent(nomCubo+'_'+str(x),nomCubo+'_'+str(x-1))

        8. 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