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

오늘은 여태 실패한 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

+ Recent posts