Página 2 de 3 PrimerPrimer 123 ÚltimoÚltimo
Resultados 16 al 30 de 32

Tema: Automatizando una locomotora

  1. #16
    Fecha de ingreso
    Apr 2002
    Mensajes
    14,651

    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í.

  2. #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.

  3. #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.

  4. #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?

  5. #20
    Fecha de ingreso
    Apr 2002
    Mensajes
    14,651

    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.

  6. #21
    Fecha de ingreso
    Apr 2002
    Mensajes
    14,651

    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.

  7. #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.

  8. #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 setup textos.jpg   jerarquia.jpg  
    Aquel que pregunta, es tonto un rato. Aquel que no pregunta, es tonto toda la vida.

  9. #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

  10. #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.

  11. #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.

  12. #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.

  13. #28
    Fecha de ingreso
    Apr 2002
    Mensajes
    14,651

    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.

  14. #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.

  15. #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.

Página 2 de 3 PrimerPrimer 123 ÚltimoÚltimo

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