반응형

언리얼 4시절에 어드벤스드 로코모션(Advanced Locomotion)이 나오면서 트리플 A게임의 로코모션을 위한 많은 것이 정리되었습니다. 언리얼의 로코모션은 이때부터 비약적으로 발전되기 시작했다고 해도 과언이 아닙니다. 현 트리플 A 로코모션 제작을 위한 초석이 되어준 UE4 시절의 Advanced Locomotion을 가이드를 시작으로 현재 가장 많이 사용되는 Advanced Locomotion Component까지 가이드를 이어가고자 합니다.

로코모션이란?

  • 사전적 의미 - '이동, 보행, 운동’
    • 캐릭터의 조작감에 운동성과 아트적 완성도를 부여하여 시각적인 만족도와 언캐니밸리적 요소를 없애기 위한 시스템
  • 인디게임에서의 로코모션에 필요한 요소
    • 캐릭터, 애니메이션, 카메라
    • 대부분의 국산 양산형 rpg 게임들에 해당됨.
  • 트리플 A급게임의 로코모션에 필요한 요소
    • 캐릭터 – 캐릭터의 키, 얼굴, 목소리, 몸무게, 성향 및 관련된 모든 정보
    • 애니메이션 – 보폭, 걷는 방식, 뛰는 방식, 스프린트 방식,손은?, 몸을 흔드는 스타일, 몸을 회전하는 스타일.. 등등
      • 무브번트 시스템 - 움직일때의 Velocity 값, 정지 타이밍, 회전타이밍, 점프 가속도, 회전 방식, 뷰 방식..
    • 카메라 – 앵글, 퍼스펙티브, 움직임, 스프링 암, 카메라스타일, 카메라상에서의 캐릭터 위치, 카메라 감독..
    • 사운드 – 성우가 주인공과 얼마나 닮았나부터 시작.
    • 호라이즌, 갓오브워, 라스트오브어스, 레뎀션 등등이 해당됨.

 

최근 가장 활발히 사용되는 로코모션용 언리얼 라이브러리는 무엇일까?

1. Advanced Locomotion(어드벤스드 로코모션) - UE4

  • 장점 - 로코모션에 필요한 대부분의 기능을 구현함 / 3인칭 모드도 있어 다양한 시점의 게임에 참고하기 좋음
  • 단점 - 시스템에 의지 하다 보니 모션 퀄리티가 너무 떨어지고, 모든 모션 블렌드 및 IK와 FOOT PLANT등이 커브로 제어되는 식이다 보니 디버그가 매우 어려움.

https://youtu.be/ru1--3wP-F8?si=brBKnkrmyZAjReL1

 

2. Lyra Starter Game(라이라 스타터 게임) - UE5

 

3. Advanced Locomotion Component(어드벤스드 로코모션 컴포넌트) - UE5

  • 장점 : 가장 최근에 개인이 개발한 어셋으로서 어드벤스드 로코모션과 라이라의 장점을 적절히 잘 섞어 놓았음. 3인칭 뷰모드도 있고, 루트모션과 커브 모션등을 적절하게 잘 사용함
  • 단점 :  굉장히 좋은 플러그인이긴 하지만, 아직은 불안하다고 할 수 있는 Distance Matching을 전폭적으로 활용하다 보니 잔 버그가 매우 많음.

https://youtu.be/5xl8cWsClKs?si=KwNU0bXYQMyoB-QS

 

이어서..

Advanced Locomotion 가이드 - 1

 

 

반응형
반응형

언리얼에서는 오랜 세월 풋 IK를 최대한 직관적으로 만들어내고자 많은 노력을 해왔습니다. 언리얼 5에 도입된 IK Rig를 통해 Foot IK를 셋업 하게 돼 기존에는 제어하기 힘들었던 많은 부분들을 직관적으로 제어할 수 있게 되었습니다.

 

IK Rig를 활용해서 Foot IK를 설정하면 좋은 점.

  1. 별도의 IK Joint가 필요 없음. 
    1. 마야에서 Export할 때 꼭 Ik Jpint를 만들어 Export 했어야 하는데, 이제 필요 없게 됨. 이제 옆의 Joint가 필요 없음.
  2. Visiulizing 된 프리뷰 창에서 Foot IK의 설정값을 실시간으로 지정하여 IK가 발동될 때의 값을 지정할 수 있다.

 

 

Ik Rig를 활용한 Foot IK 가이드

  • 스켈레탈 메시의 오른 쪽 버튼을 누르고 Create 탭으로 가면 IK Rig를 만들 수 있습니다.

 


IK Rig 기본 셋팅 가이드 - 아래를 펼쳐 주세요.

더보기
먼저 Pelvis에 Solver를 만들어 줍니다.
  • 몸의 중심으로 부터 계산이 이루어지기 때문에 Pelvis에 Solver가 있어야 Foot IK를 계산할 수 있게 됩니다. 
    • 이어서 Foot L/R에 IK를 설정하기 위해서는 Calf부터 계산이 이루어지기 때문에 calf에 셋팅값을 추가해 줍니다.
    • 마지막으로 Foot LR에 New IK Goal을 눌러주면 기본 적인 설정은 완료 됩니다.

 

  • 기본 셋팅만 해서는 Foot IK 가 발동 될 때의 움직임이 아래처럼 어색하게 설정이 됩니다.

  • 위와 같은 결과가 나오지 않게 하기 위해서는 기존에 설정했던 Pelvis의 IK bone setting에서 Rotation Stiffness와 Position Stifiness를 조절하여 Foot Ik에 대한 상대적 움직임을 적절하게 설정해 줍니다.
    • Calf값도 조절해 주면 무릎이 벌어지는 각도등을 더 상세하게 설정할 수 있게 됩니다.

 

IK계산용 Anim Blueprint 제작하기 - 아래를 펼쳐 주세요.

  • 더보기
    IK Rig에서 사용한 동일한 스켈레톤의 Anim Blueprint 파일을 만들어 줍니다.
    • Anim Graph 창에서 IK Rig 를 설정할 수 있는 명령어를 불러옵니다.
       
    • IK Rig의 Rig definition Asset에 기존에 만든 IK Rig 세팅 파일을 넣어 줍니다.
    • 위 상태로 Input Pose와 Out Pose로 연결해 주면 다른 캐릭터의 또 다른 애님 블루프린트에서 언제든지 가져다 사용할 수 있게 됩니다.
       

     

     

     

    • 그럼 이제 각각의 Foot 위치와 Pelvis 위치를 계산하여 배경 오브젝트에 의해 IK가 작동되도록 계산식을 만들어 주는데 먼저 Foot Trace라는 함수를 만들어 바닥에 레이를 쏴서 바닥 지면과 발바닥의 상대적 위치값을 실시간으로 구해오는 함수를 만들어 줍니다. 세세한 계산에 대한 멘트는 하지 않을 테니 왜 이렇게 코드가 짜여 있는지 직접 고민해 봅시다.

      • Foot의 Offset과 Rotation // Pelvis의 Offset 값을 알아야 하므로 먼저 변수를 만들어 줍니다.
    • FootTrace 함수를 이용하여 발바닥 와 Pevis의 위치를 어떻게 교정해야 하는지 알았으니 Tick Graph에서 실시간으로 발과 Pelvis의 움직임을 교정해 준 뒤 그 위치 값을 변수로 만들어 저장해 주자. 이때 Jump시나 Falling시에는 IK가 작동하면 안 되므로 예외처리를 해줍니다.
    • 먼저 위 상황을 제외한 경우에 대해 Foot IK가 처리되는 순간의 위치값과 로테이션을 만들어 내서 Foot L(R) Offset / Foot L(R) Rotation 변숫값을 아래처럼 Set 시켜 줍니다.
    • 이어서 Foot위치에 따라 Pelvis의 위치값도 교정해 주어야 하므로 아래 계산값을 이용해 Pelvis의 Offset값도 Set 시켜 줍니다.
    • 각각의 변수값을 알아냈으니 이 값들을 아까 전에 만든 IK Rig 설정창에 각각의 값들을 적절하게 연결시켜 줍니다.
    • 메인으로 사용되는 애님 블루프린트에서 Linked Anim Blueprint 함수를 이용하여 위에서 제작한 Foot IK용 AnimBP를 아래처럼 연결해 주면 애님 블루프린트 간 통신이 이루어집니다.

Foot IK 결과 최종 확인

애님 그래프 작업까지 완료 후 최종 출력이 되도록 설정이 완료되면 아래 영상처럼 자연스럽게 Foot IK가 작동하는 것을 확인할 수 있습니다.

 

반응형

'Engine > UNREAL' 카테고리의 다른 글

AAA Locomotion  (0) 2020.12.12
콜라보 애니메이션  (0) 2019.07.19
Physics를 활용한 Tail 애니메이션  (0) 2019.07.19
Dynamic Parameter  (0) 2019.05.28
Item BP 구조  (0) 2019.05.28

반응형

꼬리 다이내믹을 열심히 연구중입니다.

자연스러운 다이내믹을 찾기 위해 여러가지 연구 끝에 가장 자연스러운 설정이 나름 발견되어 기억하고자 정리합니다.

Tail 조인트는 7개로 설정되었으며


RootM과 Tail0_M의 설정값.

Simulation Space를 World로 설정하고 Bound Bone을 Root본으로 설정합니다.


2~4번째 조인트 설정값

Box Extend는 3가지 모두 15로 설정하고, Simulation Space는 Actor로


5~7 번째 조인트 설정값

2~4랑 다 똑같고, Planar Limit값을 설정하여 바닥 충돌을 처리한다.

위치 : y가 바닥 충돌면 위치 설정, 5번째 20, 6번째 40, 7번째 50으로 설정. 나머지는 모두 0. 아래 Z는 무시

회전 : x:120, 나머지는 무시


바디 값 설정 - 부모의 움직임에 의해 자식이 움직이기 위한 설정.



Dynamic Value를 변수로 전환하여 FInterp To 함수를 활용해 Idle 상태(속도0)에서는 다이내믹이 돌지 않도록 막는다.

반응형

반응형

텍스쳐 임포트시 모바일 프로젝트에서는 기본적으로 Advanced로 사용하고 mipmap을 끄는게 통상적인 방식입니다.

하지만, 유니티 기본셋팅은 항상 Texture 타입으로 설정되어 mipmap도 무조건 켜지게 됩니다.

아래 코드를 편집하여 프로젝트에 넣어주시면 원하시는 셋팅값으로 텍스쳐 임포트를 설정할수 있습니다.


using UnityEngine;

using UnityEditor;


public class TexturePostProcessor : AssetPostprocessor

{

void OnPostprocessTexture(Texture2D texture)

{

TextureImporter importer = assetImporter as TextureImporter;

importer.textureType = TextureImporterType.Advanced;   // 기본 타입을 Advanced로..

importer.anisoLevel = 1;

importer.filterMode = FilterMode.Bilinear;

importer.mipmapEnabled = false;  // 기본 mipmap 해제

// 필요한 설정값을 이곳에 넣어주시면 됩니다.


Object asset = AssetDatabase.LoadAssetAtPath(importer.assetPath, typeof(Texture2D));

if (asset)

{

EditorUtility.SetDirty(asset);

}

else

{

texture.anisoLevel = 1;

texture.filterMode = FilterMode.Bilinear;          

}

}

반응형

+ Recent posts