Hacer keyable un attributo
Hola, estoy con el expression editor de Maya.
Quiero alinear objetos, por lo que al activar el atributo FK_IK, se alineen ciertos objetos.
En resumen:
If (C_HARLEY_L_LEG_MASTER_CTRL. FK_IK == 1)
C_HARLEY_L_LEG_MASTER_CTRL.translateX = C_HARLEY_L_KNE_CTRL1.translateX;
C_HARLEY_L_LEG_MASTER_CTRL.translateY = C_HARLEY_L_KNE_CTRL1.translateY;
C_HARLEY_L_LEG_MASTER_CTRL.translateZ = C_HARLEY_L_KNE_CTRL1.translateZ;.
C_HARLEY_L_LEG_MASTER_CTRL.rotateX = C_HARLEY_L_KNE_CTRL1.rotateX;
C_HARLEY_L_LEG_MASTER_CTRL.rotateY = C_HARLEY_L_KNE_CTRL1.rotateY;
C_HARLEY_L_LEG_MASTER_CTRL.rotateZ = C_HARLEY_L_KNE_CTRL1.rotateZ;.
Hasta aquí bien, el problema es que queda bloqueada la traslacion y rotacion.
Es posible que una vez alineado cada atributo vuelva a ser keyable como siempre?
Hacer keyable un attributo
Necesitas usar el comando getAttr..
Hacer keyable un attributo
Gracias Iker.
He puesto este script en el Expression editor: (me falta la otra condicion, es por ir probando).
if (C_HARLEY_L_ARM_MASTER_IKFK_CTRL. SNAP_TO ==1).
setAttr C_HARLEY_L_ARM_FK_CTRL.rx ` getAttr C_HARLEY_L_ARM1_IKBONE_B.rx`;
setAttr C_HARLEY_L_ARM_FK_CTRL.ry ` getAttr C_HARLEY_L_ARM1_IKBONE_B.ry`;
setAttr C_HARLEY_L_ARM_FK_CTRL.rz ` getAttr C_HARLEY_L_ARM1_IKBONE_B.rz`;.
SNAP_TO es un atributo enum y keyable con dos opciones: FK o IK.
Pero no me funciona, alguien sabe por qué?
Hacer keyable un attributo
Código:
if (C_HARLEY_L_ARM_MASTER_IKFK_CTRL. SNAP_TO ==1)
.
Debería ser algo como:
Código:
if (getAttr C_HARLEY_L_ARM_MASTER_IKFK_CTRL. SNAP_TO) == 1
.
¿Vienes de usar MaxScript o JavaScriptú MEL funciona a base de comandos; no es un lenguaje orientado a objetos. Si te sientes más cómodo con tu manera de trabajar, echa un vistazo a pyMel, que es un módulo que te permite tratar la información de la escena de manera parecida a como lo estás intentando..
Hacer keyable un attributo
Efectivamente vengo de Maxscript, pero no me importa amoldarme a otro lenguaje.
La Expression no funciona, lo que es el condicional, tanto.
if (C_HARLEY_L_ARM_MASTER_IKFK_CTRL. SNAP_TO ==1)
como.
If (getAttr C_HARLEY_L_ARM_MASTER_IKFK_CTRL. SNAP_TO) == 1
parece que hacen lo mismo.
De hecho, el primero lo estoy usando en otra expresión para activar visibilidad o no de otros objetos, y funciona bien. Eso sí, el atributo de visibilidad queda bloqueado como decia en el primer mensaje ya qué esta permanentemente conectado.
Luego cuando le integro el resto de la expresión no funciona. Solo funciona cuando le doy al botón crear expresión (del expression editor), si se cumple la condición en ese momento. Posteriormente nada. Parece como si no estuviera comprobando el valor que active la condicion. (tengo la opción de evalúate always conectada).
Lo raro es que todo funciona por separado.
También he probado con el comando switch, pero tampoco sale.
Hacer keyable un attributo
¿Entiendo que estás intentando meter el código de IKFK dentro de una expresión en Maya, dentro de Expression Editor? ¿Cuál es el motivo? Si lo que estás haciendo es un snappara alinear una solución IK a una FK, ¿por qué no lo haces como una herramienta aparte? Por ejemplo, un botón en una shelf.
Te recomiendo también, releyendo el contenido de tus mensajes, que no uses los valores locales de posición y rotación para hacer estas operación, sino que leas sobre el comando XForm. Usando XForm -matrix -ws podrás alinear dos objetos independientemente de los valores locales que tengan, ya qué tomará las coordenadas worlden lugar de las que tienen con respecto a su padre.
Hacer keyable un attributo
Cita:
¿Entiendo que estás intentando meter el código de IKFK dentro de una expresión en Maya, dentro de Expression Editor? ¿Cuál es el motivo? Si lo que estás haciendo es un snappara alinear una solución IK a una FK, ¿por qué no lo haces como una herramienta aparte? Por ejemplo, un botón en una shelf.
Bueno, vengo de 3DS Max y siempre he metido todo en un attribute holder del objeto en cuestión, simplemente me parecio más elegante crear un atributo sobre la huella con un desplegable del tipo SNAP TO y elegir entre IK o FK. Aunque si lo dices supongo que, será más normal ponerlo directamente en el shelf con un script.
Cita:
Te recomiendo también, releyendo el contenido de tus mensajes, que no uses los valores locales de posición y rotación para hacer estas operación, sino que leas sobre el comando XForm. Usando XForm -matrix -ws podrás alinear dos objetos independientemente de los valores locales que tengan, ya qué tomará las coordenadas worlden lugar de las que tienen con respecto a su padre.
Aquí es donde pongo cara de WTF estaba haciendo?
Lo colocare así no creo que haya problemas. Muchas gracias por todo.
Hacer keyable un attributo
Lo más cómodo suele ser tirar de botones para shelves. A partir de ahí, puedes complicarte todo lo que necesites. Investiga sobre scriptjobs y scriptnodes (similares a los callbacks de MAX; mucho ojo, porque podrían ralentizar tu escena), porque los segundos pueden ayudarte a hacer lo que necesitas, y se guardan con la escena (los primeros no), de manera que, podrías encapsularlo todo. De todos modos, si el Rig que estás montando es para una empresa, en cuanto referencien tu personaje (que es cómo se suele trabajar), todo ese código que vive dentro del personaje dejará de funcionar, puesto que el namespace es distinto. Ten en cuenta estas variables.