시작하기: 기본 워크플로우
이 가이드는 JSON Optimizer를 빠르게 시작하는 데 도움이 됩니다. 프로젝트 로드: InputNode 를 사용하여 .json , .atlas , .png 파일을 로드하세요. 프리셋 선택(Plus 모드): Plus 모드에서는 오른쪽 패널에서 내장 프리셋(예: "Basic Fallback") 중 하나를 선택하세요. 그러면 최적화 그래프가 자동으로 구성됩니다. Free 모드에서는 최...
Read article이 가이드는 JSON Optimizer를 빠르게 시작하는 데 도움이 됩니다. 프로젝트 로드: InputNode 를 사용하여 .json , .atlas , .png 파일을 로드하세요. 프리셋 선택(Plus 모드): Plus 모드에서는 오른쪽 패널에서 내장 프리셋(예: "Basic Fall
이 가이드는 JSON Optimizer를 빠르게 시작하는 데 도움이 됩니다. 프로젝트 로드: InputNode 를 사용하여 .json , .atlas , .png 파일을 로드하세요. 프리셋 선택(Plus 모드): Plus 모드에서는 오른쪽 패널에서 내장 프리셋(예: "Basic Fallback") 중 하나를 선택하세요. 그러면 최적화 그래프가 자동으로 구성됩니다. Free 모드에서는 최...
Read article이 글은 노드 그래프의 소켓에서 사용되는 데이터 타입과, 어디에 무엇을 연결할 수 있는지 설명합니다. 소켓 타입 Spine Payload — 대부분의 처리 노드가 사용하는 Spine 프로젝트의 런타임 친화적 표현입니다. Atlas Project — 아틀라스 노드에서 사용하는 아틀라스 메타데이터 + 페이지 이미지입니다. Sprites — 언팩된 스프라이트 이미지/리전(Atlas Unpac...
Read articlere-polish는 서로 다른 요구에 맞춘 두 가지 구독 등급을 제공합니다. 무료 플랜 ✓ 기본 노드 그래프 ✓ JSON 뷰어 ✓ 여러 트랙에서 애니메이션을 재생하고 애니메이션 간 믹스를 조절할 수 있는 타임라인 ✓ 제한된 최적화 ✓ Spine 버전: 4.2, 4.1, 4.0, 3.8, 3.7 Plus 플랜 ($5/월) ✓ 모든 무료 기능 ✓ 키, 커브, 텍스처, 스켈레톤 스케일 최적화...
Read article모든 최적화 방법은 두 가지 유형으로 나뉩니다: 무손실: 이 방법들은 중복 데이터를 제거하기만 합니다... 예: Spline 최적화 노드 , CleanupNode . 손실형: 이 방법들은 애니메이션 곡선을 단순화합니다... 예: RDP 최적화 노드 , QuantizerNode . 권장: 항상 무손실 최적화부터 시작하세요. 추가적인 파일 크기 감소가 필요할 때만 손실형 방법을 사용하고,...
Read article최적화의 효과를 이해하려면 다음 지표에 주의하세요: 파일 크기: .json 파일의 최종 크기가 최적화의 주요 목표입니다. 키프레임 수: "통계" 탭에서 각 애니메이션에서 제거된 키프레임 수를 보여주는 표와 차트를 찾을 수 있습니다. 시각적 비교: 항상 "보기" 탭을 사용하여 "이전"과 "이후" 애니메이션을 비교하세요. 손실형 최적화가 허용할 수 없는 시각적 아티팩트를 도입하지 않았는지...
Read article보기 탭은 캔버스 위에 조작 패널을 오버레이로 표시합니다. 세 그룹으로 나뉩니다: 애니메이션 컨트롤 애니메이션 — 재생할 Spine 애니메이션을 선택합니다. 스킨 — 적용할 스킨을 선택합니다. 속도 — 재생 속도 배율 (0.1× → 3.0×). 보기 컨트롤 보기 초기화 — 기본 카메라/레이아웃 위치로 되돌립니다. 보기 옵션 — 비교 뷰 위치를 위한 수치 오프셋: 간격 X / 간격 Y (...
Read articlePerformance 패널은 현재 재생 중인 스켈레톤(들)의 런타임 메트릭을 실시간으로 보여줍니다. 실시간 FPS — 모니터가 측정한 초당 프레임. Frame Time — 프레임당 시간(밀리초, 낮을수록 좋음). FPS chart — 최근 120개 샘플을 막대로 표시. 스켈레톤 메트릭 Visible Slots — 마지막 샘플에서 보였던 슬롯 수. Avg. Visible — 보이는 슬롯...
Read article타임라인 패널은 Viewer 하단에 있는 도킹 가능한 애니메이션 시퀀서입니다. 여러 트랙에 애니메이션 클립을 배치하고 재생을 제어하며 트랜지션을 미리보기할 수 있습니다. 트랙과 클립 최대 4개 애니메이션 트랙 — 각 트랙은 Spine의 trackIndex 레이어에 매핑됩니다. 상위 트랙은 하위 트랙에 블렌딩됩니다. 애니메이션 추가 — 임의의 트랙에서 + 버튼을 클릭하여 애니메이션 피커를...
Read article레코더 는 Viewer에서 Spine 애니메이션을 동영상, 애니메이션 이미지 또는 이미지 시퀀스로 캐처합니다. 녹화 모드 ⚡ Quick Record — MediaRecorder + captureStream() 을 사용한 리얼타임 캐처. WebM 출력만 가능. 빠르지만 리얼타임 프레임 레이트에 제한됩니다. 🎬 HQ Export — WebCodecs VideoEncoder + readPi...
Read article결과 탭은 상세한 최적화 결과를 보여줍니다. 결과 테이블 — JSON 최적화 결과를 변경 단위(행)로 표시합니다(예: 어떤 애니메이션/본/속성/키프레임이 수정 또는 제거되었는지). 스프라이트/아틀라스 비교 — 텍스처 최적화를 사용한 경우, 이 섹션에서 스프라이트 크기와 패킹 결과를 비교합니다. 팁: 결과 뷰로 정확히 무엇이 바뀌었는지 확인하세요.
Read article통계 탭은 최적화 결과를 차트와 집계 지표로 요약합니다. 최적화 차트 — 데이터셋 전반의 최적화 영향을 시각화합니다(JSON 최적화에서 변경이 발생한 경우). 지표 테이블 — 원본/신규 크기와 감소율 같은 핵심 수치. 텍스처 패킹 통계 — 아틀라스 재패킹을 사용한 경우, 페이지 수, 총/사용 면적, 효율, 그리고 페이지별 상세 내역을 보여줍니다. 이 탭으로 전체적으로 얼마나 개선됐는지...
Read article공식 YouTube 플레이리스트의 실제 파이프라인을 소개합니다. 전체 플레이리스트 열기 예시 Spine2D 실험 1: RDP 알고리즘으로 곡선 최적화 — Spine 2D 기본 최적화 데모: Ramer–Douglas–Peucker(RDP) 알고리즘이 중복 곡선/키 데이터를 제거해 JSON을 줄입니다. RDP는 중요한 키를 제거할 수 있으므로 항상 애니메이션을 확인하고 RDP 노드 전에 필...
Read articleSpine 프로젝트 파일, JSON 전용 입력, 데모 에셋 및 ZIP 패키지를 그래프로 가져옵니다.
용도: 대부분의 워크플로에서 사용하는 기본 진입점입니다. JSON, atlas, 텍스처를 읽어 후속 노드가 처리할 수 있는 내부 데이터로 정규화합니다. 지원 모드: 1. 전체 프로젝트: JSON + atlas + 텍스처 2. JSON 전용: atlas 없이 skeleton/animation 데이터를 처리 3. ZIP 패키지: 완전한 프로젝트가 들어 있는 패키징된 zip 4. 데모 에셋: 빠른 테스트를 위한 내장 샘플 데이터 주요 출력: - **payload_out**: 최적화 노드를 위한 정규화된 데이터 - **original_json_out**: 비교 또는 재구성을 위한 원본 JSON - **atlas_project_out**: 텍스처가 제공될 때 파싱된 atlas 프로젝트
Spine 워크플로용으로 비디오 클립을 PNG 프레임 시퀀스로 변환합니다.
이 도구는 Input 메뉴에 있는 무료 입력 도구로, 실제 제작 워크플로에 맞게 설계되었습니다. 그린 스크린용 크로마 키와 검은 배경용 언프리멀티플라이 스타일 매트 정리를 지원합니다. 출력은 payload_out 및 atlas_out으로 전달됩니다.
독립적인 PNG/JPEG 이미지를 뷰포트에 추가해 더 깔끔한 미리보기와 프레젠테이션 샷을 만들 수 있게 합니다.
용도: 이 노드를 사용하면 이미지를 프레젠테이션 레이어나 시각적 보조 요소로 뷰포트에 직접 배치할 수 있습니다. 장면을 꾸미고, 보조 그래픽을 추가하고, 동영상이나 데모를 녹화하기 전에 프로젝트 미리보기를 더 다듬어진 모습으로 만들고 싶을 때 유용합니다. 워크플로: 이미지 하나를 불러온 다음 뷰포트 도구로 크기를 조절하고, 이동하고, z-index를 조정해 구도 안에 올바르게 배치합니다. 이렇게 하면 주요 Spine 프로젝트 데이터를 건드리지 않고도 매력적인 쇼케이스 샷을 쉽게 만들 수 있습니다. 이 노드는 독립형이며 그래프 소켓을 노출하지 않습니다. Version: 생성된 스텁 스켈레톤용 Spine JSON 버전 형식. Blending: 생성된 어태치먼트의 블렌드 모드(노멀, 가산, 곱셈, 스크린).
레이어가 있는 PSD/PSB 파일을 불러와 Photoshop 장면 레이아웃을 유지하는 연결된 Spine 스켈레톤을 생성하여 정확한 프리뷰 구성을 돕습니다.
목적: 장면이 이미 Photoshop에서 구성되어 있고 그 레이어 스택을 viewer 안의 연결된 Spine 스켈레톤 세트로 바꾸고 싶을 때 사용하는 노드입니다. 보이는 각 PSD 레이어는 PSD 좌표를 기준으로 배치된 이미지형 스켈레톤이 되므로 preview 구성과 오브젝트의 정확한 배치가 훨씬 쉬워집니다. Viewer workflow: 생성 후에도 viewer에서 draw order를 변경하고 가져온 PSD 레이어 사이에 다른 스켈레톤을 배치할 수 있으므로, 추가 Spine 캐릭터나 props를 Photoshop 컴포지션 안에 자연스럽게 끼워 넣을 수 있습니다. 사용 가능 범위: 무료 노드입니다. 이 노드는 독립형이며 graph socket을 노출하지 않습니다. Version: 생성된 레이어 스켈레톤에 사용하는 Spine JSON 버전 형식입니다. Blending: 생성된 attachment에 사용하는 블렌딩 모드입니다. Load PSD: PSD/PSB 선택기를 열고 선택한 파일에서 연결된 레이어 스켈레톤을 생성합니다. File Info: 현재 로드된 PSD/PSB 파일의 읽기 전용 요약입니다. Layer Count: 연결된 스켈레톤으로 변환될 보이는 레이어 수의 읽기 전용 카운트입니다. Preflight: 생성 전에 감지된 레이어 이름 문제에 대한 읽기 전용 보고서입니다.
Spine 프로젝트 폴더 또는 아카이브를 그래프에 로드하고, 하위 프로젝트 인식 노드가 사용할 수 있도록 project_out 소켓을 통해 ProjectPayload를 노출합니다.
목적: 프로젝트 기반 워크플로의 진입점입니다. Spine 프로젝트 폴더 또는 아카이브를 스캔하고 ProjectPayload를 생성하며, Project Viewer, 필터, Static Bake, Deduplicator 같은 하위 노드에서 쓸 캐시된 메타데이터를 유지합니다. 컨트롤: - **Load Folder**: File System Access API를 통해 시스템 폴더 선택기를 열고, 선택한 디렉터리를 스캔하고, 요약을 업데이트하고, 메타데이터를 캐시하고, 이후 변경을 다시 스캔할 수 있도록 file watcher를 시작합니다. - **Browse (Fallback)**: **showDirectoryPicker()** 가 없는 브라우저를 위해 숨겨진 **webkitdirectory** input을 사용합니다. 프로젝트는 로드되지만 지속적인 디렉터리 handle이 없어서 live watching과 신뢰할 수 있는 rescan은 사용할 수 없습니다. - **Load Archive**: **.zip** 또는 **.spine** 아카이브를 가상 프로젝트 트리로 로드합니다. 아카이브 기반 프로젝트는 디렉터리 handle을 유지하지 않으므로 **Rescan** 은 설계상 사용할 수 없습니다. - **Rescan**: 디렉터리 handle을 사용할 수 있을 때 이전에 로드한 폴더를 다시 스캔합니다. 스캔 전에 읽기 권한을 다시 확인합니다. fallback browse 또는 archive 모드로 로드한 프로젝트는 보통 로드된 디렉터리가 없다고 표시합니다. - **Clear Project**: 파일 감시를 중지하고 현재 payload, 요약, execution cache, 캐시된 payload 메타데이터를 비웁니다. - **Reset to Defaults**: 일반 노드 컨트롤만 재설정합니다. 현재 프로젝트를 **언로드하지 않으며**, **Clear Project** 를 대신하지도 않습니다. - **Drop folder or .zip here**: 폴더와 아카이브를 받아 같은 로딩 pipeline으로 보내는 drag-and-drop 진입점입니다. 출력: - **project_out**: 스캔된 트리, 평면 파일 목록, 크기 합계, 유형 분석이 포함된 ProjectPayload로, 하위 프로젝트 인식 노드에서 사용합니다. - **stats**: DEV 전용 진단 출력입니다。
최종 결과를 수집하고 최적화된 데이터를 개별 파일, 묶음 파일 세트 또는 아카이브로 다운로드할 수 있게 합니다.
용도: 최적화된 JSON, atlas 데이터, 텍스처, 스프라이트의 내보내기 허브 역할을 합니다. 단일 JSON/atlas/텍스처 세트, 여러 파일 세트, 또는 전체 Spine 프로젝트를 다시 빌드하지 않고 이미지 출력만 원할 때는 스프라이트만으로도 결과를 조합할 수 있습니다. 내보내기 옵션: - 파일을 개별적으로 또는 하나의 아카이브로 다운로드 - 패킹된 결과 또는 언패킹된 파일이 포함된 아카이브 다운로드 - JSON을 압축 형식 또는 읽기 쉬운 pretty-print 형식으로 내보내기 - 전체 Spine 프로젝트 데이터 또는 스프라이트/이미지 결과만 내보내기 체이닝 워크플로: OutputNode가 그래프의 절대적인 끝일 필요는 없습니다. 출력을 다른 파이프라인 단계로 넘기고 같은 파일에 추가 최적화 패스를 실행할 수 있습니다. 실제로 key와 curve 최적화는 최대 3회 연속 반복까지 테스트되었습니다. 주요 출력: - **reconstructed_json_out**: 재구성된 Spine JSON - **original_json_passthrough_out**: 원본 JSON의 패스스루 - **payload_out**: 추가 체이닝을 위한 payload - **changes**: 수집된 최적화 변경 사항 - **atlas_assets**: 내보내기 준비가 된 atlas 리소스
애니메이션 곡선을 단순화합니다(RDP).
목적: 직선 또는 거의 직선인 애니메이션 구간에서 두 점을 잇는 직선 위의 점을 제거해 키프레임 수를 줄입니다. 황금 규칙: 기본적으로 비활성화되어 있습니다. 형태가 큰 곡선(면적/곡률)이 직선화되는 것을 막아줍니다. 더 강한 압축이 꼭 필요할 때만 시각 검토 후 비활성화하세요. 소켓 키: payload_in, payload_out, changes Epsilon: 원래 커브에서의 최대 편차. 높은 값은 더 많은 키프레임을 제거하지만 커브 디테일이 손실될 수 있습니다. Steep: 곡률 감도 임계값. 복잡한 커브가 직선으로 평탄화되는 것을 방지합니다. Round Mode: 최적화된 값의 반올림 모드: 없음(원본 유지), 소수점 첫째 자리, 정수. Golden Rule: 활성화하면 중요한 형태/면적을 가진 커브가 RDP에 의해 단순화되는 것을 방지합니다. S Run Length: 템플릿 기반 평탄화가 활성화되기 전에 필요한 연속 표준 Spine S-곡선의 최소 개수입니다. 0으로 설정하면 이 기능이 비활성화됩니다. S Deviation: 표준 Spine S-곡선 템플릿에서 허용되는 정규화 편차입니다(퍼밀, 0-300). 값이 낮을수록 더 정확한 일치가 필요하고, 값이 높을수록 템플릿에 가까운 연속 구간을 더 많이 평탄화합니다.
스플라인 기반 곡선 최적화.
목적: 시각적 품질을 유지하면서 부드러운 곡선 피팅을 수행합니다. 소켓 키: payload_in, payload_out, changes Max Error: 스플라인 피팅의 최대 허용 근사 오차. 낮음 = 원본에 더 근접한 피팅. Min Group Size: 제거 가능한 그룹을 형성하는 데 필요한 최소 연속 선형 키프레임 수.
Bezier 리핏으로 키프레임 수를 줄입니다.
목적: 허용 오차 내에서 더 적은 곡선으로 맞춥니다。 소켓 키: payload_in, payload_out, changes Error Tolerance: 원래 커브와 피팅된 베지어 사이의 최대 허용 편차. 낮음 = 더 정확한 일치. Max Iterations: 커브 피팅의 최적화 반복 횟수. 더 많은 반복 = 더 나은 피팅이지만 느림.
키프레임 및 곡선의 숫자 값 정밀도를 줄입니다.
목적: 지정된 소수 자릿수로 숫자를 반올림하여 파일 크기를 줄이는 간단하지만 효과적인 방법입니다. 사용법: 거의 모든 애니메이션 데이터에 적용할 수 있습니다. 키프레임 수가 많을수록 더 효과적입니다. 주의: 너무 공격적인 양자화(낮은 정밀도)는 애니메이션에서 떨림이나 시각적 아티팩트를 유발할 수 있습니다. Precision: 키프레임 값의 소수점 자릿수. 적음 = 파일이 작지만 정확도가 낮음.
중복되거나 불필요한 애니메이션 데이터를 제거하기 위해 다양한 정리 작업을 수행합니다.
목적: 다른 최적화기가 놓칠 수 있는 특정 종류의 중복 데이터를 제거하기 위한 전문 도구입니다. 사용법: payload를 'payload_in'에 연결하고 결과를 'payload_out'에서 받으세요. 변경 사항별 보고서가 필요하다면 'changes'도 함께 사용하세요. 소켓 키: - 입력: payload_in - 출력: payload_out, changes 현재 지원하는 정리 작업: 1. **사용하지 않는 색상/알파 트랙 제거**: 애니메이션 동안 한 번도 보이지 않는 슬롯의 color/alpha 타임라인을 제거합니다. 2. **중복 IK 회전 제거**: IK 제약(믹스 100%)에 의해 완전히 제어되는 뼈에서 rotation 키프레임을 제거합니다. 3. **패스 제약 키 제거**: 패스 제약(믹스 값 100%)에 의해 완전히 제어되는 뼈에서 rotate/translate 키프레임을 제거합니다. 4. **비영어 문자 정리**: 다운스트림 도구에서의 문제를 피하기 위해 이름/식별자에 포함된 비영어 문자를 치환합니다. Remove Unused Color Tracks: 기본값에서 변경되지 않는 색상/알파 구성 요소 제거. Remove Redundant IKRotation: IK 제약 조건에 의해 완전히 제어되는 본 회전 키프레임 제거. Remove Redundant Path Constraint Keys: 설정 값을 복제하는 패스 제약 조건 키프레임 제거. Sanitize Non English Characters: 본/슬롯 이름의 비ASCII 문자를 안전한 대체 문자로 교체.
지정된 계수로 애니메이션 키프레임의 모든 숫자 값을 스케일링합니다.
목적: 애니메이션 데이터를 균일하게 스케일링하여 스켈레톤 비례 크기 조정 또는 애니메이션 강도 조정에 유용합니다. 사용법: 페이로드에 연결하고 스케일 계수를 설정합니다. 1.0 이상의 값은 확대, 1.0 미만은 축소합니다. 매개변수: - **Scale Factor**: 모든 위치 및 크기 값에 적용되는 승수. - **Include Rotations**: 회전 값도 스케일링할지 여부(일반적으로 비활성화됨). 사용 사례: - 가져온 애니메이션을 새 스켈레톤 크기에 맞게 조정 - 애니메이션의 과장되거나 미묘한 변형 생성 - 다른 캐릭터 크기를 위한 여러 애니메이션 일괄 스케일링 Scale Bones: 본 위치 및 크기 스케일링. Scale Attachments: 어태치먼트 위치 및 크기 스케일링. Scale Animations: 애니메이션 키프레임 스케일링. Scale Constraints: 제약 조건 매개변수 스케일링. Scale Path: 패스 데이터 스케일링.
슈나이더 곡선 피팅 알고리즘을 사용하여 애니메이션 키프레임에 부드러운 베지어 곡선을 맞춥니다.
목적: 밀집된 키프레임 시퀀스에서 자연스러운 모양의 베지어 곡선을 생성하는 고급 곡선 피팅. 사용 가능: **Plus 전용 노드**. 작동 방식: 슈나이더 알고리즘은 키프레임 위치와 접선을 분석하여 원래 모션과 밀접하게 일치하는 최적의 베지어 제어점을 생성합니다. 매개변수: - **Error Tolerance**: 원래 키프레임에서 최대 허용 편차. 낮음 = 더 정확, 높음 = 더 부드러운 곡선. - **Corner Angle**: 곡선을 세그먼트로 분할하는 임계 각도(도). 최적 대상: - 많은 키프레임이 있는 손으로 그린 또는 가져온 애니메이션 - 선형 보간을 부드러운 베지어 곡선으로 변환 - 곡선 품질을 유지하면서 키프레임 수 줄이기 참고: RDP와 같은 간단한 알고리즘보다 계산 집약적이지만 우수한 곡선 품질을 생성합니다. Min Segment Size: 처리를 위한 세그먼트 내 최소 키프레임 수.
Bake Physics Constraints to Keys: PhysicsConstraint 모션을 회전/이동 키프레임으로 변환하고 물리 타임라인을 제거합니다.
목적: 런타임 물리 시뮬레이션을 명시적 키프레임으로 변환하여 애니메이션을 결정적이고 PhysicsConstraints 없이 편집 가능하게 만듭니다. Bake 후 payload에서 PhysicsConstraints와 물리 타임라인이 제거됩니다. 사용 가능: **Plus 전용 노드**. 입력/출력: - **payload_in** → **payload_out** (baked) - **changes** (옵션 변경 목록) 컨트롤: - **Sample FPS**: 시뮬레이션 샘플링 속도. - **Bake Rotation**: 회전 키프레임 작성. - **Bake Translation**: 이동 키프레임 작성. - **Bake Translation (Children)**: 물리 모션에 의존하는 자식 본에 이동 bake 적용. 노트: - 시뮬레이션 재구성을 위해 원본 Spine JSON이 필요합니다. - PhysicsConstraints를 제거하면서 모션을 유지하려면 사용하세요.
알파가 0일 때 슬롯의 어태치먼트를 null로 설정하여 렌더링을 최적화합니다.
목적: 게임 엔진이 보이지 않는 어태치먼트를 처리하거나 렌더링하는 것을 방지합니다. 사용법: 알파/색상 트랙을 분석하고 해당 'attachment' 트랙에서 키프레임을 자동으로 추가하거나 수정합니다. 매개변수: - **Alpha Threshold**: 어태치먼트가 보이지 않는 것으로 간주되는 알파 값. - **Auto Restore**: 활성화된 경우 알파 값이 임계값을 초과하면 노드가 자동으로 마지막으로 표시된 어태치먼트를 복원합니다.
여러 처리된 애니메이션 페이로드를 단일 통합 페이로드로 다시 병합합니다.
목적: 다른 애니메이션 또는 뼈 그룹이 별도로 최적화되고 재결합이 필요한 병렬 처리 파이프라인에 필수적입니다.
병합 전략:
1. **기본 입력**: 스켈레톤 구조 제공(뼈, 슬롯, 스킨 등)
2. **오버라이드 입력**: 기본 트랙을 대체하는 처리된 트랙 제공
3. **마지막 쓰기 우선**: 여러 오버라이드가 동일한 트랙을 제공할 때 마지막이 우선
충돌 감지:
- 오버라이드 입력 간의 충돌이 감지되어 보고됩니다
- 기본 → 오버라이드 대체는 정상 동작(충돌 아님)
- 트랙 충돌 시 경고 토스트 표시
파이프라인 예:
```
Input → AnimFilter('run') → Cleanup ───────┐
→ AnimFilter('idle') → Quantizer ────┤
→ (base) ────────────────────────────→ Merger → Output
```
사용 사례:
- 다른 애니메이션용 다른 최적화 프로그램
- 재결합이 있는 별도의 뼈/슬롯 처리
- 다른 최적화 전략의 A/B 테스트
Warn conflicts: 페이로드 병합 충돌 시 경고 표시.최적화 전후의 애니메이션 곡선을 검사하고 비교하기 위한 시각적 도구입니다.
목적: 선택한 트랙에 대한 키프레임 및 곡선의 그래픽 표현을 제공합니다. 사용법: 'payload_before' 및 'payload_after' 입력을 모두 연결하면 원본 및 최적화된 곡선이 겹쳐져 최적화의 영향을 시각화하기 쉽습니다. Show changed: 변경된 애니메이션만 표시. Animation: 보기용 애니메이션 선택. Target: 보기용 대상 본/슬롯. Property: 표시할 속성(회전, 이동 등).
Displays a Spine project from the project_in socket for inspection and preview without mutating the incoming data.
Deduplicates atlas projects by consuming project_inputs and returning payloads, atlas_projects, original_jsons, and shared_atlas_out for canonicalized downstream workflows.
The Deduplicator node scans all atlas regions for visually identical or near-identical sprites. It merges duplicates by choosing a canonical representative and remapping references. Several thresholds control detection sensitivity for different sprite types (glow, solid, alpha). Optionally constrains the output canonical atlas dimensions. A verification pass ensures the deduplicated result is visually equivalent to the original within the specified RMSE tolerance. Repack mode: 중복 제거 후 리패킹 모드. Glow threshold: 글로우 효과 스프라이트 감지 임계값. Solid threshold: 솔리드 스프라이트 감지 임계값. Min sprite area: 분석을 위한 최소 스프라이트 면적(픽셀²). Alpha hash threshold: 비교를 위한 알파 해시 임계값. Verification threshold: 중복 검증 임계값. Color rmse threshold: 중복 감지를 위한 색상 RMSE 임계값. Constrain canonical atlas size: 정규 아틀라스 크기 제한. Max canonical atlas width: 정규 아틀라스 최대 너비. Max canonical atlas height: 정규 아틀라스 최대 높이.
애니메이션 이름(예: 'run', 'idle')에 따라 애니메이션 트랙을 필터링합니다.
목적: 다른 애니메이션에 다른 최적화 전략을 적용하는 데 유용합니다. 사용법: 예를 들어, 배경 캐릭터 애니메이션에는 공격적인 손실 최적화(예: DCT)를 적용하고 주 캐릭터 액션에는 무손실 최적화(예: Spline)를 사용할 수 있습니다.
아틀라스 에셋을 이름으로 필터링하며, 두 가지 모드로 작동: 언팩 전(아틀라스 텍스트 필터링) 또는 언팩 후(스프라이트 필터링).
목적: 워크플로에 포함되는 에셋 제어 - 아틀라스에서 언팩할 에셋 또는 재팩에 포함할 언팩된 스프라이트 제어.
모드:
1. 프리-언팩 모드 (AtlasUnpacker 이전):
- 입력: atlas_in (atlas_project)
- 출력: atlas_out (필터링된 atlas_project)
- 워크플로: InputNode → AssetFilter → AtlasUnpacker
- 사용 사례: 아틀라스에서 언팩할 에셋 필터링 (처리 시간 절약)
2. 포스트-언팩 모드 (AtlasUnpacker 이후):
- 입력: sprites_in (sprites)
- 출력: sprites_out (필터링된 sprites)
- 워크플로: AtlasUnpacker → AssetFilter → AtlasRepacker
- 사용 사례: 최종 아틀라스에 포함할 언팩된 스프라이트 필터링
UI 동작:
- 프리-언팩 모드에서: 아틀라스 텍스트를 파싱하여 에셋 이름 발견
- 포스트-언팩 모드에서: 스프라이트 배열에서 에셋 이름 발견
- '모두 허용' 토글: 체크하면 모든 에셋 통과 (목록은 표시되지만 비활성화)
- 체크박스: 포함할 특정 에셋 선택 ('모두 허용'이 체크 해제된 경우)
예시:
- 프리-언팩: 'char_*' 에셋만 선택하여 캐릭터 스프라이트만 언팩
- 포스트-언팩: 'background_*' 스프라이트를 최종 재팩 아틀라스에서 제외
- 'weapon_*' 패턴을 선택하여 무기 전용 아틀라스 생성뼈 이름에 따라 뼈 애니메이션 트랙을 필터링합니다.
목적: 최적화 프로세스에서 특정 뼈를 대상으로 하거나 제외할 수 있습니다. 사용법: 얼굴 표정에 사용되는 뼈와 같은 민감한 뼈를 공격적인 최적화에서 제외하여 모든 세부 사항을 보존하고 덜 중요한 뼈는 크게 최적화할 수 있습니다.
스킨 이름을 기반으로 애니메이션 및 에셋 데이터를 필터링합니다.
목적: 멀티 스킨 Spine 프로젝트에서 특정 스킨만 처리합니다. 사용법: Spine 프로젝트에 여러 스킨(예: 'default', 'armor', 'casual')이 있는 경우 이 노드를 사용하여 처리에 포함할 스킨을 필터링할 수 있습니다. 매개변수: - **Skins List**: 사용 가능한 각 스킨의 체크박스 - **Allow All**: 모든 스킨 포함 토글(기본값) 사용 사례: - 스킨별 별도 아틀라스 생성 - 다른 스킨에 다른 최적화 적용 - 최적화된 빌드에서 거의 사용되지 않는 스킨 제외 참고: 스킨은 스켈레톤 구조를 공유하지만 다른 어태치먼트를 가질 수 있습니다.
슬롯 이름에 따라 슬롯 애니메이션 트랙을 필터링합니다.
목적: 특별한 타이밍 또는 가시성 요구 사항이 있을 수 있는 특정 슬롯을 대상으로 하거나 제외하는 데 유용합니다. 사용법: 코드로 전환되는 무기 또는 효과 슬롯이 어태치먼트 가시성 최적화의 영향을 받지 않도록 제외하는 데 사용할 수 있습니다.
속성 유형(예: rotation, scale, color)에 따라 애니메이션 트랙을 필터링합니다.
목적: 특정 유형의 애니메이션 데이터에만 후속 최적화를 적용할 수 있습니다. 사용법: 범위를 제한하기 위해 이 노드를 최적화 프로그램 앞에 배치합니다. 예를 들어, 'translation' 및 'scale' 트랙에만 RDP 최적화를 적용할 수 있습니다.
Spine 텍스처 아틀라스에서 개별 스프라이트를 추출합니다.
목적: 아틀라스 파일을 구성 요소 스프라이트로 분해하여 개별 분석 또는 재포장을 가능하게 합니다. 사용법: InputNode의 'atlas_project' 출력을 이 노드의 'atlas_project_in' 입력에 연결합니다. 출력은 AssetViewer로 보내 검사하거나 AtlasRepacker로 보내 최적화할 수 있습니다. ⭐ 메시 자르기: InputNode의 'Original JSON' 출력을 'Skeleton JSON' 입력에 연결하면 스프라이트를 메시 경계로 자동 자르기(직사각형 경계 대신)할 수 있습니다. 이를 통해 메시 헐 외부의 투명 픽셀을 제거하여 메시 첨부 파일이 있는 스프라이트의 텍스처 메모리 사용량을 크게 줄일 수 있습니다. 출력: - **sprites_out**: 표준화된 스프라이트 배열(viewer/repacker용) - **sprites_data_out**: 추출된 스프라이트 이미지/메타데이터(구조화된 번들) - **atlas_out**: Atlas project 패스스루 소켓 키: atlas_project, atlas_project_in, skeleton_json_in, sprites_out, sprites_data_out, atlas_out
개별 스프라이트를 하나 이상의 새로운 최적화된 텍스처 아틀라스로 재포장합니다.
목적: 효율적인 스프라이트 시트를 생성하여 텍스처 메모리를 최적화하고 잠재적으로 드로우 콜을 줄입니다. 사용법: 'sprites_data'(일반적으로 AtlasUnpacker에서)를 받아들이고 새로운 아틀라스 레이아웃을 생성합니다. 매개변수: - **Max Texture Size**: 출력 아틀라스 페이지의 최대 너비/높이. - **Padding**: 각 스프라이트 사이의 픽셀 거리. - **Scale**: 포장 전에 모든 스프라이트의 크기를 조정합니다. - **Power of Two**: 출력 아틀라스 치수가 2의 거듭제곱(예: 1024, 2048)이 되도록 강제합니다. 일부 플랫폼에서 필요합니다. - **Allow Rotation**: 더 나은 포장 효율성을 위해 스프라이트를 90도 회전할 수 있습니다.
언팩 전에 아틀라스 구조를 점검하기 위한 경량 시각화 및 분석 도구.
목적: 무거운 언팩 작업 없이 아틀라스 페이지와 영역을 빠르게 미리 볼 수 있게 합니다. 아틀라스 구조를 검증하고 미사용 영역을 식별하는 데 도움됩니다. 사용법: InputNode의 'atlas_project' 출력을 'atlas' 입력에 연결하세요. 옵션으로 'original_json_out'을 'json' 입력에 연결해 영역 사용량을 분석할 수 있습니다. 기능: - 영역 경계를 포함한 아틀라스 페이지 시각적 미리보기 - 영역 강조 표시: 녹색 = 사용됨, 빨간색 = 스켈레톤에서 미사용 - 페이지 탐색 컨트롤 - 전체/미사용 영역 수를 보여주는 통계 사용 사례: - 최적화 전 빠른 아틀라스 검증 - 불필요한 리소스(미사용 영역) 식별 - 아틀라스 패킹 문제 디버깅 - 자산 구조 이해 소켓 키: atlas_project, atlas_in, atlas, json Page Info: 아틀라스 페이지 치수 및 정보. Stats: 공간 사용 통계 및 스프라이트 수.
여러 아틀라스 소스를 단일 통합 아틀라스로 결합합니다.
목적: 여러 아틀라스 프로젝트를 하나로 병합합니다.
입력:
- **atlas_inputs**: 아틀라스 프로젝트의 다중 입력 배열
출력:
- **atlas_out**: 병합된 아틀라스 프로젝트
- **merged_out**: 레거시 병합 출력
- **merged_atlas_out**: 레거시 병합 출력
사용 사례:
- 캐릭터 아틀라스와 무기 아틀라스 결합
- 기본 스프라이트와 DLC 콘텐츠 병합
- 병렬 아틀라스 처리 후 재결합
일반적인 파이프라인:
```
InputA → Unpacker → Repacker ─┐
├→ Atlas Merger → Unpacker → Repacker → Output
InputB → Unpacker → Repacker ─┘
```
Repacker 전의 데이터는 개별 스프라이트입니다. Repacker 후에는 아틀라스 프로젝트가 됩니다. Atlas Merger가 아틀라스 프로젝트를 결합하고, 최종 Unpacker → Repacker 과정에서 모든 것을 하나의 통합 아틀라스로 밀도 있게 패킹합니다.압축 해제된 아틀라스의 개별 스프라이트를 표시합니다.
목적: 아틀라스 조작을 위한 시각적 디버깅 도구입니다. 사용법: Atlas Unpacker 노드의 'sprites_data'를 받아들이고 각 추출된 이미지를 시각화하고 속성(치수, 회전 등)을 검사하며 압축 해제 후 시각적 정확성을 확인할 수 있습니다. Asset select: 보기용 에셋 선택. Pixel stats: 에셋의 픽셀 통계 표시.