⭐ Unreal Engine/UE RPG Blueprint

[UE] IK(Inverse Kinematics)

Designerd 2023. 2. 6. 09:07

 

목차

     

     


     

     

    ABP: Animation Blueprint
    AN: Blueprint Class AnimNotify
    ANS: Blueprint Class - AnimNotifyState

    AO: Aim Offset

    BP: Blueprint Class
    BS: Blend Space

    BF: Blueprint Function Library
    CS: Matinee Camera Shake
    E: Enum 열거형
    DT: Data Table
    F: 구조체

    I: Blueprint Interface

    WB: Widget Bluepprint

     

    UE2212_02

      Level - LEVEL
    ABP_Player
    BP_GameMode
    BF_Helper
    IDamage
     
    AdvancedMagicFX12
    Materials  
    Meshes  
    Particles  
    Textures  
    Character Animation Bow
    Common
    Fist
    Hammer
    Parkour
    Sword
    Unarmed
    Wizard
    BlendSpaces BS_Bow
    BS_Fist
    BS_Hammer
    BS_Sword

    BS_Unarmed
    BS_Wizard
    Materials

    MaterialLayers
    M_UE4Man_Body
    M_UE4Man_ChestLogo
    Mesh SK_Mannequin
    SK_MAnnequin_PhysicsAsset
    Skel_Mannequin

    Montages
    Around Around_Montage
    Bow AR_DrawBow_Montage
    AR_ShootAndDraw_Montage
    Common HitReaction_Move_Montage
    HitReaction_Stop_Montage
    Fist Fist_Attack_1_Montage
    Fist_Attack_2_Montage
    Fist_Attack_3_Montage
    Fist_Hitted_Montage
    Hammer Frank_RPG_2Hand_Combo01_1_Montage
    Frank_RPG_2Hand_Combo01_2_Montage
    Frank_RPG_2Hand_Combo01_3_Montage
    Frank_RPG_2Hand_Combo01_4_Montage
    Sword Draw_Sword_Montage
    Sword_Attack_1_Montage
    Sword_Attack_2_Montage
    Sword_Attack_3_Montage
    Warp Warp_Montage
    Enemy_DeadFall_Montage
    HitReaction_Montage
     
    Textures UE4_LOGO_CARD
    UE4_Mannequin__normals
    UE4_Mannequin_MAT_MASKA
    UE4Man_Logo_N
    Weapons Elven Bow
    Greate Hammer
    Sword
    Component EStateType
    MovingComponent
    StateComponent
    WeaponComponent
    FeetComponent
       
    Effects P_Cube_Mesh_Test
    P_Genno_Weapon_Lightning_01
       
    Enemies BP_Enemy    
    Environment
    Materials Textures  
    Meshes    
    Obstacle    
    InfinityBladeEffects
    Effects
    FX_Combat_Base  
    FX_Materials  
    FX_Meshes  
    FX_Monsters  
    FX_Textures  
    FX_Textures_IB  
    Masters  
    Materials M_Mesh
    M_White_Inst
    M_Red_Inst
    M_Green_Inst
    M_Blue_Inst
    M_UE4Man_Body_Inst
    M_UE4Man_ChesLogo_Inst
       
    Meshes Cone_2
    Cube_2
    Cylinder_2
    Sphere_2
       
    Notifies ANS_Equip
    ANS_Combo
    ANS_Collision
    AN_BeginAction
    AN_EndAction
    AN_CameraShake
       
    Player BP_Player
    FZoomData
       
    Sounds S_BGM
    S_HitPunch
    S_OneHand_Hit
       
    Textures Crosshair    

     
    Weapons
    Around Around_FireBall
    Around_FireBall1
    Around_IceBall
    Around_IceBall1
    DT_DoAction_Around
    DT_Equip_Around
    DT_HitData_Around
    Skill_Around
    Weapon_Around
     
    Bow AO_Aim
    Curve_Aim
    DT_DoAction_Bow

    DT_Equip_Bow
    DT_HitData_Bow
    FAimData
    Skill_Aim
    Skill_Arrow
    Weapon_Bow

     
    FireBall DT_DoAction_FireBall
    DT_Equip_FireBall
    DT_HitData_FireBall

    Skill_FireBall
    Weapon_FireBall
     
    Fist Combo_Fist - Blueprint Class Actor Weapon_Combo 상속
    CS_Fist
    DT_DoAction_Fist

    DT_Equip_Fist
    DT_HitData_Fist
     
    Hammer Combo_Fist - Blueprint Class Actor Weapon_Combo 상속
    CS_Hammer
    DT_DoAction_Hammer
    DT_Equip_Hammer
    DT_HitData_Hammer

     
    Sword Combo_Sword - Blueprint Class Actor Weapon_Combo 상속
    CS_Sword
    DT_DoAction_Sword
    DT_Equip_Sword
    DT_HitData_Sword
     
    Warp Weapon_Warp -  Blueprint Class Actor Weapon 상속
    DT_DoAction_Warp

    DT_Equip_Warp
     
    EWeaponType
    FDoActionData
    FEquipData
    FHitData
    Weapon - Blueprint Class Actor
    Weapon_Combo - Blueprint Class Actor Weapon 상속
    M_Weapon
    Skill
       
    Widget WB_CrossHair    

     

     

     

     

    IK(Inverse Kinematics) 역운동학

    Inverse Kinematics 역운동학

    Forward Kinematics 순운동학

     

    https://docs.unrealengine.com/4.26/ko/AnimatingObjects/SkeletalMeshAnimation/IKSetups/

     

    https://www.youtube.com/watch?v=u_a6vIPLQHY 


     

    Skel_Mannequin - 가상 본(Bone) 추가

     

    IK를 계산할 때 직접 Bone을 움직이는 원본 Bone을 사용하지 않고  가상 Bone을 사용한다. 원본을 사용하면 나중에 잘못 사용하여 오류가 날 수도 있고 계산이 복잡해질 수 있기 때문에 가상 Bone을 생성하여 사용한다. 중요!

     

    • ik_foot_l 우클릭 - 가상 본 추가
      • VB ik_foot_l_Foot_L 생성
      • VB ik_foot_l_calf_ l 생성
    • ik_foot_r 우클릭 - 가상 본 추가
      • VB ik_foot_r_Foot_R 생성
      • VB ik_foot_r_calf_ r 생성

     

     

    ABP_Character 수정 

     

    Event Graph

    추가부분 확대

    • 변수 생성: Neck_Yaw (Rotator) 
    • Character의 조준 회전값(Get Base Aim Rotation)을 가져와 Neck_YawZ(Yaw)값에 넣어준다. 이 작업을 통해 플레이어는 활을 조준하는 방향으로 고개를 돌리게 된다. 

     

     

    FeetLayer

    FeetLayer 전체 노드

    추가부분 확대

     

     


     

    Feet Component

     

    Apply Inverse Kinematics

    수정부분 확대

    • Foot_L
    • 이 부분 자주보자

     

     

    Trace

    • 반환노드에 출력 파라미터 OutRotation (Rotator) 생성
    • Trace 연산을 마치고 나온 Hit Result의 Normal값으로 각도를 구한다. 
      • Mesh의 면과 Normal은 수직이다.
      • 수직하는 두 변의 길이를 알면 각도를 구할 수 있다. 
      • Normal의 Vector를 x, y, z로 분해하여 길이로 사용하여 각도를 구할 수 있다.   
      • tan Roll = y / z,   tan Pitch = x / z
        • Roll 각도 = arc tangent y / z
        • Pitch 각도 = arc tangent x / z 
    • Normal로 각도를 구한 뒤 Make Rotator로 값을 넣어준 후 OutRotation으로 반환한다.

     

     


     

    실행화면