Funciones

Mensajes de los cursos de junio y octubre del año 2010.

Moderadores: David, Tutores

DavidAlvarez
Junior
Junior
Mensajes: 25
Registrado: Mié Oct 06, 2010 10:33 am

Funciones

Mensajepor DavidAlvarez » Sab Nov 06, 2010 9:55 pm

Seguimos el bombardeo, y con el tema del script. Los scripts que hago realmente estan mas cerca de una especie de macro de inteminables lineas de codigo que otra cosa. Se que mediante funciones podria ahorrar muchas lineas de codigo y reutilzar estas lineas de codigo simplemente llamando a la funcion. El problema es que hay cosas que se me escapan de como se realiza una función, ¿como declaro los valores? ¿como defino parametros de entrada y de salida? No se si me explico. Si alguien (o tu Iker) me puede dar pistas de como funcionan exactamente o de alguna referencia donde se explique el asunto para "dummys" estaría genial.
Os pongo un trozo de codigo que imagino que podria haber resuelto creando una función para dos acciones que son casi identicas:
start = $C_mario_Rig_X_LegThigh_D.transform[4]

medium = $C_mario_Rig_X_LegCalf_D.transform[4]

end = $C_mario_Rig_X_LegAnkle_D.transform[4]
-- inciamos creacion de cadenas
thighMainBone=boneSys.createBone start medium $C_mario_Rig_X_LegThigh_D.transform[3]
thighMainBone.name="C_mario_Rig_X_LegThighMain_BH"
thighMainBone.width= 4.0/2
thighMainBone.height= 4.0/2
thighMainBone.sidefins= on
thighMainBone.backfin= off
thighMainBone.frontfin= off
thighMainBone.wirecolor = color 0 0 255
calfMainBone=boneSys.createBone medium end $C_mario_Rig_X_LegCalf_D.transform[3]
calfMainBone.name="C_mario_Rig_X_LegCalfMain_BH"
calfMainBone.width= 4.0/2
calfMainBone.height= 4.0/2
calfMainBone.sidefins= on
calfMainBone.backfin= off
calfMainBone.frontfin= off
calfMainBone.wirecolor = color 0 0 255

ikerJ
Miembro Vip
Miembro Vip
Mensajes: 212
Registrado: Mar Jun 15, 2010 9:21 pm

Re: Funciones

Mensajepor ikerJ » Sab Nov 06, 2010 11:54 pm

Buenas, David,

Si te das cuenta de las cosas 'comunes' que hay entre los procesos (uno la creación de un hueso y otro para la del otro), podemos escribir el código de una manera parecida a ésta:
  • 1) Crea un hueso
    2) Nombra ese hueso.
    3) Cambia su apariencia.
    4) Cambia su color.
De todos los datos que necesitamos, los únicos que van a cambiar son la posición inicial, la final y el nombre. Con lo que puedes escribir una función cuyos argumentos sean precisamente ésos. Es decir, crearás huesos con la misma apariencia y el mismo color, pero esos datos serán los argumentos que definas en tu función, puesto que son los datos que varían de un hueso a otro.

De ese modo, tendríamos algo como:

Código: Seleccionar todo

fn creaHueso objInicial objFinal nombre tamaño = ( miHueso = boneSys.createBone objInicial.position objFinal.position objInicial.transform[3] miHueso.name = nombre miHueso.width = miHueso.height = tamaño/2 miHueso.sidefins = on miHueso.backfin = off miHueso.frontFin = off miHueso.wirecolor = color 0 0 255 )
De este modo, para llamar a tu función sólo necesitas darle un nodo que marque la posición inicial, otro que marque la final (ojo, el nodo, no la posición del mismo, ya que la buscamos dentro de la función), el nombre para tu hueso y un valor para el tamaño (así la función es más flexible):

creaHueso $Point01 $Point02 "Mario_Hueso01" 4.0

En una función, tus parámetros de entrada (argumentos) los usas dentro de la misma función. Es como si una noche quisieras encargar la cena para que te la lleven a casa, y tu saldo es de 30 euros. Sabes que necesitas un primer plato, un segundo, postre y bebida, pero aún no has decicido qué restaurante vas a elegir. Te guardas esos 30 euros durante toda la semana mientras vas decidiendo, pero no te los gastas en nada más.

Los argumentos de una función son esos datos: primer plato, segundo, postre y bebida. Usas esos datos 'comodín' dentro de la función. Por sí solos, no hacen nada, porque se refieren a algo que no es concreto (tú no puedes llamar al restaurante y decirles 'pónganme un primer plato', sino que tendrás que especificar cuál de todos quieres). Es cuando llamas a la función, una vez definida, cuando esos datos se hacen 'reales', sustituyendo los generales que escribiste por cosas que realmente tienes en la escena.

Se nota que es hora de cenar, ¿eh? :lol:

DavidAlvarez
Junior
Junior
Mensajes: 25
Registrado: Mié Oct 06, 2010 10:33 am

Re: Funciones

Mensajepor DavidAlvarez » Dom Nov 07, 2010 12:24 am

Gracias Iker yo creo que ahora si que me ha quedado clarito. Voy a ver si puedo irlo aplicando.


Volver a “Convocatorias 2010”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados