Gracias a los dos por responder. César Sáez: El crea un ayudante que lo alinea con el Twist Bone y lo enlaza a la clavícula, luego al bone en position x le aplica un float script (aquí ya me mareo porque la interfaz es diferente,) y luego le aplica un código, pero es que, luego lo cambia añadiéndole un custom attribute, y otro código parecido, pero, lo hago y no me sale y cuando me ha salido algo el bone va a su bola rotando ha 100 por hora.
IkerClon:
Estuve mirando lo del ExposeTm, pero claro, no sé cómo vincular los datos del ExposeTm al hueso, me imagino que también será en float script, pero no sé. Gracias otra vez.
Hola, supongamos que quieres calcular la diferencia de la rotación entre dos objetos, en este caso en el eje X que es el que atraviesa al hueso en su largo, primero necesitas comparar la rotación con algún objeto, como para tener un punto de partida. Es por eso que crea un helper alineado con el hueso, así las rotaciones de ambos objetos coinciden y por lo tanto la diferencia de rotación entre el helper y el hueso daría 0 lo cual significa que el hueso no rotó con respecto a su referencia, luego en el eje que quieres calcular automáticamente la rotación pones un script controller, en este caso en el eje X del hueso, lo cual te abre una ventana flotante. Y ahí yo lo hago de esta forma, creo dos variables a y b. Seleccionando la variable a, hago click en assing track con el objeto helper seleccionado (al abrirse una ventana flotante el objeto seleccionado queda marcado en amarillo) buscas el nombre del objeto que seleccionaste en la lista y le das ok. Esto hace que la variable a siempre siga los valores de transform de ese objeto y te los guarde en a, ejemplo $point01.transform que devuelve coordenadas de tipo matrix3. Ahora haces con b lo mismo, pero seleccionando el hueso, con lo cual vas a tener siempre guardadas en a y b las coordenadas de ambos objetos y el script sería algo así.
Rotación = (a.transform * inverse b.transform), rotation as eulerangles.
Degtorad -rotación.x.
Esto guarda en la variable rotación la diferencias de posición, rotación y escala de ambos objetos, de lo cual usamos solo la parte de rotación (.rotation) y la transformamos a ángulos (as eulerangles) porque max te va a devolver la rotación en cuaternións en fin, luego las convertís a radianes con Degtorad e invertís el valor o no, dependiendo si gira para el lado que tu quieres.
Otra de las cosas que puedes hacer es poner un script controller a cada hueso de la cadena copiándolo y pegando como copy, no instancia, desde el curve editor y multiplicar el valor Degtorad -rotación.x * 0.75 y el siguiente hueso por 0*5 o lo que tu quieras para que cada hueso rote gradualmente en las proporciones que tu quieras. Suerte.