El video del tren andando al completo con todo el rig ya ajustado.
Etiquetas:
Herramientas
Poly Attach Multiple
Este es un sencillo script muy útil que tengo añadido a mi barra de tareas, con el puedes asociar un grupo de objetos seleccionados con un solo click.
undo on ( selectionArray = selection as array; for obj in selectionArray do ( convertTo obj PolyMeshObject ) try ( for i = 1 to (selectionArray.count - 1) do polyOp.attach selectionArray[selectionArray.count] selectionArray[i]; ) catch(print "estas intentando unir objetos incompatibles") ) |
Etiquetas:
Porfolio
Vagonetas
Etiquetas:
CH-Maqueta Tren
Automatizando la Loco II
Bueno, despues de probar mil cosas y obviando el sistema que cree antes para la locomotora sacamos como conclusión y gracias a la ayuda de Nessito e Ikerclon que esta es la solución más viable para que la locomotora no se desmonte al moverse por el recorrido.
Borramos todos los controles anteriores, wires y demas y lo replanteamos así:

(Comentarios de Nessito)
Las dos vielas tienen el pivote en el mismo sitio (la X marca el lugar) y son hijas de la rueda trasera. Las dos tienen un lookAt constraint, una al Point01 y otra al Point02 (está claro cual a cual).
Al asignar el constraint, lo normal es que se descabalen por el tema de los ejes. Soluciones hay dos:
-Poner en el constraint los ejes como dios manda o...
-...Dar al checkbox "Keep Initial Offset"
El point01 es hijo de la rueda delantera y el point02 es hijo del point03 (que es el que controla el movimiento de toda la locomotora).
El point02 tiene un script controller en el eje x para que siga el movimiento en ese eje del point01 tomando como referencia el point03. Basicamente dice:
"La posicion en x es la posicion en x del point01 respecto de point03"
El point03 tiene un path constraint a la forma del recorrido (forma para usar como path para hacer un loft para las vias).
Las dos ruedas son hijas del point03 ademas del resto de la locomotora con un controlador script (instanciado) en el eje Y (dependerá del eje sobre el que deban girar), que dice:
degtorad(((pathlength/ruedalength)*-(pathpoint/100.0))*360.0)
Relacion de variables:
- pathlength = longitud del path (sacado de poner en el listener "curvelength $" con el path seleccionado)
- ruedalength = longitud de la circunferencia de la rueda (2*pi*R)
- pathpoint = el punto del recorrido en el que se encuentra el point03 (esto es, una variable asignada al controlador percent del path constraint del point03)
Por tanto:
- (pathlength/ruedalength) = numero de vueltas que las ruedas deben hacer para completar el recorrido
- (pathpoint/100.0) = posicion del point03 sobre el recorrido en el rango 0-1. El menos que tiene delante es para invertir el sentido de giro, porque en mi caso las ruedas iban al reves de lo que deberian (depende de la orientacion de los ejes de las ruedas y del sentido del path)
- Multiplicando estas dos expresiones se obtiene la rotacion que deberian tener las ruedas en un punto cualquiera del path en "numero fraccional de vueltas", por eso...
- ...Multiplicamos este valor por 360.0, para obtener el valor en grados
- Y todo esto se lo pasamos a la funcion degtorad que nos lo convierte en radianes (que es como lo necesita el controlador eulerXYZ para que funcione bien)
Con todo esto todavia tengo un par de fallos en la orientación de los lookat contraints que espero tener corregidos en breve y os podre mostrar el primer video de la locomotora rodando.
Ahora se porque me meti a modelar y texturar y no a animar.
Borramos todos los controles anteriores, wires y demas y lo replanteamos así:


Las dos vielas tienen el pivote en el mismo sitio (la X marca el lugar) y son hijas de la rueda trasera. Las dos tienen un lookAt constraint, una al Point01 y otra al Point02 (está claro cual a cual).
Al asignar el constraint, lo normal es que se descabalen por el tema de los ejes. Soluciones hay dos:
-Poner en el constraint los ejes como dios manda o...
-...Dar al checkbox "Keep Initial Offset"
El point01 es hijo de la rueda delantera y el point02 es hijo del point03 (que es el que controla el movimiento de toda la locomotora).
El point02 tiene un script controller en el eje x para que siga el movimiento en ese eje del point01 tomando como referencia el point03. Basicamente dice:
"La posicion en x es la posicion en x del point01 respecto de point03"
El point03 tiene un path constraint a la forma del recorrido (forma para usar como path para hacer un loft para las vias).
Las dos ruedas son hijas del point03 ademas del resto de la locomotora con un controlador script (instanciado) en el eje Y (dependerá del eje sobre el que deban girar), que dice:
degtorad(((pathlength/ruedalength)*-(pathpoint/100.0))*360.0)
Relacion de variables:
- pathlength = longitud del path (sacado de poner en el listener "curvelength $" con el path seleccionado)
- ruedalength = longitud de la circunferencia de la rueda (2*pi*R)
- pathpoint = el punto del recorrido en el que se encuentra el point03 (esto es, una variable asignada al controlador percent del path constraint del point03)
Por tanto:
- (pathlength/ruedalength) = numero de vueltas que las ruedas deben hacer para completar el recorrido
- (pathpoint/100.0) = posicion del point03 sobre el recorrido en el rango 0-1. El menos que tiene delante es para invertir el sentido de giro, porque en mi caso las ruedas iban al reves de lo que deberian (depende de la orientacion de los ejes de las ruedas y del sentido del path)
- Multiplicando estas dos expresiones se obtiene la rotacion que deberian tener las ruedas en un punto cualquiera del path en "numero fraccional de vueltas", por eso...
- ...Multiplicamos este valor por 360.0, para obtener el valor en grados
- Y todo esto se lo pasamos a la funcion degtorad que nos lo convierte en radianes (que es como lo necesita el controlador eulerXYZ para que funcione bien)
Con todo esto todavia tengo un par de fallos en la orientación de los lookat contraints que espero tener corregidos en breve y os podre mostrar el primer video de la locomotora rodando.
Ahora se porque me meti a modelar y texturar y no a animar.
Etiquetas:
CH-Maqueta Tren

Una vez superada parte de la resaca de anoche y en un punto de alto de relajación me he puesto a elaborar un mini tuto de como he hecho la automatización de los ejes de la locomotora.
Primeramente he hecho las respectivas asociaciones con cada una de las piezas:
- 2 ruedas delanteras y su eje
- 2 ruedas traseras y su eje
- 2 barras de viela A (derecha e izquierda)
- 2 barras de viela B (derecha e izquierda)
Una vez ya tienes las piezas asociadas lo propio es renombrarlas:
- LOCO_Ruedas_Delanteras
- LOCO_Ruedas_Traseras
- LOCO_Viela_A
- LOCO_Viela_B
Centramos los respectivos ejes de coordenadas, Pestaña Hierarchy>Affect Pivot Only>Center to Object en ruedas delanteras y ruedas traseras.
Para las vielas colocamos los ejes de coordenadas como en la imagen y creamos 2 dummys centrados como en la imagen.
Ahora vamos a empezar a automatizar esto, hacemos la siguiente vinculación, seleccionado por ejemplo las ruedas traseras, boton derecho Wire Parameters>Transform>Rotation> Y Rotation y con el enlace marcamos las ruedas delanteras. (eje Y porque es el eje de rotación de mi maquina).
Y nos saldra una ventana como esta:
Aqui solo tenemos que activar la vinculación, hacemos click en la flecha central que nos indica que vamos a vincular el movimiento de la rueda trasera con la rueda delantera y click en Conectar (esta donde ahora mismo pone Update). Y yasta, las ruedas traseras giraran al mismo tiempo de las delanteras, haz la prueba.
Ahora vamos a vincular los ejes de la siguiente forma:
Vamos a el icono de linkear objetos y marcamos.
- Dummy 1 con Ruedas Traseras
- Dummy 1 con Dummy 2
Ahora los configuramos, en la persiana Hierarchy en Link Info nos vamos al desplegable Inherit y desmarcamos para el Dummy 1 las 3 casillas de Rotate XYZ. Para el Dummy 2 desmarcamos las casillas YZ.
Ahora los ejes, vinculamos la viela B con el Dummy 1, ahora al girar las ruedas se mantendra centrado respecto a ellas.
Y finalmente le toca a la viela A un poco mas compleja. Como vereis he centrado su pivote en la cabeza a la altura del Dummy 2, linkeamos:
- Viela A con Dummy 2
Ahora para que el otro lado pivote con el eje de la rueda trasera aplicamos un LookAt, con la viela A seleccionada nos vamos al menu Animación>Constraints>LookAt Constraint y vinculamos con el Dummy 1.
En la pestaña Motion tendremos el desplegable de LootAt Constraint donde marcaremos la combinación XYZ para que la pieza se mantenga en la direccion correcta.
Os dejo aqui el archivo Max para que podais ver el funcionamiento. Archivo descarga
Saludos a todos y Feliz Año Nuevo
Automatizando la Loco

Una vez superada parte de la resaca de anoche y en un punto de alto de relajación me he puesto a elaborar un mini tuto de como he hecho la automatización de los ejes de la locomotora.
Primeramente he hecho las respectivas asociaciones con cada una de las piezas:
- 2 ruedas delanteras y su eje
- 2 ruedas traseras y su eje
- 2 barras de viela A (derecha e izquierda)
- 2 barras de viela B (derecha e izquierda)
Una vez ya tienes las piezas asociadas lo propio es renombrarlas:
- LOCO_Ruedas_Delanteras
- LOCO_Ruedas_Traseras
- LOCO_Viela_A
- LOCO_Viela_B
Centramos los respectivos ejes de coordenadas, Pestaña Hierarchy>Affect Pivot Only>Center to Object en ruedas delanteras y ruedas traseras.
Para las vielas colocamos los ejes de coordenadas como en la imagen y creamos 2 dummys centrados como en la imagen.
Ahora vamos a empezar a automatizar esto, hacemos la siguiente vinculación, seleccionado por ejemplo las ruedas traseras, boton derecho Wire Parameters>Transform>Rotation> Y Rotation y con el enlace marcamos las ruedas delanteras. (eje Y porque es el eje de rotación de mi maquina).
Y nos saldra una ventana como esta:

Ahora vamos a vincular los ejes de la siguiente forma:
Vamos a el icono de linkear objetos y marcamos.
- Dummy 1 con Ruedas Traseras
- Dummy 1 con Dummy 2
Ahora los configuramos, en la persiana Hierarchy en Link Info nos vamos al desplegable Inherit y desmarcamos para el Dummy 1 las 3 casillas de Rotate XYZ. Para el Dummy 2 desmarcamos las casillas YZ.
Ahora los ejes, vinculamos la viela B con el Dummy 1, ahora al girar las ruedas se mantendra centrado respecto a ellas.
Y finalmente le toca a la viela A un poco mas compleja. Como vereis he centrado su pivote en la cabeza a la altura del Dummy 2, linkeamos:
- Viela A con Dummy 2
Ahora para que el otro lado pivote con el eje de la rueda trasera aplicamos un LookAt, con la viela A seleccionada nos vamos al menu Animación>Constraints>LookAt Constraint y vinculamos con el Dummy 1.
En la pestaña Motion tendremos el desplegable de LootAt Constraint donde marcaremos la combinación XYZ para que la pieza se mantenga en la direccion correcta.
Os dejo aqui el archivo Max para que podais ver el funcionamiento. Archivo descarga
Saludos a todos y Feliz Año Nuevo
Suscribirse a:
Entradas (Atom)