Invers kinematics ( invers kinematic animation , engelsk inverse kinematics , IK) är processen för att bestämma parametrarna för anslutna rörliga objekt (till exempel ett kinematiskt par eller en kinematisk kedja ) för att uppnå önskad position, orientering och placering av dessa objekt. Invers kinematik är en rörelseplanering Invers kinematik används aktivt inom robotik , tredimensionell datoranimation och i utvecklingen av datorspel . Det används huvudsakligen i de situationer där det är nödvändigt att exakt placera de rörliga lederna hos ett föremål i förhållande till andra föremål i miljön. Den inversa kinematikalgoritmen är motsatsen till den framåtriktade kinematikalgoritmen .
Omvänd kinematik, som direkt , tillämpas på modeller av alla karaktärer eller objekt som skapas med hjälp av skelettanimering . Kärnan i skelettanimering är att ett objekt består av en uppsättning solida segment (komponenter) förbundna med leder ( engelska joint ). I detta fall kan segmenten kombineras till kinematiska par , som i sin tur kombineras till kinematiska kedjor . Dessa segment bildar hierarkiska kedjor som har "övre" och "lägre" nivåer. Segment (komponenter) av de övre nivåerna kallas förfaderkomponenter (eller överordnade segment), och komponenter på lägre nivå kallas underordnade komponenter (eller underordnade segment). Till exempel, om vi betraktar en mänsklig hand, kommer axelleden att vara den högsta nivån, och fingertoppen kommer att vara den lägsta, det vill säga den nedåtgående komponenten till axelleden. Armbågsleden är inuti kedjan, den kommer att ha både förälder (axel) och barn (handled, fingrar) segment. [ett]
Huvudskillnaden mellan direkt kinematik och invers kinematik är att med direkt kinematik överförs alla åtgärder längs en hierarkisk kedja från topp till botten. Till exempel, när höftleden rör sig, rör sig alla avkomlingar, det vill säga knäleden och alla andra. Invers kinematik använder en princip som är diametralt motsatt den direkta principen - rörliga underordnade komponenter leder till en förändring i positionen för förfäderkomponenterna, det vill säga algoritmen beräknar positionen och orienteringen av förfaderkomponenterna baserat på positionen och orienteringen av barnkomponenterna. [ett]
Inom invers kinematik kallas ett barnsegment (barnkomponent) som orsakar en förändring av andra objekts position och orientering och som ligger mitt i en separat hierarkisk kedja av segment för en effektor [ 1 ] . Om effektorn är det slutliga objektet i denna hierarkiska kedja, så kallas den för den slutliga effektorn ( eng. end effector ). Det är genom effektorn som hela hierarkiska kedjan manipuleras. Att ändra positionen och/eller orienteringen för sluteffektorn leder till en förändring av positionen och/eller orienteringen för alla segment i den hierarkiska kedjan enligt lagarna för invers kinematik. Att ändra positionen och/eller orienteringen för en enkel (inte slutlig) effektor leder till att objektens position under den i hierarkin ändras enligt lagarna för direkt kinematik, och objekt med en högre hierarki - enligt lagarna för invers kinematik.
Nyckeln till framgångsrik implementering av omvänd kinematik är animering inom begränsningar ( engelska constraints ): karaktärsmodellens lemmar måste bete sig inom rimliga antropomorfa gränser. Detsamma gäller för robotenheter, som har fysiska begränsningar, såsom miljön där de verkar, begränsningar av deras leders rörelser och begränsade fysiska belastningar och hastigheter som de kan arbeta med. [ett]
Invers kinematics är ett verktyg som ofta används av 3D- artister . Det är lättare för konstnären att uttrycka den önskade rumsliga handlingen än att direkt manipulera artikulationsvinklarna. Till exempel tillåter omvänd kinematik artisten att flytta armen på en 3D-figurmodell till en önskad position och orientering. Samtidigt väljer själva algoritmen, och inte artisten, de korrekta vinklarna på handleden, armbågen och axelleden.
Till exempel, om en person vill ta tag i ett dörrhandtag med sin hand, måste hans hjärna göra de nödvändiga beräkningarna för att korrekt placera personens arm och bål. Huvudmålet är att flytta handen, men många komplexa flerledsleder måste användas för att få handen till önskat föremål. En liknande process inträffar i tekniska tillämpningar - för att uppnå det önskade målet måste de matematiska beräkningarna av invers kinematik utföras för att positionera lemmarna på rätt sätt. Ett exempel där beräkningar av omvänd kinematik ofta behövs är inom robotik. Till exempel vill en robotoperatör placera något föremål med hjälp av en manipulator , men han vill naturligtvis inte kontrollera varje led i manipulatorn separat.
Andra applikationer där invers kinematik används är datorgrafik och animation . Till exempel vill animatörer styra en datorgenererad humanoid karaktärsmodell, men det är mycket svårt att animera enskilda leder. Lösningen är att simulera de virtuella lederna hos en "dockadocka" och låta animatören röra marionettens armar, ben och bål, och datorn som använder omvänd kinematik kommer automatiskt att generera de nödvändiga lempositionerna för att uppnå resultatet.
Invers kinematik används ofta i datorspel för att animera humanoida karaktärer. I grund och botten används invers kinematik för att skapa animering av benen på modeller av en humanoid varelse eller en person. Till exempel är det ganska lätt att skapa en rörelseanimation (gång, löpning) av en person eller ett landdjur, om han rör sig på ett platt plan. Men om terrängen är ojämn (gropig, ojämn, oländig eller bergig) är det en praktiskt taget omöjlig uppgift att skapa exakta gånganimationer. Animeringen av benen kommer inte att motsvara ytreliefen, vilket kommer att visa sig i sådana effekter som att benen glider på ytan och felaktig placering av benen i förhållande till den (foten kommer att "sjunka" ner i ytan eller "inte nå det). Det är för den kvalitativa och effektiva lösningen av dessa problem som invers kinematik används. [ett]
Andra applikationer som använder omvänd kinematik inkluderar interaktiv manipulation, animeringskontroll och kollisionsundvikande .