게임 엔진용 스켈레톤 내보내기
파일 ▸ 내보내기 ▸ 스켈레톤(JSON)…은 본 리그와 그 애니메이션을 이미지로 렌더링하지 않고, 게임 엔진이 재생할 수 있는 데이터로 씁니다.
스프라이트 시트는 프레임마다 이미지 한 장을 저장합니다. 스켈레톤 내보내기는 리그 자체를 저장합니다. 본, 거기에 달린 이미지, 그리고 본이 시간에 따라 어떻게 움직이는지입니다. 그러면 엔진이 캐릭터를 직접 그리므로, 애니메이션은 용량이 작고 어떤 크기와 프레임 속도에서도 매끄럽게 재생됩니다.
내보내기
- 파일 ▸ 내보내기 ▸ 스켈레톤(JSON)…을 고르세요.
- 폴더를 고르세요. 내보내기는 파일 여러 개를 쓰므로 파일 이름이 아니라 폴더를 묻습니다.
- 파일은 바로 쓰입니다. 고를 설정은 없습니다.
폴더에는 skeleton.json, 본에 달린 이미지를 담은 아틀라스 skeleton.png, 그리고 메시마다 메시 레이어 이름을 딴 PNG가 하나씩 생깁니다. 파일 이름에 쓸 수 없는 문자는 다른 문자로 바뀌고, 두 메시의 이름이 같으면 두 번째 파일에 번호가 붙습니다. 이름이 고정되어 있으므로, 같은 프로젝트를 다시 내보내면 같은 파일을 바꿔 씁니다.
파일에 들어 있는 것
구조는 Spine을 본떴습니다. 본, 슬롯, 어태치먼트, 애니메이션입니다. Spine 파일은 아니어서 공식 Spine 런타임은 읽지 못하지만, 구조가 충분히 익숙해서 엔진용 가져오기 코드는 한 번만 쓰면 됩니다.
| 부분 | 내용 |
|---|---|
| 본 | 모든 본 레이어의 모든 본과, 부모에 대한 휴식 포즈. 고정 본, 즉 IK 목표는 들어가지 않습니다. 그 효과는 이미 그것이 움직이는 본에 담겨 있기 때문입니다 |
| 메시 어태치먼트 | 모든 메시 레이어와, 휴식 상태의 정점, 삼각형, 그리고 정점마다 본별 웨이트 |
| 영역 어태치먼트 | 레이어 연결로 본 하나를 단단히 따라가는 레이어. 아틀라스에 놓이며, 본에 대한 고정 오프셋을 가집니다 |
| 애니메이션 | 타임라인의 그룹 마커마다 애니메이션 하나, 마커 이름을 따릅니다. 그룹 마커가 없으면 인 포인트에서 아웃 포인트까지의 default라는 애니메이션 하나만 있습니다 |
엔진이 원래 직접 재현해야 할 모든 것은 단순한 숫자로 구워집니다. IK, 본 다이내믹스, 컨트롤 본, 액션은 모두 평범한 회전, 이동, 크기 키프레임이 됩니다. 어떤 액션이 본 웨이트로는 표현할 수 없는 방식으로 메시 모양을 바꾸면, 그 애니메이션은 대신 메시 정점의 위치를 프레임마다 저장하므로, 엔진은 액션이 어떻게 작동하는지 알 필요가 없습니다.
아직 들어 있지 않은 것
- 어느 본에도 연결되지 않고 자기 키프레임으로 움직이는 레이어. 이런 레이어는 스프라이트 시트나 PNG 시퀀스로 내보내세요.
- 본 레이어 안의 자동 따라가기. 바인드하거나 칠한 웨이트, 그리고 레이어 연결로 이은 레이어만 내보내지므로, 유연이나 영역 바인드로만 리그를 따라가는 레이어는 내보낸 결과에서 움직이지 않습니다.
- 본 위에 자기 위치, 회전, 크기를 따로 가진 메시.
- 실시간 제약으로서의 IK, 변형, 패스, 물리 제약, 이벤트, 그리고 옷 갈아입히기에 쓰는 스킨.