Extracción de rotación paul neale
Buenas, alguien podría explicarme la extracción de rotación que hace Paul Neale en sus videos de rigging, no me sale y no lo entiendo y en su página lo hace de otra manera. No sé. Y en la ayuda de Maxscript me dice que DependsOn en 3ds Max 8 está obsoleto, no lo entiendo, por favor una ayuda, gracias.
Extracción de rotación paul neale
Según recuerdo era su forma de lograr que el primer twist bone del brazo estuviera alineado con la clavícula. El tema estaba bastante bien explicado en sus vídeos, pero si no entiendes una parte supongo que, te podremos echar una mano, ¿Qué parte no entiendes? ¿Cuál es la duda?
Lo del DependsOn es porque en aquella época (3ds Max 6) no había nodos en los scripts/expression controllers y era una forma de lograr actualización en tiempo real basado en el nombre de los objetos, en versiones posteriores de max hay toda una interfaz para guardar nodos directamente en el controlador por lo que el DependsOn ya no es necesario. Saludos.
Extracción de rotación paul neale
No he visto el video, pero para extraer información de las transformaciones de un objeto, Paul suele usar un ayudante ExposeTm (el mejor descubrimiento del universo junto al sándwich de jamón y queso).
Extracción de rotación paul neale
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 a 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.
Extracción de rotación paul neale
He vuelto a probar con ExposeTm y me ha salido (eso creo), en un brazo con IK he colocado un dummie alineado al humero y enlazado a clavícula, he creado un Exposé también y en Exposé node he puesto el humero y luego con wire parameters he vinculado la rotación_x del dummie al worldeuler_x del ExposeTm (para comprobar en wireparameters he puesto -world_euler_x)para que gire en dirección contraria).
Extracción de rotación paul neale
Cuando te gira 100 por hora yo sospecho que es porque no convertiste los grados a radianes para establecer la rotación.
Extracción de rotación paul neale
Cita:
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.