Attribute holder por maxscript

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

Attribute holder por maxscript

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

Hola chicos, a ver si hay algun lumbreras que sepa la solución a lo siguiente. Esta semana estoy intentando resolver el ejercicio 2 mediante script, de hecho ya lo tengo y funciona, aunque el codigo sea un desastre. El caso es que tengo las siguientes lineas de código para crear un atribute holder con los diferentes parametros, el único problema que se me planteado es que extrañamente aunque los parametros se crean con exito luego no son accesibles desde el parameter editor ¿hay laguna forma de solucionar eso?, ¿alguna idea de porque pasa?
ikfk = attributes FootControls
(

parameters main rollout:params

(

ikfk type:#float ui:ikfk default:0
footRoll type:#float ui:footRoll default:0
footTilt type:#float ui:footTilt default:0
footSlide type:#float ui:footSlide default:0
heelRoll type:#float ui:heelRoll default:0
ballRoll type:#float ui:ballRoll default:0
toeRoll type:#float ui:toeRoll default:0
toeVert type:#float ui:toeVert default:0
toeHorz type:#float ui:toeHorz default:0



)
rollout params "Leg Controls"
(

spinner ikfk "IK<->FK" type:#float
spinner footRoll "FootRoll" type:#float range:[-360,360,0]
spinner footTilt "FootTilt" type:#float range:[-180,180,0]
spinner footSlide "FootSlide" type:#float range:[-180,180,0]
spinner heelRoll "HeelRoll" type:#float range:[-180,180,0]
spinner ballRoll "BallRoll" type:#float range:[-180,180,0]
spinner toeRoll "ToeRoll" type:#float range:[-180,180,0]
spinner toeVert "ToeVert" type:#float range:[-180,180,0]
spinner toeHorz "ToeHorz" type:#float range:[-180,180,0]



)

)
Por otra parte he de confesar que esta parte del codigo es bastante oscura para mi y no termino de entender que función exacta tiene cada apartado, aunque a base de cortar y pegar y mucho ensayo y error a final lo he sacado. Si alguien pudiera que hace cada parte en concreto también le estaria muy agradecido.

AlesDorado
Iniciado
Iniciado
Mensajes: 23
Registrado: Lun Oct 04, 2010 1:24 pm

Re: Attribute holder por maxscript

Mensajepor AlesDorado » Dom Nov 07, 2010 1:14 am

Muy buenas David.

El problema es que no enlazas correctamente los parametros con el rollout.

Para que entiendas el sistema de creación es muy sencillo, te pongo un pequeño ejemplo:

ca = attributes ScriptRollout ---ca sería la variable que contiene todo el modificador, no solo los rollout, esta variable es más bien para trabajar con código, después no te aparecerá en ninguna parte en los interfaces. ScriptRollout sería nuestro "nuevo" attribute holder.----

parameters ScriptRolloutParams --- Primero creamos los parámetros que va a tener el rollout. Los parámetros serían los "contenedores" que después tendrán los controllers, canales y/o pistas. Los controllers a los que puedes acceder desde el editor de curvas.

rollout ScriptRolloutRoll "" --- Después declaramos los user-interfaces, o para que nos entendamos mejor, los controladores visuales que va a manejar el usuario: los spinners, sliders, buttons, etc etc.

Hasta aquí la explicación, te pongo un pequeño script ya con código puro y duro:
/*
ca = attributes ScriptRollout
(
parameters ScriptRolloutParams ScriptRolloutRoll --Aquí indicamos cual es el rollout correspondiente a estos parametros.
(
FKIKBlend type:#float ui:(FKIKBlendSp) --En ui (user-interface), asignamos el controlador del rollout
)

rollout ScriptRolloutRoll "Test Script"
(
spinner FKIKBlendSp "FK/IK Blend:" range:[0, 100, 0] offset:[0,0] fieldWidth:40
)
)

custAttributes.add $.modifiers[1] ca --Con esta línea aplicamos el script al primer modificador del objeto seleccionado.
*/

Espero que te sirva de ayuda. Si aún tienes alguna duda, no te cortes. De todos tienes más ejemplos en mis ejercicios de la lección 2.

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

Re: Attribute holder por maxscript

Mensajepor ikerJ » Dom Nov 07, 2010 1:36 am

Pues Alejandro lo ha dicho todo, básicamente. En la parte 'parameters' declaras el 'contenido', y en el 'rollout' declaras el 'continente', que es la interfaz para poder manejar los 'parameters' que hayas definido. En posteriores lecciones, cuando veamos el tema del 'snap', veremos más ejemplos prácticos de estas cosas.

El código que muestra Alejandro tiene un pequeño error. Pongo aquí la versión que funciona:

Código: Seleccionar todo

ca = attributes ScriptRollout ( -- te habías dejado el argumento ROLLOUT antes de decir qué persiana íbamos a usar parameters ScriptRolloutParams rollout:ScriptRolloutRoll --Aquí indicamos cual es el rollout correspondiente a estos parametros. ( FKIKBlend type:#float ui:(FKIKBlendSp) --En ui (user-interface), asignamos el controlador del rollout ) rollout ScriptRolloutRoll "Test Script" ( spinner FKIKBlendSp "FK/IK Blend:" range:[0, 100, 0] offset:[0,0] fieldWidth:40 ) ) custAttributes.add $.modifiers[1] ca
Envolved vuestro código dentro de las etiquetas 'code' que tenéis cuando escribís el mensaje para que el formato sea más legible y respete las 'indentaciones'.

Y si la interfaz que creas por 'script' no es accesible luego desde 'Parameter Editor', es porque MAX es un poco chapucero y cutre. Si una vez has definido y aplicado estos parámetros quieres cambiar cualquier cosa, cambia esto:

Código: Seleccionar todo

ca = attributes ScriptRollout ( parameters ScriptRolloutParams rollout:ScriptRolloutRoll --Aquí indicamos cual es el rollout correspondiente a estos parametros. (
por esto:

Código: Seleccionar todo

ca = attributes ScriptRollout Redefine:ca ( parameters ScriptRolloutParams rollout:ScriptRolloutRoll --Aquí indicamos cual es el rollout correspondiente a estos parametros. (
De este modo no creas los parámetros de nuevo, sino que redefines los que ya tienes. Dentro del código puedes cambiar/añadir cualquier cosa (parámetros, elementos de la interfaz, propiedades...) tranquilamente, y ver cómo al ejecutarlo con esa línea adicional se actualizan tus cosillas.
Última edición por ikerJ el Dom Nov 07, 2010 1:49 am, editado 1 vez en total.

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

Re: Attribute holder por maxscript

Mensajepor DavidAlvarez » Dom Nov 07, 2010 1:47 am

Hola Ales creo que ya me empieza a quedar un poco mas claro el asunto, aunque voy a tener que verlo con calma para digerirlo :?:
He probado por cierto el codigo que apuntas y no se porque pero obtengo un error en las primeras lineas de codigo al intentar ejecutarlo. No se exactamente porque....

AlesDorado
Iniciado
Iniciado
Mensajes: 23
Registrado: Lun Oct 04, 2010 1:24 pm

Re: Attribute holder por maxscript

Mensajepor AlesDorado » Dom Nov 07, 2010 2:14 am

Fallo mio si, jejeje. Se me había pasado el rollout: Es que ya no son horas XD.

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

Re: Attribute holder por maxscript

Mensajepor DavidAlvarez » Dom Nov 07, 2010 2:27 am

Pues gracias nuevamente a los dos ya creo que casi lo tengo, aunque vamos a dejarlo reposar porque ya se me está levantando dolor de cabeza :D ains... maxscript si no fuera porque ahorras tanto trabajo :lol:


Volver a “Convocatorias 2010”

¿Quién está conectado?

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