Resultados 1 al 32 de 32

Automatizando una locomotora

  1. #1
    Fecha de ingreso
    Jul 2003
    Mensajes
    78

    Automatizando una locomotora

    Estoy haciendo el Rig de una locomotora para que al circular por un Path a este le dan vueltas las ruedas y las vielas sigan el movimiento.

    Hasta ahora me funciona de la siguiente forma (copio y pasteo de mi blog).



    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 todo object en ruedas delanteras y ruedas traseras.

    Para las vielas colocamos los ejes de coordenadas como en la imagen y creamos 2 dummies centrados como en la imagen.

    Ahora vamos a empezar a automatizar esto, hacemos la siguiente vinculación, seleccionado, por ejemplo, las ruedas traseras, botón 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 máquina).

    Y nos saldrá una ventana como esta:


    Aquí 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 ya está, 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 enlace 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 mantendrá centrado respecto a ellas.

    Y finalmente le toca a la viela a un poco más compleja. Como veréis 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 look at, con la viela a seleccionada nos vamos al menú animación>constraints>look at constraint y vinculamos con el dummy 1.

    En la pestaña motion tendremos el desplegable de lotat constraint donde marcaremos la combinación XYZ para que la pieza se mantenga en la dirección correcta.

    Os dejo aquí el archivo max para que podáis ver el funcionamiento. archivo descarga
    Y el video ruedas (800kb) QuickTime.
    -.

    Ahora bien terminados estos pasos comienzan mis dudas.

    He creado bajo la loco un dummie general, he agrupado toda la locomotora y he enlazando este dummie al grupo cambiando el wireparameters del dummie a la rueda y fijando el dummie respecto al eje x. Ahora al mover el dummie en por la comotora le sigue rodando las ruedas y funcionando todo el automatismo.

    Hasta aquí correcto. Ahora me falta añadir a este dummie un Spline para el recorrido en 8 de la maqueta donde quiero que circule. Si añado este controlador, el anterior desaparece. Para esto me han dicho que use un controlador de capas position list, pero sigue estando desvinculado el automatismo.
    ¿Alguien sabe dónde me equivoco?
    Por cierto, podéis seguir el proceso del tren en mí blog http://freevisionstudio.blogspot.com/ saludos.

    -- IMÁGENES ADJUNTAS --



    Miniaturas adjuntas Miniaturas adjuntas Clic en la imagen para ver su versión completa. 

Nombre: ruedas.jpg 
Visitas: 2866 
Tamaño: 46.0 KB 
ID: 41495   Clic en la imagen para ver su versión completa. 

Nombre: wireparams.jpg 
Visitas: 875 
Tamaño: 53.0 KB 
ID: 41496  
    Archivos adjuntados Archivos adjuntados
    Última edición por 3dpoder; 03-01-2007 a las 00:07 Razón: Adjuntar la imagen

  2. #2
    Fecha de ingreso
    Apr 2006
    Mensajes
    2,391

    Automatizando una locomotora

    Hola, me ha dado error el max, con que versión lo has hecho? Un saludo.

  3. #3
    Fecha de ingreso
    Jul 2003
    Mensajes
    78

    Automatizando una locomotora

    Esta en versión 9.

  4. #4
    Fecha de ingreso
    Apr 2002
    Mensajes
    14,668

    Automatizando una locomotora

    Hey, compadre. Esta noche cuando llegue a casa intentaré echarle un ojo. A ver si todos estos meses de lidiar controladores y pivotes han dado su fruto. Un abrazo.

    Posdata: y, por cierto, tremendo curro.

  5. #5
    Fecha de ingreso
    Apr 2006
    Mensajes
    2,391

    Automatizando una locomotora

    Tal vez te pueda servir esto. Mira el video, el coche está en el lugar, solo muevo las texturas y la cámara. Para planos cortos en línea recta te puede servir. https://www.foro3d.com/showpost.php?...3&postcount=26. Un saludo.

  6. #6
    Fecha de ingreso
    Apr 2006
    Mensajes
    2,391

    Automatizando una locomotora

    Esta en versión 9.
    Ha vale, yo tengo la 8. Bueno, mira lo del coche.

  7. #7
    Fecha de ingreso
    Jul 2003
    Mensajes
    78

    Automatizando una locomotora

    Gracias IkerClon, feliz año, pensaba llamarte para preguntártelo, pero pensé esperar porque digo, lo mismo este tío esta de resaca todavía.

    A ve si me lo puedes mirar que el Promineo lo pillo a trompicones y ando loco con este automatismo. Saludos.

  8. #8
    Fecha de ingreso
    Jul 2003
    Mensajes
    78

    Automatizando una locomotora

    Gracias TBC3D está muy bien, pero no es el caso, quiero que el tren se mueva por el escenario.

  9. #9
    Fecha de ingreso
    Mar 2006
    Mensajes
    7,504

    Automatizando una locomotora

    Freevision, la próxima vez que vaya a la oficina de Marbella te voy a llamar. Y nos vamos a tomar una cervezas.
    Última edición por jam; 03-01-2007 a las 05:55

  10. #10
    Fecha de ingreso
    Jul 2003
    Mensajes
    78

    Automatizando una locomotora

    Hombre no suelo hacer mucho caso a las citas con hombres, pero a las cervezas sí, aunque últimamente soy más de vinos, cosas de la edad.

  11. #11
    Fecha de ingreso
    Mar 2006
    Mensajes
    7,504

    Automatizando una locomotora

    Hombre no suelo hacer mucho caso a las citas con hombres, pero a las cervezas sí, aunque últimamente soy más de vinos, cosas de la edad.
    Vaya, buen trabajo, compañero.
    Última edición por jam; 03-01-2007 a las 05:55

  12. #12
    Fecha de ingreso
    Jul 2003
    Mensajes
    78

    Automatizando una locomotora

    Mientras saco lo del controlador ahí va un rendesillo con el nuevo Shader para la loco.



    -- IMÁGENES ADJUNTAS --
    Miniaturas adjuntas Miniaturas adjuntas Clic en la imagen para ver su versión completa. 

Nombre: loco001b.jpg 
Visitas: 1153 
Tamaño: 116.9 KB 
ID: 41499  
    Última edición por 3dpoder; 03-01-2007 a las 00:12 Razón: Adjuntar la imagen

  13. #13
    Fecha de ingreso
    Apr 2006
    Mensajes
    2,391

    Automatizando una locomotora

    Que guapa la locomotora, he visto tu web está muy bien todo el tren.

  14. #14
    Fecha de ingreso
    Apr 2005
    Mensajes
    1,621

    Automatizando una locomotora

    Me he bajado tu archivo y me temo que tiene unas cuantas cosas que no me cuadran. Por de pronto las piezas esas de las ruedas tienen una escala de un 1.4 no sé que %.

    Voy a ver si reproduzco lo que quieres a mi bola y si lo consigo lo subo.
    Aquel que pregunta, es tonto un rato. Aquel que no pregunta, es tonto toda la vida.

  15. #15
    Fecha de ingreso
    Jul 2003
    Mensajes
    78

    Automatizando una locomotora

    Bueno la escala no creo que tenga mucho que ver en esto, de todas formas, creo que lo tengo al tamaño que quería, 108mm para toda la locomotora, pero vamos, ya te digo que ahí no me preocupa, eso es una copia mala de las ruedas, lo definitivo lo tendré que hacer en el archivo original dónde está todo el tren. Gracias por tu ayuda.

  16. #16
    Fecha de ingreso
    Apr 2002
    Mensajes
    14,668

    Automatizando una locomotora

    Freevision, le hemos echado un vistazo al archivo aquí en el trabajo, mi compañero kai y yo, y algo hemos sacado en claro. Como no puedo mandarte el archivo, intento reproducir lo mismo en casa, y te lo mando con sus consiguientes explicaciones. De momento, lo que deberías hacer es librarte de wirear. Si tú wireas dos propiedades de dos objetos (por ejemplo, posición), y luego vinculas uno de ellos a otro, y mueves este último, la propiedad que quieres dirigir no funciona. Es lo que te ocurre al mover el ayudante general.

    Básicamente, habría que hacer dos cosas.

    Limpiar el archivo, desechando los wire y las transformaciones heredadas a medias (por ejemplo, el hecho que el dummie que controla la viela a sólo herede un eje de posición del dummie que está vinculado a la rueda).

    Crear una expresión que permita que las ruedas giren automáticamente según lo que avance la máquina en cuestión.

    Lo segundo, es trigonometría, que como ando bastante pez, lo repaso, lo entiendo y esta noche intento comentártelo por aquí.

  17. #17
    Fecha de ingreso
    Jul 2003
    Mensajes
    78

    Automatizando una locomotora

    Lo del wire me lo he imaginado e incluso pensado que haciendo un script seria todo mucho más fácil. Gracias por mirarlo IkerClon, estaré pendiente de tu envío.

  18. #18
    Fecha de ingreso
    Apr 2005
    Mensajes
    1,621

    Automatizando una locomotora

    Ya lo tengo. Creo que es esto lo que quieres. Échale un vistazo y si te vale y no lo entiendes trato de explicártelo despacio, que ahora estoy cansado.

    -- IMÁGENES ADJUNTAS --
    Archivos adjuntados Archivos adjuntados
    Aquel que pregunta, es tonto un rato. Aquel que no pregunta, es tonto toda la vida.

  19. #19
    Fecha de ingreso
    Jul 2003
    Mensajes
    78

    Automatizando una locomotora

    Pues sí, además estuve hace un rato mirando un tutorial de las expresiones, es lo mismo que has hecho lo que pasa es que no he sabido sacarlo.

    A ver si me lo puedes explicar, lo de añadir los float scripts para las expresiones lo tengo más o menos claro, pero como enganchas el dummie?

  20. #20
    Fecha de ingreso
    Apr 2002
    Mensajes
    14,668

    Automatizando una locomotora

    Hey, Nessito, has puesto la misma expresión que usamos en el trabajo. Hasta casi coincidimos en el nombre de las variables.

    Sobre el dummie, creo que puedo echar una mano, aunque nosotros variamos el método, pero creo que en esencia es lo mismo. A ver si me sale, usaré la nomenclatura de tu archivo para no liarnos.

    Básicamente, necesitamos saber la variación de distancia que hay entre dummy01 y el eje de las ruedas delanteras. Más concretamente, necesitas la variación de distancia en el eje x, que es el eje en el que se moverá dummy02. Para averiguarlo, hay varias maneras.

    Una de ellas es usando ExposeTm, que encontraras en el apartado helpers. Dummy01 tiene que ser el expose node. Creamos un punto en el centro del eje de las ruedas (point01), y le ponemos, por ejemplo, un position connstraint a éstas (hay soluciones más elegantes, pero ésta funciona). Point01 será el local reference node.

    En el apartado expose values, busca local position, y observa el valor x. Ése es el valor que te interesa. Wirea la posición x a ese valor del nodo ExposeTm, y listo, espera, fastidiar, ahora no me sale supongo que será el hecho de que antes hemos desmontado tu escena, y hemos vuelto a armarla de nuevo, y ahora parto de la escena tal cual tú la das.

  21. #21
    Fecha de ingreso
    Apr 2002
    Mensajes
    14,668

    Automatizando una locomotora

    Vaya, que he publicado sin querer.

    La segunda manera implica usar las matrices de transformación de dummy01 y point01 (el producto de una por el inverso de la otra), y un controlador de expresión. Pero como esto me queda grande, y sólo recuerdo vagamente las explicaciones de mi compañero, mejor me callo.

    En resumen, lo que hemos intentado hacer (mi compañero kai lo ha conseguido, yo no soy capaz de reproducirlo aquí en mi casa) es blindar el tren, de manera que, seas capaz de movrlo y rotarlo en cualquier coordenada espacial, cosa que ahora no puedes hacer. Del mismo modo, te interesa hacer que todas las relaciones sean lo más independientes posible. Es decir, usar en menor medida los Inherit a mitad marcar (hereda todas las transformaciones, o ninguna) y wirear lo justo.

    Espero que hayas sacado algo en claro de esto. La solución que te da Nessito creo que te satisfará este Nessito es un monstruo.

    Venga, tío, un abrazo, y ánimo con ese trenecillo.

  22. #22
    Fecha de ingreso
    Jul 2003
    Mensajes
    78

    Automatizando una locomotora

    Ni historia idea macho, no me enterado de nada, a ver si consigo descifrar el de Nessito.

  23. #23
    Fecha de ingreso
    Apr 2005
    Mensajes
    1,621

    Automatizando una locomotora

    Este Nessito es un monstruo.
    Ojalá todos pensasen igual (vuelvo a estar sin curro). Bueno freevision, a ver si te lo cuento, pero es bastante simple.

    Consideraciones previas.

    Todo lo que te ha comentado IkerClon.

    Los inherits son un poco un arma de doble filo, son una manera rápida y fácil de restringir movimientos, rotaciones y tal, pero no discriminan. En el caso del pistón/viela/cigueñal, es fácil no heredar la rotación y solo un eje de movimiento del pistón con respecto al cigueñal y todo rula. Hasta que quieres mover y, sobre todo, rotar todo el conjunto, ya sea enlazando a otro objeto, ya sea a pelo. Si seteas el pistón para que solo herede un eje, no lo hace respecto de su ancestro directo, si no de toda la jerarquía que tenga por encima. Resultado: cagada. Conclusión: los inherits solo para cosas, digamos, globales.

    Para que hablemos de lo mismo:
    Jerarquia.



    El tema.



    Ningún objeto tiene desactivados inherits de ninguna clase.

    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 look at 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:
    -O te pones en el constraint los ejes como dios manda (lo que hice yo)o.

    Le das al checkbox kep initial offset (más simple y rápido pienso yo).

    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. Básicamente dice:
    La posición en x es la posición en x del point01 respecto de point03.

    Esto es lo mismo que te comentaba IkerClon de hacer con un helper ExposeTm.

    Al ExposeTm le das como nodo el point01 y como nodo de referencia el point03, y en local position el valor x muestra exactamente lo mismo que el resultado de mi controlador script.

    El point03 tiene un Path constraint a la forma del recorrido (forma que deberías usar como Path para hacerte un Loft para las vías).

    Las dos ruedas son hijas del point03 (como debería serlo el resto de tu locomotora) y tienen un controlador script (instanciado) en el eje y (dependerá del eje sobre el que deban girar), que dice (copio/pego).
    Código:
    Degtorad(((Pathlength/ruedalength)*-(pathpoint/100.0))*360.0)
    Relación 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) = número de vueltas que las ruedas deben hacer para completar el recorrido.
    -(pathpoint/100.0) = posición 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 Iván al revés de lo que deberían (depende de la orientación de los ejes de las ruedas y del sentido del Path).

    Multiplicando estas dos expresiones se obtiene la rotación que deberían tener las ruedas en un punto cualquiera del Path en número fraccional de vueltas, por eso.

    Multiplicamos este valor por 360.0, para obtener el valor en grados.

    Y todo este chorizo se lo pasamos a la función Degtorad que nos lo humilde en radianes (que es como lo necesita el controlador eulerxyz para que rule bien).

    Consideraciones y mejoras.

    En vez de multiplicar el número de vueltas por 360 y pasarlo a radianes con la función Degtorad, se podría multiplicar por (2*pi) y listo (recordemos: 360 grados son 2 pi radianes). Pero lo he dejado así en favor de la claridad (no sé tú, pero a mí me cuesta pensar directamente en radianes).

    Si quieres que la cosa sea un poco más flexible, se puede sustituir la variable Pathlength por simplemente Path y asignarla al nodo del Path.

    Quedando la formula de esta guisa:
    Código:
    (((curvelength Path)/ruedalength)*-(pathpoint/100.0))*2*pi
    De ese modo si quieres cambiar el recorrido que sigue la locomotora, cambias el shape del Path constraint y apuntas la variable al nuevo Path y listo, sin tocar el script para nada. La desventaja es que para cada fotograma se tiene que calcular la longitud del Path, pero es una función bastante rápida, así que, no creo que ralentice mucho el tema.

    Bueno, espero que esté todo claro.

    -- IMÁGENES ADJUNTAS --

    Miniaturas adjuntas Miniaturas adjuntas Clic en la imagen para ver su versión completa. 

Nombre: setup textos.jpg 
Visitas: 208 
Tamaño: 50.3 KB 
ID: 41614   Clic en la imagen para ver su versión completa. 

Nombre: jerarquia.jpg 
Visitas: 221 
Tamaño: 50.6 KB 
ID: 41615  
    Aquel que pregunta, es tonto un rato. Aquel que no pregunta, es tonto toda la vida.

  24. #24
    Fecha de ingreso
    Jul 2003
    Mensajes
    78

    Automatizando una locomotora

    Quiero que le eches un vistazo tu e IkerClon al archivo que adjunto, es otra forma de hacerlo más fácil, supuestamente. Voy a leer lo tuyo y a ponerlo en practica.

    -- IMÁGENES ADJUNTAS --
    Archivos adjuntados Archivos adjuntados

  25. #25
    Fecha de ingreso
    Apr 2005
    Mensajes
    1,621

    Automatizando una locomotora

    Vale, en realidad es lo mismo, solo que has sustituido el controlador script por un wire. También vale, pero por que multiplicas por 1000? Por que no por 234.715?
    La cuestión es la relación entre la longitud de la rueda y la longitud del Path.

    Si substituyes en tu wire lo que tienes por esto otro:
    Percent *((1702.9/225.252)*2*pi).

    La rueda esa te irá exactamente a la velocidad que debe.

    Pero repito, es exactamente lo mismo, solo has cambiado el script por un wire.
    Aquel que pregunta, es tonto un rato. Aquel que no pregunta, es tonto toda la vida.

  26. #26
    Fecha de ingreso
    Jul 2003
    Mensajes
    78

    Automatizando una locomotora

    Comprendo, entonces es más sencillo así que, con el script ¿no? Ya no lo digo solo por mi sino por todo el que intente hacerlo y comprenderlo.

  27. #27
    Fecha de ingreso
    Apr 2005
    Mensajes
    1,621

    Automatizando una locomotora

    A mi juicio es como la canción. Maneras de vivir. Pero un script es mucho más flexible que un wire. En tu solución, si cambias el Path, tienes que cambiar el wire, en mí solución no.

    Además, tú tienes 2 ruedas que deben girar a la par. Con el wire tienes que trabajar el doble. Con el script, simplemente copias el controlador como instancia y listo.
    Última edición por Nessito; 05-01-2007 a las 13:34
    Aquel que pregunta, es tonto un rato. Aquel que no pregunta, es tonto toda la vida.

  28. #28
    Fecha de ingreso
    Apr 2002
    Mensajes
    14,668

    Automatizando una locomotora

    Con el script, simplemente copias el controlador como instancia y listo.
    Cosa que también se puede hacer desde el Track View: selecciona la propiedad, botón derecho, copias, te vas a la propiedad del otro objeto (en este caso, la otra rueda), botón derecho, pegas como instancia, y a volar.

  29. #29
    Fecha de ingreso
    Jul 2003
    Mensajes
    78

    Automatizando una locomotora

    Este fin de semana lo pruebo, os debo una vuelta en mí tren, a ver si término un par de casas que estoy haciendo para pagarme el don Simon y me pongo.

  30. #30
    Fecha de ingreso
    Jul 2003
    Mensajes
    78

    Automatizando una locomotora

    Bueno después de un tiempo de paron, he retomado la escena y la maqueta de tren, aquí os dejo un test de video del tren andando espero que os guste a pesar de la pobreza de calidad que ofrece los videos YouTube, al menos se ve que anda. http://www.youtube.com/watch?v=czi_anc-rms. Saludos.

  31. #31
    Fecha de ingreso
    Jun 2005
    Mensajes
    16,801

    Automatizando una locomotora

    Vaya, es una pena la calidad, sí. No consigo apreciar bien la animación de las ruedas y todo eso, que era lo que movió a subir el hilo.
    Ahora que soy inmensamente rico, me ha dado por aprender Blender

  32. #32
    Fecha de ingreso
    Jul 2003
    Mensajes
    78

    Automatizando una locomotora

    Bueno las ruedas van perfecto gracias al script solo que no se aprecian porque la mayor parte de los vagones tienen ruedas planas sin radios y la que si tiene da la impresión de que ruedan al revés, este es un efecto que, aunque si que ruedan correctamente se suele apreciar en los vehículos con ruedas de radios en movimiento. Yo en su momento creía que estaba al revés y no era así.

Temas similares

  1. Locomotora d.h.15
    Por fevas en el foro Trabajos en Proceso
    Respuestas: 15
    : 07-07-2017, 00:04
  2. Locomotora 3d
    Por panchocarlos en el foro Trabajos Finalizados
    Respuestas: 2
    : 27-04-2011, 23:29
  3. Automatizando el calculo de animación en Vray
    Por RonDamon en el foro Noticias 3D
    Respuestas: 0
    : 19-10-2009, 11:07
  4. Locomotora
    Por er_primi en el foro Trabajos en Proceso
    Respuestas: 5
    : 23-09-2007, 18:59
  5. Locomotora cooke 2-6-0
    Por arodriguezf en el foro Trabajos en Proceso
    Respuestas: 21
    : 01-06-2006, 02:16