-
Hallar posición correcta para un pole vector o punto que controle el swivel angle
Hola, en una cadena que tenga IK y FK me gustaría saber si habría alguna forma en la que pudiera mediante el script averiguar cuál sería la posición de un punto que haga la función de pole Vector en dicha cadena, pero que no haga que esta cambie en su orientación original.
Si mantengo los puntos de referencia que he utilizado para crear la cadena de hueso en un plano, mientras el punto que determine ese pole Vector se mantenga en ese plano no hay variación. El problema viene cuando a causa del modelo o malla a la que tengo que ajustar dichos puntos tiene, por ejemplo, los brazos de tal forma que no están determinados dentro de un plano.
Como sé que hay verdaderos cracks del scripting por este foro dejo mi pregunta por si alguien me puede guiar en la dirección correcta.
Espero que se halla entendido mi explicación, si no es así dejadmelo saber.
-
Hallar posición correcta para un pole vector o punto que controle el swivel angle
Mientras tengas 3 puntos de referencia siempre puedes definir un plano, no estará alineado con el sistema de coordinadas, pero seguirá siendo un plano y conceptualmente todo lo que mencionas seguirá siendo válido.
Como solucionarlo (en plan casero):
1.- Creamos un null/dummie/locator y lo posicionamos en a.
2.- Creamos un direction/look at/aim constraint del null hacia el punto c.
3.- Asignamos como upvector/upnode del constraint el punto b.
4.- Eliminamos el constraint y movemos el null en sus ejes locales hacia donde nos apetezca posicionar el control de animación.
(A, b, c son los vértices del triángulo que forma la cadena). Un saludo.
-
Agradecimientos - 1 Gracias
-
Hallar posición correcta para un pole vector o punto que controle el swivel angle
Hola César, lo primero gracias por responder, la verdad es que no sé si término de entender tus instrucciones, las voy a mirar en detalle.
Lo cierto es que este fin de semana me he puesto a darle caña al tema de vectores y operación entre ellos y he sacado este código que yo creo que saca lo que yo quería una posición para un punto que sea la correcta para que la cadena de huesos no varié al asignarlo como pole Vector o swivel angle. Al menos las diferentes veces que lo he probado parece hacerlo correctamente.
Código:
clearlistener().
Vector4 = $shoulder, pues - $elbow.pos.
Vector5 = $wrist, pues - $elbow.pos.
Positionbuena = -(vector4 + vector5).
Mipolevector = point name:polevector pos: (positionbuena + $elbow.pos)
Shoulder elbow y wrist serían los tres puntos que marcan el triángulo al que haces referencia.
-
Hallar posición correcta para un pole vector o punto que controle el swivel angle
Buenas. Así a bote pronto parece lógico y funciona, lo malo es que no alineas (rotación) el pole Vector al plano por lo que si tienes que reposicionarlo variando el offset no será tan simple, además que los ejes de animación no quedarán de lo más cómodo/entendible para los animadores cuando tengan que limpiar sus curvas.
Yo no descartaría considerar la rotación dentro de los cálculos, a la larga (mantenimiento y uso del rig) facilita las cosas tenerlo completamente alineado. Un saludo.
-
Hallar posición correcta para un pole vector o punto que controle el swivel angle
Entiendo lo que me dices César, así a bote pronto, sin el programa delante, se me ocurre que con un look at al punto del codo para obtener la rotación correcta. Tendré que probarlo. Lo de las rotaciones es algo complejo la verdad.