⭐ 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_Yaw의 Z(Yaw)값에 넣어준다. 이 작업을 통해 플레이어는 활을 조준하는 방향으로 고개를 돌리게 된다.
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으로 반환한다.
실행화면