오늘 포스팅 할 내용은 언리얼 엔진에서 바스트 모핑을 처리하는 방법에 대해 알아 본다.
바스트 모핑이 무엇인지는... 다들 잘 알것으로 믿고, 설명은 생략 하며
잘 모르는 분들은 검색을 하고 아래 글들을 계속 읽을지 결정하기 바란다.
https://namu.wiki/w/%EB%B0%94%EC%8A%A4%ED%8A%B8%20%EB%AA%A8%ED%95%91
필자는 야한 포스팅이 되지 않도록 최선을 다하도록 하겠다.
프로젝트 준비하기
우선 빈 프로젝트를 하나 만들고 아래 에셋들을 임포트 한다.
위 리소스의 출처는 아래 링크이다. 필요한 독자는 받아서 진행하길 바란다.
https://www.models-resource.com/playstation_3/neptunev/model/5204/
당연한 이야기겠지만, 작동 여부를 제대로 확인 하기 위해서는 가능한 큰... 친구를 구해오는 편이 좋다.
남자 캐릭터로 바스트 모핑을 처리 (하는 사람은 없겠지만) 한다면 할 수는 있지만, 티가 전혀 안나서
작동 여부를 알 수 없고, 당초 가슴에 본 셋팅이 안되어있으면 작업을 할 수 없다.
참고로, 저 캐릭터는 본 셋팅이 잘 되어 있어 작업에 문제가 없다.
프로젝트에 임포트를 하고 머티리얼 설정을 적당히 해주도록 한다.
참고로, Anime 폴더는 원래 없다. 바스트 모핑 처리 후 작동 여부를 확인하기 위한 걷기 애니메이션을 따로 추가 했다.
작업을 하면서 걷기 애니메이션과 같은 운동이 있는 애니메이션은 꼭 필요하므로, 몇개 만들어서 넣어두도록 하자.
애니메이션 블루프린트 작성
애니메이션 블루프린트를 생성 한다.
반드시 캐릭터에 맞는 본을 설정하길 바란다.
현재 캐릭터에 걷기 애니메이션을 재생하고 있다.
이렇게 셋팅을 해두고 이제 스프링 조인트를 추가 하겠다.
검색에서 "스프링" 라고 입력하면 스프링 컨트롤러 노드를 배치 할 수 있다.
우선 하나만 배치하도록 한다. 가슴은 두쪽이지만, 우선 하나를 배치해서 값을 모두 수정 후 자연스러운
모션이 나온다면 그때 복사를 해서 다른 한쪽에 적용 하는 방식이 좋다.
캐릭터 본 트리를 보기 위해 스켈레톤 탭으로 이동 하였다.
필자가 올려둔 에셋에는 bust 라고 검색을 해보면 가슴에 본이 셋팅 되어 있음을 확인 할 수 있다.
만약 다른 캐릭터라면 최대한 비슷한 위치에 있는 본을 선택하길 바라고, 없다면 그 캐릭터는 바스트 모핑을 처리 할 수 없다.
위 이미지를 기준으로, L_bust_up 과 R_bust_up 부분에 스프링 조인트를 끼워주면 될 것 같다.
애니메이션 블루프린트로 돌아와, 스프링 컨트롤러에 Limit Displacement 옵션을 활성화 한다.
그 아래에 값을 조절 해 줄 수 있는데, 조인트가 늘어날 수 있는 최대 거리를 뜻한다.
필자 경험상 이 값은 대략 4~10 정도를 많이 쓴다.
욕심부려 높여주면 굉장히 어색한 모션이 나올 수 있기 때문에 걷기 애니메이션을 재생 하면서
조금씩 값을 수정해 나가는 편이 좋다.
그외 설정 값에 대한 간략한 설명을 해둔다.
Max Displacement | 조인트가 늘릴 수 있는 최대 길이 |
Spring Stiffness | 스프링 경직도 (클수록 뻣뻣한 느낌이 납니다) |
Spring Damping | 감쇠 크기, 클수록 덜 움직입니다. |
Error Reset Thresh | 이 값을 넘은 오차를 가지면 강제로 리셋 됩니다. |
Rotate X, Y, Z | X,Y,Z 축 회전 값도 계산하여 적용 합니다. |
필자의 셋팅은 위와 같다. 저것은 정답은 아니고, 그냥 참고용이니 맹신하지는 말자.
본인 캐릭터에 맞는 설정값을 적당히 조절해서 써야 한다.
값을 모두 조절 했다면, 해당 스프링 컨트롤러를 복/붙 하여 같은 노드를 만들고
나머지 오른쪽 본도 설정해주도록 한다.
컴파일을 하면...
작업 결과에 대한 영상은 아래를 참고하길 바란다.
마치며
스프링 조인트 관련 글이 없어 이번에 정리를 한번 해서 올려보았다.
참고로, 바스트 모핑을 처리하는데 있어서 이상한 생각을 가지는 사람들이 종종 있는데
사실 이 기능은 게임에 여캐가 있는 3D 게임이라면, 꼭 필요한 기능일 것 같다.
물리 법칙에 의해 움직이지 않지는 않으니..
도움이 됬길 바라며 포스팅을 마친다.
'볼봇의 코딩 생활 > 언리얼한 엔진' 카테고리의 다른 글
[UE4] MediaPlayer 를 사용하여 인터넷 비디오 재생하기 (1) | 2019.10.19 |
---|---|
[UE4] HTTP 통신으로 파일 다운로드 (5) | 2019.09.08 |
[UE4] 데디케이트 서버 (Dedicate Server) 구축 - Linux 편 (4) | 2019.08.05 |
[UE4] 데디케이트 서버(Dedicate Server) 구축 - Windows 편 (6) | 2019.08.04 |
UE4 안드로이드에서 프로젝트 개발 하기 (1) | 2019.06.15 |