Spine 4.2: 피직스 혁신

April 27th, 2024

새로운 Spine 4.2 릴리스를 알려드리게 되어 매우 기쁘게 생각합니다! 수많은 새로운 기능이 있으며 그중 많은 기능은 10여 년 전 Spine의 첫 릴리스 이후부터 소망해왔습니다. 이제 새로운 많은 기능들이 이번 릴리스에 포함되어 있습니다!

가장 중요한 부분을 한번 살펴보겠습니다!

피직스

Spine의 피직스는 정말 획기적입니다! 이제 Spine은 실세계의 피직스를 시뮬레이션하여 뼈를 자동으로 움직이게 할 수 있습니다. 애니메이션을 더 멋지게 보이게 하면서도 많은 시간을 절약할 수 있습니다!

그녀를 이리저리 드래그해 보세요!

더 이상 머리카락, 옷, 기타 아이템의 보조 모션을 힘들게 애니메이팅할 필요가 없습니다. 자연스럽게 움직이는 모든 것은 피직스를 사용하여 자동으로 움직이게 할 수 있습니다.

시간을 절약하는 것 외에도 피직스는 역동적인 움직임도 제공합니다. 피직스는 애니메이션 전체와 게임 월드에서 캐릭터의 움직임 모두에서 유동적이고 현실적으로 반응합니다.

PSD 가져오기

이제 Spine은 PSD 파일을 직접 읽어 아트를 가져올 수 있습니다. 이렇게 하면 Adobe Photoshop에서 벗어나 PSD 파일을 저장할 수 있는 모든 이미지 편집기를 사용할 수 있습니다.

더욱이, 이 기능은 PhotoshopToSpine 스크립트보다 약 10배 더 빠릅니다!

픽셀 모드

픽셀 아트에 Spine을 사용할 때 새로운 픽셀 모드는 영역 어태치먼트를 화면 픽셀과 일치하도록 이동시킵니다. 이를 통해 어태치먼트가 픽셀 단위로 떨어져서 흐릿해지는 것을 방지할 수 있습니다.

화면 픽셀과 일치하지 않는 어태치먼트를 강조 표시하는 새로운 픽셀 강조 표시 단축키도 있습니다. 이를 통해 어태치먼트가 흐릿해지는 부분을 쉽게 확인하여 수정할 수 있습니다.

제약 조건 관리

4.2에서는 많은 제약 조건이 있는 프로젝트에 다음의 여러 가지 개선 사항을 제공합니다.

  • 제약 조건을 복제하면 모든 뼈를 복제할지 묻는 메시지가 표시됩니다. 예를 들어 팔다리를 설정할 때 이렇게 하면 많은 시간을 절약할 수 있습니다.
  • 여러 제약 조건을 선택한 경우 이제 제약 조건을 모두 동시에 변경할 수 있습니다.
  • 제약 조건을 복사하여 다른 스켈레톤에서도 설정을 다른 제약 조건에 붙여 넣을 수 있습니다.
  • 제약 조건에서 각각의 뼈를 추가하거나 제거할 수 있습니다.
  • 믹스를 변경하지 않고도 가시점을 통해 제약 조건을 해제할 수 있습니다.

가중치 툴

새로운 결합 기능은 메쉬 전체의 가중치를 일치시켜 효과적으로 함께 결합합니다. 이를 통해 여러 메쉬가 마치 하나의 이미지인 것처럼 동일하게 변형할 수 있습니다.

여러 메쉬를 원활하게 사용하는 데 적합하지만, 결합 기능을 사용하면 옷, 얼굴 표정, 클리핑 어태치먼트 등을 추가할 때 기존 가중치를 적용할 수 있어 시간도 절약할 수 있습니다.

마지막으로, 이제 다른 메쉬에서도 다른 정점에 가중치를 복사하여 붙여 넣을 수 있습니다.

루핑 곡선

이제 루핑 애니메이션의 첫 번째와 마지막 키의 곡선 핸들이 동기화됩니다. 때로는 사소한 것에서 많은 시간을 절약할 수 있습니다!

폴더

그리기 순서 폴더를 사용하면 큰 스켈레톤의 슬롯을 정리할 수 있습니다. 여러 개의 개별 슬롯이 아닌 폴더를 드래그하여 그리기 순서를 조정할 수 있습니다.

제약 조건 폴더를 사용하면 복잡한 스켈레톤을 보다 쉽게 관리할 수 있습니다. 폴더를 마우스 가운데 버튼으로 클릭하여 모든 하위 항목을 선택합니다.

루트 모션

spine-unity 런타임에서 루트 모션을 수행할 수 있습니다!

일반적으로 제자리에서 걷기 반복을 애니메이팅한 다음 런타임에서 코드가 게임 월드 내내 정확한 속도로 움직이게 합니다. 발을 끌며 걷는 좀비처럼 움직임이 복잡한 경우 코드가 애니메이션을 일치시키는 것은 매우 어렵습니다.

루트 모션을 사용하면 걷기 반복이 움직임과 함께 애니메이팅됩니다. 런타임에서 애니메이션의 움직임을 제거하여 이를 게임 월드 위치에 적용합니다. 그 결과 게임 월드 내내 움직임은 애니메이션과 완벽하게 일치합니다.

훨씬 더 향상된 루트 모션 델타 보정 기능을 사용하면 점프 애니메이션의 거리를 완벽하게 조정할 수 있습니다. 이런 방식으로 애니메이터는 Spine에서 점프 동작을 신중하게 디자인할 수 있으며 프로그래머는 여전히 게임 월드에서 점프가 실제로 얼마나 멀리 움직이는지 제어할 수 있습니다.

새로운 런타임

4.1 릴리스 이후 수많은 새로운 런타임이 추가되었습니다!

spine-godot을 통해 가장 인기 있는 오픈 소스 게임 엔진에 대한 런타임을 구현했습니다.

보다 직접적인 접근 방식을 선호하는 분들을 위해 spine-c 또는 spine-cpp 런타임과 함께 사용할 수 있는 spine-sdl을 만들었습니다.

spine-flutter를 통해 모바일 앱으로의 진출을 시작했습니다. 곧 더 많은 런타임이 출시될 예정입니다!

spine-phaser 런타임은 기존 Phaser Spine 플러그인을 완벽하게 대체합니다. Phaser용 Spine 런타임을 직접 제공함으로써 적시에 업데이트할 수 있고 Phaser 팀의 부담을 줄일 수 있습니다.

최근에는 spine-haxe를 아스널에 추가했습니다. 이는 OpenFL/Lime 외에 Starling과 함께 사용할 수 있습니다. OpenFL 외에도 HaxeFlixel과 같은 다른 프레임워크도 지원할 계획입니다.

새로운 런타임 목록의 마지막 항목은 PixiJS용 공식 Spine 런타임인 spine-pixi입니다. Spine-phaser와 마찬가지로 저희는 사용자가 공식 지원을 통해 적시에 업데이트를 받을 수 있도록 하려고 합니다.


이러한 런타임은 프로덕션에 바로 사용할 수 있으며 시작하는 데 도움이 되는 다양한 코드 예제가 포함되어 있습니다. 현재 각 설명서를 완성하는 작업을 진행 중이며, 앞으로 몇 주 내에 준비될 예정입니다.

언리얼 엔진 5.3 지원

언리얼 엔진 5.3에서 에픽은 에셋 처리 방식을 변경했습니다. 더 이상 같은 폴더에 이름은 같지만 유형이 다른 두 개의 에셋이 있을 수 없습니다.

따라서 이제 스켈레톤 데이터 파일(.skel.json)과 아틀라스 파일의 접두사가 다른지 확인해야 합니다. 예를 들어, skeleton-data.skelskeleton.atlas입니다. 또는 스켈레톤 데이터와 아틀라스 파일을 별도의 폴더에 넣을 수도 있습니다.

또한 언리얼은 이전 언리얼 엔진 버전에서 생성된 에셋에 대한 spine-ue의 적절한 액세스 권한을 허용하지 않습니다. 이는 자동화된 업그레이드 경로를 제공할 수 없음을 의미합니다. 프로젝트를 언리얼 엔진 5.3으로 마이그레이션하려면 에셋을 수동으로 재생성하고 다시 연결해야 합니다.

유니티(Unity)

유니티에서는 기본적으로 모든 트랜스폼 이동이 스켈레톤의 피직스 제약 조건과 완벽하게 통합됩니다. 스켈레톤을 이리저리 움직이기만 하면 피직스가 적절하게 반응합니다. 기본 설정이 부족하다면 피직스 상속 설정을 조금만 변경하면 됩니다. 새로운 피직스 제약 조건 예제 신(scene)을 놓치지 마시고 해당 스켈레톤을 잘 흔들어 주세요.

SkeletonGraphic 컴포넌트에도 새로운 기능이 추가되었습니다. 스켈레톤을 RectTransform 경계에 자동으로 맞추도록 새로운 레이아웃 크기 조정 모드를 설정할 수 있습니다. 또한 SkeletonGraphic이 잘못 표시되거나 올바른 인스펙터 및 머티리얼 설정을 찾는 데 어려움을 겪은 적이 있으신가요? 새로운 자동 감지 버튼 덕분에 이제 그런 시절은 끝났습니다! 새로 확장된 머티리얼 세트에서 올바른 머티리얼을 자동으로 할당하는 머티리얼 감지 버튼도 있습니다.

셰이더 개선 없이는 어떤 릴리스도 완벽하지 않을 것입니다. 이제 모든 Spine URP 및 Spine/Sprite 셰이더에서 틴트 블랙(Tint Black)을 지원하고 이번 업데이트를 마무리하기 위해 URP 블렌드 모드 셰이더를 추가했습니다.

기타 런타임 변경 사항

모든 런타임에서는 새로운 편집기 기능을 모두 지원하며 프로덕션에 바로 사용할 수 있습니다! 게임 엔진 및 언어별 변경 사항은 Spine 런타임 변경 로그를 참조하세요.

피직스가 추가됨에 따라 다음의 몇 가지 API를 변경해야 했습니다.

  • 이제 Skeleton.updateWorldTransform()에서는 피직스가 업데이트되고 적용될 때 제어하기 위해 추가 피직스 매개변수를 사용합니다. 대부분의 경우 Physics.update를 사용할 것입니다.
  • 피직스 시뮬레이션을 구동하려면 피직스 코드에서 시간이 얼마나 지났는지 알아야 합니다. 이 정보는 각 스켈레톤에 저장됩니다. 프레임 시간이 앞당겨진 경우 Skeleton.update(deltaTime)를 호출하여 스켈레톤에 알려야 합니다.
  • TransformMode상속으로 이름을 변경했습니다. 트랜스폼 모드를 수동으로 설정하지 않는 한 이 변경 사항은 코드 베이스에 영향을 미치지 않습니다.
  • TrackEntry.attachmentThresholdTrackEntry.mixAttachmentThreshold로, TrackEntry.drawOrderThresholdTrackEntry.mixDrawOrderThreshold로 이름을 변경했습니다.

이러한 API 변경 사항 외에도 Spine 런타임 4.2를 사용하려면 Spine 편집기 4.2로 스켈레톤을 다시 내보내야 합니다. 자세한 내용은 Spine 버전 관리 가이드를 참조하세요.

다음으로

저희는 Spine 4.2에 매우 만족하고 있습니다! 새로운 기능은 사용하기 쉽지만 매우 강력합니다. 피직스는 많은 시간을 절약하는 동시에 역동적인 움직임으로 애니메이션을 개선하는 게임 체인저입니다.

이와 같은 대규모 릴리스 후에는 개선과 삶의 질 향상을 통해 소규모 릴리스를 진행하려고 합니다. 4.3에서는 워크플로를 간소화하는 데 중점을 둘 것입니다. 목표는 일반적인 작업을 수행하는 데 필요한 노력을 줄여 시간을 절약하는 것입니다.

문제를 보고하시고, 베타 버전을 테스트하시고, 새로운 기능을 만드는 데 도움이 되는 제안과 피드백을 보내주신 커뮤니티의 모든 분들께 감사드립니다. 여러분의 의견은 매우 소중합니다!

즐겁게 애니메이팅하세요!
– Spine 팀

Spine 포럼에서 이 게시물에 대해 토론해 보세요.

Import PSDs directly, no Photoshop scripts needed

February 24th, 2024

We've just released Spine 4.2.10-beta where we've added the ability for the Spine editor to process PSDs directly. This is great for many reasons:

  • You are no longer forced to use Photoshop -- use any image editor that can save a PSD file.
  • All the tags from the PhotoshopToSpine script are supported.
  • It is much faster! On a large PSD (200MB, 215 layers) it finishes in about 25% of the time (6 seconds versus 23) compared to the PhotoshopToSpine script.
  • Process the PSD and import it into Spine in one step.

To try it out, go to Import Data and choose a PSD file:

There are other great things in the 4.2.10-beta changelog:

  • Constraint folders make it easier to use and organize many constraints, especially great for physics.
  • Draw order folders make it easier to organize your slots so you don't have one very long list to deal with.
  • Lots of important fixes and improvements.

Quick overview of the new Spine PSD Import and Slot and Constraints folders:

Jump over to the Spine forum to discuss this post!