Gracias Gracias:  0
Resultados 1 al 9 de 9

Tema: Echadme una mano con las mates

  1. #1
    reconvertido Avatar de ikerCLoN
    Fecha de ingreso
    Apr 2002
    Ubicación
    Los Angeles, USA
    Mensajes
    14,911

    Echadme una mano con las mates

    ¡Buenas, troncos y troncas! He empezado hace pocos día a trabajar en Kandor (Granada), y una de mis tareas es desarrollar tecnología para proyectos venideros. Sigo escribiendo código para el rig que estoy construyendo (empecé a colgar cosas en mi blog), y para algunas cosas en concreto estoy teniendo problemas con las mates. Los pocos días que llevo he aprendido mogollón de cosas de trigonometría, vectores, etc., pero hay cosas que aún se me escapan o no sé cómo resolverlas, así que os cuento...

    En concreto, necesito resolver una duda que tiene que ver con el 'snap' entre IK y FK en el brazo. Intentaré describirlo lo mejor posible, que la cosa tiene tela.

    Veamos: mi cadena IK la forman 3 puntos y un 'resolutor' IK. La cadena FK la forman 3 huesos (upperArm, lowerArm y hand). Hacer 'blending' entre ellas es sencillo: con un simple 'spinner', los huesos FK se alinean con los puntos IK. Vamos, nada extraordinario. Y a la hora de alinear una solución a otra, el código para FK > IK esta resuelto, pero el de IK > FK, no.

    En principio, y aunque sé que luego lo tendré que cambiar, mi solución IK sólo consta, como 'manejador', una 'shape' en la mano que controla todas las opciones: 'autoStretch', 'FK/ik Blending', 'Hand Locking', 'Elbow'... esas cosas. Es decir, no tengo en pantalla ningún 'pole vector' que controle el 'swivel'. Este valor no viene dado por la posición de ningún objeto, sino que el 'spinner' llamado 'Elbow' controla la orientación del codo.

    Y después de esta introducción tostón vienen las mates y la geometría. Para alinear el sistema IK al FK necesito hacer dos cosas:

    1) alinear el resolutor IK a la posición de la mano (FK).
    2) alinear el codo IK (punto rojo) a la posición del antebrazo (FK).

    Lo primero, chupao. Lo segundo... se me esta atragantando (el es quema puede llevar a engaño, ya que la posición del codo IK cambiara después de alinear el resolutor con la mano). Basicamente, y después de alinear, tengo un punto I2 desplazado X grados con respecto al punto F2.

    El punto I2, al animarse (recordemos, con el valor 'Elbow'), tiene como recorrido una circunferencia, cuyo radio viene determinado por la distancia entre I1 e I2. Usando algunos datos, es posible obtener la proyección del punto I2 en la recta I1_I3... lo cual marca el radio que tiene esa circunferencia. El centro de la circunferencia es el punto I2'.

    La distancia la averigüé siguiendo esto:

    Distancia de un punto a una recta

    Pero lo que necesito averiguar son las coordenadas de ese punto. De ese modo puedo averiguar el ángulo existente entre I2 y F2 tomando el centro de la circunferencia como referente, y tendré el dato que (creo) necesito para poder alinear la solución IK con la FK. No puedo sacar esa posición mediante la trigonometría que conozco porque tengo sólo la hipotenusa del triángulo I1_I2_I2'. Puede que haya alguna forma de 'revertir' la fórmula de la distancia... pero se me escapa, se me escapa...

    Buf, no sé si se entiende todo esto, pero como habéis algún matemático en el foro... a ver si me podéis echar una mano.

    Datos que conocemos:

    - Todas las distancias y coordenadas entre puntos I y F.
    - La distancia de I2 a I2'.
    - Las longitudes de F1_F2 y F2_F3 no tienen por qué ser idénticas, de modo que I2' no tiene por qué estar en el centro exacto entre ambas.

    ¡¡¡MUCHAS GRACIAS!!!
    Miniaturas adjuntadas Miniaturas adjuntadas Echadme una mano con las mates   -mate1.jpg  
    Última edición por ikerCLoN; 07-04-2008 a las 00:39
    character TD @ Walt Disney Animation Studios

    mi curso de rigging facial :: https://www.domestika.org/en/courses...je-3d/ikerclon
    blog :: www.somosposmodernos.com
    twitter :: www.twitter.com/soyposmoderno
    linkedIn :: www.linkedin.com/in/ikerj

  2. #2
    Tresmiltornillero Avatar de Leander
    Fecha de ingreso
    Oct 2004
    Ubicación
    Zaragoza (ESPAÑA)
    Mensajes
    10,969

    Re: Echadme una mano con las mates

    Ahora viene klópes....

  3. #3
    Pintor de Morales Avatar de Airbrush
    Fecha de ingreso
    Jun 2002
    Ubicación
    Europa y a veces El Reino Unido
    Mensajes
    2,483

    Re: Echadme una mano con las mates

    Anoche iba a enviar esto pero le pasaba algo al foro así que ahí va. Ni idea si los tiros van por aquí por lo que te comento en seguida:

    No estoy nada puesto en rigging aunque si como dices el problema consiste en localizar las coordenadas del punto más cercano a un punto dado y teniendo la función (ecuación) de la recta a la que pertenece ese punto más cercano se puede hallar de este modo, tipo cuenta de la vieja pero efectivo. Es seguro que se puede abreviar este método. Ignoro como encontrar una fórmula para encontrar las coordenadas en cada punto cuando ese punto gira como en el diagrama que muestras del codo. Pero en el caso del problema que presentas de Vitutor las coordenadas en cuestión se hallarían así:

    En el diagrama cartesiano de la solución de distancia entre rectas tenemos las coordenadas p1 y p2 del punto P. Trazando la paralela al eje x sobre el punto P obtenemos un nuevo punto en la recta s que llamamos que con coordenadas q1 y q2 ; q2 la conocemos por ser la misma que p2. q1 se resuelve al tener la ecuación de la recta s:
    3x + 4y = 0
    Una vez que tenemos las coordenadas de los dos puntos P y que nos falta encontrar las coordenadas del punto M que tengo entendido que es lo que buscas. P que y M forman un triángulo recto con el ángulo recto en M.

    Tenemos la distancia PM, el primer cateto, que es la solución primero encontrada.
    Podemos averiguar la distancia de la hipotenusa PQ al tener ya sus coordenadas (q1-p1).
    Esto nos lleva por el teorema de Pitagoras a averiguar la distancia del segundo cateto QM.

    Con estos datos, es decir las tres distancias del triángulo y las coordenadas de dos de sus vértices es ya más fácil averiguar las coordenadas del tercer vértice que es lo que se busca:
    Distancia entre dos puntos cartesianos:

    Entre los puntos que y M:
    Distancia QM = V((m1-q1)+(m2-q2)) donde V es la raíz cuadrada de.
    Entre los puntos P y M:
    Distancia PM = V((m1-p1)+(m2-p2))

    Lo que resulta en una ecuación de dos incógnitas m1 y m2 también fácilmente resuelta con tu conocimiento del tema. Por cierto, no te estaras complicando la vida mucho ahí en Grana ?

    Saludos

  4. #4
    reconvertido Avatar de ikerCLoN
    Fecha de ingreso
    Apr 2002
    Ubicación
    Los Angeles, USA
    Mensajes
    14,911

    Re: Echadme una mano con las mates

    Gracias por la respuesta, Airbrush. Me guardo el hilo y le echo un vistacillo más tarde. Tengo otra solución FK/IK mucho más sencilla, y creo que será la que use finalmente... pero ya por cabezonería me apetece resolver este dilema

    ¡Gracias de nuevo!
    character TD @ Walt Disney Animation Studios

    mi curso de rigging facial :: https://www.domestika.org/en/courses...je-3d/ikerclon
    blog :: www.somosposmodernos.com
    twitter :: www.twitter.com/soyposmoderno
    linkedIn :: www.linkedin.com/in/ikerj

  5. #5
    Senior Member Avatar de tecniKvisual
    Fecha de ingreso
    Jan 2007
    Mensajes
    919

    Re: Echadme una mano con las mates

    ¿si consigues dar con la distancia entre i1 - i2´ obtendrías las coordenadas de i2´?

    si es así, entonces por una simple formula lo puedes sacar...

    si no, entonces se complica la cosa

    suerte

  6. #6
    Moderador Avatar de Klópes
    Fecha de ingreso
    Jul 2005
    Ubicación
    Estuve el día que llovió en los Monegros
    Mensajes
    7,987

    Re: Echadme una mano con las mates

    Holaaa.
    O sea, que tienes el IKerclon y lo quieres convertir a FKrclon... (loool)

    He estado escribiendo algo general, pero antes de seguir me gustaría tener claro lo que quieres. Quieres pasar la solución de IK a FK: esto significa: ¿tienes cuaternios, ángulos? Y quieres ¿coordenadas de los puntos, ángulos?...

    Otra cosa, no entiendo que el recorrido del codo sea esa circunferencia: ¿no rota sobre el hombro, que es I1?

    En todo caso, si la cosa es como dices, el punto se halla como la intersección de la recta I1-I3 con el plano perpendicular que pasa por I2. O sea:

    Sean el vector I1I3 = (A,B,C), y el punto I2 = (a,b,c), entonces el plano es Ax+By+Cz+D=0. Lo que falta es hallar D, pero como el plano contiene a I2, sólo hay que sustituir sus coordenadas en la ecuación:

    Aa+Bb+Cc+D=0, y de aquí:

    D=-Aa-Bb-Cc

    Así tenemos el sistema formado por la ecuación de la recta, y el plano, resolviéndolo obtenemos I2', y el ángulo que hay que girar es:

    cos(ángulo) = v1 · v2 / |v1|·|v2|

    (siendo v1=I2'I2, v2=I2'F2 los vectores que unen I2' con I2 y F2 respectivamente)
    ...y estaba superbueno.
    Y miré su perfil. Y vi que era amigo de Daniela. Puaf.


    Dos niñas en el parque

    no se elevará, nunca más

  7. #7
    Moderador Avatar de Klópes
    Fecha de ingreso
    Jul 2005
    Ubicación
    Estuve el día que llovió en los Monegros
    Mensajes
    7,987

    Re: Echadme una mano con las mates

    A lo que iba:

    Esa fórmula que has encontrado para la distancia a una recta sirve en el plano, no en el espacio; al pasar a 3D, se utiliza en realidad para la distancia de un punto a un plano, y eso no te sirve.
    Supongo que la solución que quieres es específica para ese cadena de dos huesos y 3 puntos, ¿no? Porque esa es la única forma de obtener el punto intermedio exactamente; si quisieras hacer una solución IK general, no hay forma de hallar los puntos intermedios, las soluciones son infinitas, y además tendrías que iterar.
    Supongamos que estuvieras en el plano; si tienes los puntos del hombro (P1) y de la mano (P3), hallar el del codo (P2) es facil: tienes que imaginar una circunferencia centrada en P1 y otra en P3, con los radiós iguales a la longitud de cada hueso, y hacer el sistema de ecuaciones de 2º grado que sale. Aparecen dos soluciones: la buena, y la del codo roto (imagina un escanciador asturiano al que le rotan el brazo 180º en los ejes de sus huesos. Doloroso).
    Eso, si es en el plano.
    En el espacio la cosa se complica, en vez de circunferencias tienes esferas, y la solución no son dos puntos sino la intersección de ambas esferas, que es una circunferencia. Así que tenemos infinitas soluciones; una de esas soluciones es el propio punto I2. La solución a elegir quizá dependa de la rotación inicial que tenga el hueso K1K2.
    ...y estaba superbueno.
    Y miré su perfil. Y vi que era amigo de Daniela. Puaf.


    Dos niñas en el parque

    no se elevará, nunca más

  8. #8
    soy un emigrante Avatar de Pit [reloaded]
    Fecha de ingreso
    Jun 2005
    Ubicación
    viendo bob esponja
    Mensajes
    16,804

    Re: Echadme una mano con las mates

    Cita Iniciado por Klópes Ver mensaje
    Holaaa.
    O sea, que tienes el IKerclon y lo quieres convertir a FKrclon... (loool)

    He estado escribiendo algo general, pero antes de seguir me gustaría tener claro lo que quieres. Quieres pasar la solución de IK a FK: esto significa: ¿tienes cuaternios, ángulos? Y quieres ¿coordenadas de los puntos, ángulos?...

    Otra cosa, no entiendo que el recorrido del codo sea esa circunferencia: ¿no rota sobre el hombro, que es I1?

    En todo caso, si la cosa es como dices, el punto se halla como la intersección de la recta I1-I3 con el plano perpendicular que pasa por I2. O sea:

    Sean el vector I1I3 = (A,B,C), y el punto I2 = (a,b,c), entonces el plano es Ax+By+Cz+D=0. Lo que falta es hallar D, pero como el plano contiene a I2, sólo hay que sustituir sus coordenadas en la ecuación:

    Aa+Bb+Cc+D=0, y de aquí:

    D=-Aa-Bb-Cc

    Así tenemos el sistema formado por la ecuación de la recta, y el plano, resolviéndolo obtenemos I2', y el ángulo que hay que girar es:

    cos(ángulo) = v1 · v2 / |v1|·|v2|

    (siendo v1=I2'I2, v2=I2'F2 los vectores que unen I2' con I2 y F2 respectivamente)

    Dios... lo que daría por poder soltar algo así en un party en ese momento crítico en que la peña se da cuenta de que la bebida empieza a escasear

  9. #9
    Moderador Avatar de Klópes
    Fecha de ingreso
    Jul 2005
    Ubicación
    Estuve el día que llovió en los Monegros
    Mensajes
    7,987

    Re: Echadme una mano con las mates

    Cita Iniciado por Pit [reloaded] Ver mensaje
    Dios... lo que daría por poder soltar algo así en un party en ese momento crítico en que la peña se da cuenta de que la bebida empieza a escasear
    ¿Por qué crees que mis charlas en las blendiberias me las ponen siempre el sábado a partir de las 11 de la noche?
    ...y estaba superbueno.
    Y miré su perfil. Y vi que era amigo de Daniela. Puaf.


    Dos niñas en el parque

    no se elevará, nunca más

Temas similares

  1. Respuestas: 0
    Último mensaje: 06-06-2011, 17:47
  2. Echadme un cable por favor
    Por RavenX en el foro Peticiones y Búsquedas
    Respuestas: 9
    Último mensaje: 05-02-2007, 16:27
  3. Respuestas: 2
    Último mensaje: 24-06-2006, 12:14
  4. Una Mano Please
    Por nachou en el foro Peticiones y Búsquedas
    Respuestas: 2
    Último mensaje: 07-08-2005, 00:02
  5. F1 F1 Echadme un cable
    Por RJ-45 en el foro Modelado
    Respuestas: 4
    Último mensaje: 31-03-2004, 00:35

Actualmente estos son sus permisos de publicación en el foro.

  • -No puedes crear nuevos temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes responder temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes subir archivos adjuntos al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes editar tus mensajes al no estar registrado o no haber iniciado sesión en el foro.
  •