Загальна інформація
опис
Клас екземпляра анімації VR є дочірнім класом екземпляра анімації . З нього можна успадкувати креслення анімації. Цей клас потрібно використовувати для анімації VR Hand і застосовувати до компонентів FakeHandMesh і RealHandMesh у схемі, успадкованій VR Hand (Інакше він призведе до збою) (Див. клас VR Hand) .
Змінні
FFingerCurls CurrentFingerCurls - поточні завитки кожного пальця з контролера руху.
FFingerCurls FingerCurls - Локони кожного пальця з плавним переходом.
float GripThumb, GripIndex, GripMiddle, GripRing, GripPinky - значення захоплення для IK (значення від 0 до 1).
float IndexPushInst - значення натискання кнопки тригера (від 0 до 1).
float HammerPushInst - значення натискання кнопки великого пальця (від 0 до 1). Цей параметр можна використовувати в пістолетах/револьверах для витягування курка.
float HandOrientationZ - це змінна, яка містить значення орієнтації (від 0 до 1). Якщо рука спрямована в напрямку X, Y або Z, значення буде 1.
FVector OriginThumb, OriginIndex, OriginMiddle, OriginRing, OriginPinky – це змінні, які містять вихідні місця для IK на основі розташування (додатковий метод IK) .
FVector TargetThumb, TargetIndex, TargetMiddle, TargetRing, TargetPinky – це змінні, які містять розташування цілей для IK на основі розташування (додатковий метод IK) .
bool ProceduralSkeletonEnabled – це змінна, яка вказує, чи ввімкнено процедурний скелет (застаріле та буде видалено в майбутньому) .
bool bHasWeapon - це змінна, яка вказує, чи є в руці зброя.
bool bA_Pressed - це змінна, яка вказує, чи була натиснута кнопка на контролері.
bool bB_Pressed - це змінна, яка вказує, чи була натиснута кнопка B на контролері.
bool bTrackpad_Touch – це змінна, яка вказує, чи торкався Traskpad на контролері чи ні.
bool bWantsToGrab - це змінна, яка вказує, чи хоче рука щось схопити.
EAnimationType AnimType – це змінна, яка вказує тип анімації руки (див. Змінні VR) .
EPickUpAnimations PickUpAnimation – це змінна, яка вказує на анімацію захоплення рукою (див. Змінні VR) .
bool bIsGrabbed – це змінна, яка вказує, чи рука захоплює об’єкт.
UAnimSequence * GrabAnimation – це змінна, яка містить анімацію захоплення із захопленого об’єкта.
UAnimSequence* TriggerPressedAnimation – це змінна, яка містить анімацію натиснутого тригера від захопленого об’єкта.
UAnimSequence* APressedAnimation – це змінна, яка містить натиснуту анімацію від захопленого об’єкта.
UAnimSequence* BPressedAnimation – це змінна, яка містить натиснуту B анімацію від захопленого об’єкта.
EControllerHand Hand - це змінна, яка вказує руку.
EGrip_Code CurrentGripState - це змінна, яка вказує стан рукоятки.
Приклад плану анімації
Огляд алгоритму
Приклад креслення анімації руки містить кінцевий автомат , розділ базової анімації , розділ IK на основі анімації , розділ Idle Pose та базовий IK позиції (додатковий метод IK) .
Базові анімації
Основна анімація містить 3 кешовані пози ( відкрита , розтягнута та закрита ). Вони використовуються в інших розділах.
Поза простою
У розділі Idle Pose поєднується орієнтація руки ( HandOrientationZ ) із витягнутою позою. Потім виведіть змішування із закритою кеш-пам’яткою рук за допомогою скручування пальців (переконайтеся, що є правильні назви кісток відповідно до скелета) .
IK на основі анімації
IK на основі анімації містить суміш для кожної кістки для кожного пальця (переконайтеся, що є правильні назви кісток відповідно до скелета) . Blend використовує змінні Grip ( GripThumb, GripIndex, GripMiddle, GripRing, GripPinky ). Вихідні дані переходять до кешованої позиції.
IK на основі позиції (необов’язково)
IK на основі анімації містить два вузли IK кісток (переконайтеся, що є правильні назви кісток відповідно до скелета) для кожного пальця.
Державна машина
Кінцевий автомат містить 3 стани: Idle , Grip IK і Animation Grip .
Стан простою
Стан очікування містить суміші, якщо гравець хоче взятися. Якщо гравець натисне кнопку захоплення та наблизить руку до об’єкта, він передбачить позу (трохи поверніть пальці).
Хват І.К
Grip IK містить кеш IK на основі анімації .
Ручка анімації
Animation Grip має автомат стану анімації, у якому є дві умови: унікальний елемент і зброя чи обладнання . В Prop Unique це змінна анімації. У розділі «Зброя» чи «Обладнання» є суміші та змінні анімації для захоплення, натискання кнопки тригера, натискання кнопки A/B тощо.
Довідник API Blueprint
Публічні функції члена
void SetGripState (EGrip_Code GripState)
bool SetSkeletalState (EControllerHand EHand)
void SetEAnimationType (EAnimationType NewAnimType)
void SetGripThumb (float NewGrip)
void SetGripIndex (float NewGrip)
void SetGripMiddle (float NewGrip)
void SetGripRing (float NewGrip)
void SetGripPinky (float NewGrip)
void SetHandType (EControllerHand Hand)
void SetHasWeapon (bool HasWeapon)
void Set_IsGrabbed (bool IsGrabbed)
void SetA_Pressed (bool Pressed)
void SetIndexPushInst (float Inst)
void SetW_HammerInst (float Inst)
void SetTrackpad_Touch (bool Touched)
void SetFingerCurls (FFingerCurls NewFingerCurls)
bool GetTrackpad_Touch ()
float GetIndexPushInst ()
float GetGripThumb ()
float GetGripIndex ()
float GetGripMiddle ()
float GetGripRing ()
float GetGripPinky ()
bool GetProceduralSkeletonEnabled ()
bool GetHasWeapon ()
bool GetA_Pressed ()
bool Get_IsGrabbed ()
float GetW_HammerInst ()
FORCEINLINE FFingerCurls GetFingerCurls () const
FORCEINLINE EControllerHand GetHandType () const
EPickUpAnimations GetPickUpAnimation ()
Захищені атрибути
FFingerCurls CurrentFingerCurls
FFingerCurls FingerCurls
float GripThumb
float GripIndex
float GripMiddle
float GripRing
float GripPinky
float IndexPushInst
float HammerPushInst
float HandOrientationZ
FVector OriginThumb
FVector OriginIndex
FVector OriginMiddle
FVector OriginRing
FVector OriginPinky
FVector TargetThumb
FVector TargetIndex
FVector TargetMiddle
FVector TargetRing
FVector TargetPinky
bool ProceduralSkeletonEnabled
bool bHasWeapon
bool bA_Pressed
bool bB_Pressed
bool bTrackpad_Touch
bool bWantsToGrab
EAnimationType AnimType
EPickUpAnimations PickUpAnimation
bool bIsGrabbed
UAnimSequence * GrabAnimation
UAnimSequence * TriggerPressedAnimation
UAnimSequence * APressedAnimation
UAnimSequence * BPressedAnimation
EControllerHand Hand
EGrip_Code CurrentGripState