Kinematyka odwrotna

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Inverse Kinematics (IK) jest techniką komputerowej animacji, aby skutecznie przesuwać i wchodzić w interakcję z środowisko. Proces tworzenia realistycznego ruchu dla postaci często wymaga wiele powtórzeń i niewielkich dostosowań różnych stawów. Z IK możesz pozyować i animować wiele części postaci, poprzez pozyowanie lub dostosowanie pojedynczego obiektu.

Technika animacji może zapewnić rozwiązania następującym przykładom:

Chwyć i pozyj dłoń postaci, automatycznie dostosowując powiązane kończyny, takie jak nadgarstek, łokieć i ramiona.
Uczynić stopę postaci interaktywną w rzeczywisty sposób na różnych powierzchniach i połóżach.
Chwyć i przesuń pojedynczy obiekt celu, aby szybko stworzyć realistyczne interakcje z twoim postacią i oświetleniem.

IKontrola

Możesz użyć IKControl , aby proceduralnie dodać IK do swoich zestawów postaci poza Animatorem Animacji. Studio umożliwia prawidłowe dodawanie IK do wszystkich postaci, takich jak R15, Rthro i importowane postacie, aby stworzyć realistyczne ruchy i interakcje w swoim doświadczeniu.

Podczas dodawania IKControl, ustaw właściwości Class.IKControls poprawnie, aby uniknąć nieoczekiwań i nienaturalnych wyników animacji. Jak w przypadku wszystkich animacja, testuj swoje IKControls, aby upewnić się, że osiągniesz pożądany efekt.

Wymagane właściwości

Podczas dodawania IKControl do Humanoid lub AnimationController Twojego postaci, musisz ustawić następujące wymagane właściwości, aby włączyć IK:

WłasnośćOpis
TypeOkreśla typ zachowania sterowania IK. Zobacz Enum.IKControlType dla listy opcji zachowania. Typy zachowania są powszechne Position lub Transform.
EndEffectorA BasePart lub Class.Bone w swoim charakterystycznym raku, który śledzi ku Target . Na przykład możesz ustawić lewą kość jako 1> kość końca1> do osiągnięcia
TargetPrzedmiot, do którego odnosi się EndEffector, może być dowolnym obiektem z lokalizacją na świecie.
ChainRootDefiniuje łańcuch Class.BasePart|Class

Testowanie IKControls

Możesz łączyć i modyfikować IKControl programowo lub bezpośrednio poprzez Explorer. Możesz nawet łączyć i modyfikować IKControl podczas testu gry, aby szybko sprawdzić, jak różne właściwości wpływają na ruchy postaci.

Aby szybko przetestować swoją IKControl używając Attachment jako celu:

  1. W zakładce Testy wybierz Graj , aby rozpocząć test Gry.

  2. W Explorerze, przeglądaj się do Pracownika → twój użytkownik's Class.Model . Ta instancja Model jest nazywana jako twój obecny konto Roblox.

  3. Kliknij na ikone obok modelu postaci HumanoidRootPart i dodaj załącznik .

  4. Wybierz Załącznik i użyj narzędzia Przenieś, aby pozycjonować obiekt przed swoim postacią w oknie widoku.

  5. W oknie Explorer , wybierz ikone obok znaku Humanoid swojego postaci i dodaj 1> IKControl1>.

  6. Wybierz IKControl i ustaw następujące wartości w Properties panelu:

    1. Wpisz : Wybierz Transform z listy.
    2. EndEffector : Wybierz LewąRękę MeshPart w Explorerze.
    3. Cele : Wybierz nowo utworzony przedmiot Załącznik w Explorerze.
    4. ChainRoot : Wybierz Lewy Górny Ramię MeshPart w Explorerze.
    Właściwości IKControl
    Panel Explorer - Model Postaci

    Twój lewy ramię powinien teraz dotrzeć do celu Attachment. Możesz eksperymentować z przesuwaniem Attachment lub edytowaniem IKControl właściwości, aby uzyskać różne wyniki.

Dodawanie ograniczeń

Możesz użyć Constraints , aby ograniczyć, jak ruchy mogą się zmieniać, gdy dotrą do celu. Konstrukcje mogą zapewnić, że ruchy, takie jak łokcie i kolana, będą się naturalnie składać, lub aby zrobić, że ruchy kojące będą kręcić się w określonym kierunku.

Nienaturalnie skręcony elbow
Poprawne skręcanie kciuków

Aby dodać ograniczenia do swojego postaci używając IKControl, twoje IKControl i ograniczenie muszą spełniać następujące warunki:

  • Załączniki odniesione w Attachment0 / Attachment1 właściwości przywiązują się do tych samych części, co Motor6D1> Class.Motor6D.Part0|Part01>
  • Relatywne pozycje Attachment0 / Attachment1 muszą równać się odpowiednimi pozycjami Motor6D1> Class.Motor6D.C0|C01> / 4> Class.Motor6D.C1
  • Ograniczenie i IKControl dzielą się tą samą matką Model .

Poniższe instrukcje opisują proces dodawania HingeConstraint , aby ograniczyć obrót kciuka i dodania BallSocketConstraint do nadgarstka, aby ograniczyć kąt obrotu.

Staw

Postacie Roblox R15 już wbudowują załączniki w ich łączach, które możesz użyć do zastosowania elastyczności kciuka. Dla kciuka w obu LeftUpperArm i LeftLowerArm znajdują się LeftElbowRigAttachment . Wraz z dodaniem ograniczenia, musisz również dodać dodatkowe załączniki dziecka do każdej części <

Aby dodać HingeConstraint i załączniki dzieci:

  1. W Exploratorze, lokalizuj Lewy Dolny Ramię swojego modelu i kliknij przycisk .

  2. Dodaj HingeConstraint z imieniem LeftElbowConstraint .

  3. W Explorer, przeglądaj do LewoUpperArm.LeftElbowRigAttachment i dodaj załącznik:

    1. Kliknij przycisk , aby dodać Załącznik z imieniem LeftElbowConstraintAttachment0.

    2. W oknie widoku wybierz załącznik i użyj narzędzia Obróć, aby obrócić załącznik, aby żółty Przycisk głównej osi był osią twojego kciuka.

    3. Ustaw właściwość LeftElbowConstraint.Attachment0 na ten nowy załącznik.

  4. W Explorerze, przeglądaj do LeftLowerArm.LeftElbowRigRotation dodaj załącznik:

    1. Kliknij przycisk i dodaj Załącznik z imieniem LeftElbowConstraintAttachment1.
    2. Ustaw właściwość LeftUpperArm.LeftElbowConstraint.Attachment1 na ten nowy załącznik.
    3. Kopiuj właściwość LeftElbowConstraintAttachment0.CFrameOrientation i wklej ją jako wartość LeftElbowConstraint.Attachment1.CFrameOrientation .

Sprawdź swój IKControl, aby zweryfikować, czy ​​dolarki tylko kręcą się wokół swojej osi:

Bransoletki

Nawet przy użyciu ograniczenia kciuk, IKControl nadal może tworzyć nierealistyczne pozy z nadgarstkami.

Bransoletka skłania się nienaturalnie pod pewnymi kątami

Możesz to poprawić, dodając BallSocketConstraint , aby ograniczyć rotację nadgarstka. Podczas gdy to jest podobne do procesu dodawania HingeConstraint do kciuka, możesz użyć właściwości LimitsEnabled na tym kciuka, aby lepiej kontrolować zakres ruchu nad

Aby dodać BallSocketConstraint dla nadgarstka:

  1. W Exploratorze, lokalizuj swojego modelu LeweRęko i kliknij przycisk .
    1. Dodaj BallSocketConstraint z imieniem LeftWristConstraint.
  2. Lokalizuj LeftLowerArm.LeftWristRigAttachment swojego modelu i dodaj załącznik:
    1. Kliknij przycisk i dodaj Załącznik z imieniem LeftWristConstraintAttachment0.
    2. W oknie widoku wybierz załącznik i użyj narzędzia Obróć , aby obrócić załącznik, aby żółte kąty główne kciuk w modelu.
    3. Ustaw właściwość LeftWristConstraint.Attachment0 na nową LeftWristConstraintAttachment0.
  3. Lokalizuj LeftHand.LeftWristRigAttendance swojego modelu i dodaj załącznik:
    1. Kliknij przycisk i dodaj Załącznik z imieniem LeftWristConstraintAttachment1.
    2. Kopiuj właściwość LeftWristConstraintAttachment0.CFrameOrientation i wklej ją jako właściwość LeftWristConstraintAttachment1.CFrameOrientation .
    3. Ustaw właściwość LeftWristConstraint.Attachment1 na ten nowy LeftWristConstraintAttachment1 .
  4. W Explorerze, zaznacz LeftWristConstraint .
  5. W edytorze właściwości ustaw obserwuje:
    1. Włącz OgraniczeniaWłączone .
    2. Ustaw KątPodstawowy na 80 . To kontroluje, ile kąt ograniczenia może się obrócić, a 80 stopni to około tego, ile nadgarstka może się skłonić.
  6. W zależności od swojego postaci możesz chcieć dostosować kierunek, w którym apteka świeci. Możesz to zrobić, używając narzędzia Obróć, aby obrócić Załącznik0.

Podczas wyboru LeftWristConstraint pojawia się zielony kształt, który wizualizuje zakres ruchu nadgarstka.

Z ustawionym ograniczeniem, testuj IKControl za pomocą ręki wskazującej w kierunku postaci i paska powinien kręcić się i biec bardziej realistycznie.