커밋 정리가 너무 늦게 걸려 자정을 넘어가버렸습니다.

오늘은 여태 실패한 Animation Retarget을 마저 진행했습니다.

 

지금까지 확인된 성공 조건은 다음과 같았습니다.

1. AnimSequence에 SkeletalMesh를 재지정 하기 전에 SkeletalMesh와 관련된 일련의 클래스 3개를 하나도 빠짐없이 모두 Valid 한 상태로 만들어야 합니다. 3개의 파일이 서로를 참조하는데 이 연결이 정확히 연결되어 있어야 합니다.

2. Retarget 되는 AnimSequence 중 일부는 반드시 수동으로 지정해줘야 합니다.

3. 1과 2가 모두 되더라도 실패할 가능성이 있습니다. 즉, 확률적입니다.

 

이는 Animation Retarget 내부 코드를 뜯어보지 않아서 조건을 명확히 알 수가 없습니다.

다만 이게 의도된 사항은 아니라 생각하고, 조만간 수정이 되지 않을까 싶어 구태여 따로 건들지 않고 Retarget만 최대한 빠르게 처리했습니다.

그래도 Property Matrix를 알아서 비교적 빠르게 처리가 되었습니다.

 

두번째로, 작업하면서 의도치 않은 작업이 진행되었습니다.

AnimSequence의 Property Matrix를 열 때 크러시가 발생하는 일이 종종 발생했습니다.

확인해본 결과 크러시 발생 조건은 Skeletal이 연결이 된 AnimSequence와 그렇지 않은 AnimSequence가 모두 포함 된 채로 Property Matrix를 열려고 시도하면 발생을 하였습니다.

크러시 위치는 USkeleton::IsCompatible 함수 내부에서 발생했고, 원인은 이 함수 내에서 자기 자신(this)이 Invalid하여 발생을 하였습니다.

 

정확한 해결 방안인지는 잘 모르겠지만 너무 불편하여 USkeleton::IsCompatible 안에서 this가 Valid한지 체크하는 조건문을 추가했고, 이 커밋을 정리하여 EpicGames의 UnrealEngine 레포지토리에 PR을 던져두었습니다.

부족한 영어로 메세지를 적었고, 로직을 모두 확인하지는 못했지만 처음으로 엔진에 수정사항을 적용하였기에 결과가 기대가 됩니다.

 

지금은 Master 브랜치에서 작업한 Animation Retarget 커밋을 올려두고, 원래 작업하던 RPG 브랜치로 돌아와 Master Rebase를 하고 있습니다.

Rebase가 끝나면 실행을 해보고, 실행이 안되면 다시 엔진서부터 빌드를 하여 실행 가능한 상태로 만든 뒤 애니메이션 작업을 재개하고자 합니다.

'개발일지 > 코어 플레이 개발' 카테고리의 다른 글

22년 08월 19일 개발일지 2  (0) 2022.08.20
22년 08월 19일 개발일지  (0) 2022.08.19
22년 08월 15일 개발일지  (0) 2022.08.15
22년 08월 14일 개발일지  (0) 2022.08.15
22년 08월 10일 개발일지  (0) 2022.08.10

애니메이션 작업을 하기 앞서 프로젝트가 저장되어 있는 저장장치의 용량이 100GB 남짓 남았더군요.

그리고 PC에 개발환경이 두 군데에 형성되어 있길래 이걸 정리하였습니다.

기존에 사용하던 SSD에 개발프로그램들을 남겨두고, HDD에 프로젝트를 저장하였습니다.

그리고 이 과정에서 사소하지만 매우 큰 사건이 터졌는데요.

 

현재 개발중인 Unreal Project를 HDD로 옮기고 엔진 빌드를 걸었는데 자고 일어나니까 50% 밖에 진행되지 않았습니다.

이걸 보고 HDD에서 사용하면 속이 터질 것 같아 다시 SSD로 옮기고 엔진 단위서부터 다시 빌드를 했습니다.

이후 엔진 빌드와 프로젝트 빌드를 하고 다시 실행 가능할 때까지 복구를 하니 오후 5시가 되었습니다.

 

5시부터는 애니메이션 재작성을 시작했는데 여기서 한가지 기쁜 점과 슬픈 점을 발견했습니다.

 

기쁜 점은 사라졌다고 생각 되었던 Animation의 손실된 Skeletal의 일괄 적용 방식을 발견했습니다.

https://docs.unrealengine.com/5.0/ko/property-matrix-in-unreal-engine/

 

프로퍼티 매트릭스

동시에 여러 액터의 프로퍼티 다수를 확인하고 편집하는 툴입니다.

docs.unrealengine.com

Property Matrix라고 동일한 BP타입의 Properpty를 Matrix로 수정하는 기능입니다.

이 기능을 통해 Skeletal Mesh를 일괄로 적용을 할 수 있었습니다.

 

슬픈 점은 이걸 적용했을 때 AnimSequence가 정상 동작하지 않는다는 점이었습니다.

그나마 다행인 점은 Animation Retarget을 시행하면 Retarget 된 AnimSequence는 정상 동작을 합니다.

문제는 Property Matrix만 사용해서는 동작하지 않고, 수동으로 Skeletal Mesh를 재지정 하여 정상 동작이 확인된 AnimSequence를 포함하여 Retarget을 해야지만 정상 동작을 한다는 점입니다.

 

이게 왜 이런지는 솔직히 잘 모르겠습니다.

우선은 이 Animation Retarget 지옥에서 벗어나기 위해 최대한 빠르게 애니메이션을 다시 입력하고 정상 작업 궤도로 복구하고자 합니다.

'개발일지 > 코어 플레이 개발' 카테고리의 다른 글

22년 08월 19일 개발일지  (0) 2022.08.19
22년 08월 18일 개발일지  (0) 2022.08.19
22년 08월 14일 개발일지  (0) 2022.08.15
22년 08월 10일 개발일지  (0) 2022.08.10
22년 08월 07일 개발 일지  (0) 2022.08.07

오늘은 마우스 이동으로 방향 전환 시 캐릭터가 같이 회전하지 않는 이슈.

그리고 이동 시 간단한 애니메이션 적용을 해보았습니다.

 

캐릭터 회전 이슈는 SpringArm의 Rotator 값을 Controller의 값을 사용하도록 하다 보니 마우스를 돌릴 때 캐릭터가 아니라 SpringArm만 회전을 하는 것이었습니다.

이 부분은 옵션을 제거해 놓은 상태입니다.

 

또한 이 과정에서 캐릭터를 90도 회전한 뒤 이동하면 이동 방향이 꼬이는 문제가 있었는데, 이는 Controller의 FrontVector를 사용해서 생긴 문제로 ArrowComponent의 것을 사용하는 것으로 수정했습니다.

 

마지막으로 Animation은 적용해 보았는데 루트모션이 비정상 동작을 하였습니다.

이것저거서 만지다가 아래 블로그를 통해 원인을 파악했습니다.

https://devjino.tistory.com/277

 

[UE5] Animation Retargeting 루트 모션 문제 해결

다음의 글과 같이 작업한후 테스트 해보니, 애니메이션을 루트 모션으로 설정하였지만 제자리에서 움직이지 않는 현상이 있었습니다. [게임 개발/Unreal Engine] - [UE5] Animation Retargeting 방법 다음의

devjino.tistory.com

원인은 Animation Retarget할 때 root 항목과 옵션을 누락했기 때문이고, 튜토리얼에는 이 항목이 없다고 하네요.

결국 이를 수정하기 위해서는 Animation Retarget을 다시 해야 하는데, 이전처럼 노가다를 하나하나 할 생각은 없습니다.

그냥 Unreal Engine 5.x 버전에 호환된 애셋들을 Ctrl CV를 하여 본 프로젝트에 옮겨두고, ignore로 push가 안되게 한 뒤 본 프로젝트 안에서 Animation Retarget을 진행하고자 합니다.

 

내일 광복절이라 회사에 가지 않으니 오후에 시간이 되면 이 작업을 진행할 예정입니다.

추가로 시점 변환 등의 작업을 진행해보니 생각보다 고도화 해야 할 사항이 많다는 것을 깨달았습니다.

그래서 AOS 모드 개발을 무기한 연기하고, 코드 리펙토링을 거친 뒤 기능 추가를 하면서 고도화 작업을 진행 할 예정입니다.

 

 

1.1) 3인칭-1인칭 토글 기능 (주말 전까지 개발)

1.2) 이동 애니메이션 추가 (22.08.14 - cont)

1.3) 이동 함수를 Controller로 이동(1.6)과 통합)

1.4) 이동 방향에 따라 하체 애니메이션 방향 정확히 매칭되도록 보정

1.5) 울퉁불퉁하거나 언덕, 절벽에서 발이 공중에 붕 뜨지 않도록 보정

1.6) 코드 리팩토링(1.이동 기능을 Controller로 이동)

1.7) 추가 기능 구상 및 고도화

2. AOS 모드 개발(충분한 기능이 개발되기 전까지 무기한 연기)

'개발일지 > 코어 플레이 개발' 카테고리의 다른 글

22년 08월 18일 개발일지  (0) 2022.08.19
22년 08월 15일 개발일지  (0) 2022.08.15
22년 08월 10일 개발일지  (0) 2022.08.10
22년 08월 07일 개발 일지  (0) 2022.08.07
22년 07월 31일 개발 일지  (0) 2022.07.31

+ Recent posts