1 Archivos adjunto(s)
Mel- almacenamiento de variables
Buen día foreros. Hoy vengo con una duda sobre scripting. El lenguaje en esta ocasión es Mel, aunque supongo que, si me dicen cómo se haría en otro lenguaje lo podría averiguar yo en Mel.
Tengo una esfera que el usuario puede mover en el eje X hacia el lado negativo o positivo. Necesito de cada movimiento que el usuario haga la posición inicial (pinicial) y la posición final (posición final), para almacenarlas en un par de variables dentro de una expresión.
Para almacenar posición final podría simplemente leer el valor actual de translatex. Pero aquí va el problema: cómo hago para que el programa me almacene el valor que había en translatex justo antes de que el usuario lo modificara (o sea, el pinicial)?
En otras palabras, necesito saber de dónde vino la esfera (pinicial) y dónde está (posición final). Todo en tiempo real: o sea, el usuario no está animando nada, solo moviendo una esfera de un lado a otro.
https://foro3d.com/attachment.php?at...1&d=1233277621
Ojalá alguien me pueda ayudar. Saludos y muchas gracias.
-- IMÁGENES ADJUNTAS --
https://foro3d.com/attachment.php?attachmentid=92970
Mel- almacenamiento de variables
Pues podrías agregar un bucle después de leer la variable posición final de tal manera que esté leyendo el valor de esfera, translatex. Saldrá del bucle cuando la el valor de esfera, translatex sea distinto de posición final.
Mel- almacenamiento de variables
Quibo Xian. Vi su mensaje en MSN y me registré para responder. Entonces yo uso otros lenguajes y hasta ayer empecé a jugar con Mel en el trabajo así que, si acaso hablamos en pseudo code.
Entonces, tenemos la esfera, su traslación en x y el almacenamiento de la misma, y esto nos produce un output que queremos que se bifurque.
Pregunta, la traslación en x es un key? O depende en otro modo de la time line? No cierto?
Si no, digamos que la traslación de la esfera, va a ser siempre lo que usted mismo llama actual, ese valor actual toca almacenarlo cada vez, justamente depende si esa es una cosa que se quiere almacenar constantemente, o cada vez que el valor cambia, o si es una cosa que se quiere hacer en un determinado momento.
Según eso se almacena en un modo u otro, más bien se update-a en continuación o no, porque justamente toca saber cuándo necesitamos nuestro output.
De resto cuando se bien de transforms, por su naturaleza conviene almacenarlos en vectores, matrices o cuaterniones.
Así que, si entiendo bien la cosa, pude ser así (muy pseudo code):
//creamos un Vector.
Var pinicial = vector3().
//metemos un valor para iniciar.
Pinicial, set(0,0,0).
//creamos un attribute para almacenar pinicial.
Addattr oldpos.
Addattr = pinicial.
//hacemos otro Vector dichoso incremento.
Var pincr = vector3().
//leemos la posición actual de psphere.
Var myshere = psphere.
Var trans = mysphere, value, transform.
Var actual pues = trans, translation.
//actualizamos nuestro Vector de incremento.
Pincr. Add(actualpos, pinicial).
//nuevo attribute para la posición actual.
Addattr newpose.
Addattr = pincr.
//actualizamos nuestro Vector inicial.
Pinicial. Copy(pincr).
Listo, cada vez tenemos un posición vieja y una nueva en los sliders, creo que es lo mismo a lo que se refiere Sayden?
Es solo una idea y no sé si pueda funcionar (y en Maya), pero quien quita.
Edit. (corrección, se necesita solo la posición x, y en ese caso no son necesarios vectores, sino variables que, de hecho, caben en un attribute float).
Ojalá ayude. Suerte.
4602.
Mel- almacenamiento de variables
En Maxscript podrías usar callbacks para almacenar la posición de la esfera en una variable en el momento en que ésta sea seleccionada. La mueves, y luego almacenas en otra variable la posición actual. Tal vez Maya tenga algo parecido.
Mel- almacenamiento de variables
Que más Juan? Gracias por venir, y gracias por toda la ayuda, claro que me sirve. Gracias a IkerClon y Sayden por sus aportes, ya estoy trabajando en eso. Saludos.