Skip to main content
Go to Editor

วิกิ

Learn how to optimize your Spine 2D animations, reduce file size, and improve performance

การกำหนดราคาการควบคุมการบันทึกการเชื่อมต่อการเพิ่มประสิทธิภาพการเล่นขั้นตอนการทำงานข้อมูลซ็อกเก็ตตัวอย่างท่อบวกประเภทผลงานผลลัพธ์ผู้ดูผู้เริ่มต้นยูทูปวิดีโอสถิติสมัครสมาชิกสูญเสียส่งออกหน่วยความจำอุ้ยเครื่องบันทึกเบี้ยประกันภัยเฟรมต่อวินาทีเมตริกแนวคิดแนะนำแผนภูมิแอนิเมชั่นโต๊ะไทม์ไลน์ไม่มีการสูญเสีย

เริ่มต้นใช้งาน: ขั้นตอนการทำงานพื้นฐาน

ผู้เริ่มต้นขั้นตอนการทำงานแนะนำ

คู่มือนี้จะช่วยให้คุณเริ่มต้นใช้งาน JSON Optimizer ได้อย่างรวดเร็ว

  1. โหลดโครงการ:ใช้InputNodeเพื่อโหลดของคุณ.json, .atlas, และ.pngไฟล์.
  2. เลือกค่าที่ตั้งไว้ล่วงหน้า (โหมด Plus):ในโหมด Plus ให้ใช้แผงด้านขวาเพื่อเลือกค่าที่ตั้งไว้ล่วงหน้าในตัว (เช่น "Basic Fallback") สิ่งนี้จะสร้างกราฟการเพิ่มประสิทธิภาพให้กับคุณโดยอัตโนมัติ ในโหมดฟรี สร้างกราฟแบบแมนนวลขั้นต่ำ:InputNodeQuantizerNodeOutputNode.
  3. เรียกใช้กราฟ:คลิกปุ่ม "เรียกใช้ Graph"
  4. เปรียบเทียบผลลัพธ์:สลับไปที่แท็บ "โปรแกรมดู" เพื่อเปรียบเทียบภาพเคลื่อนไหวต้นฉบับและภาพเคลื่อนไหวที่ปรับให้เหมาะสม
  5. ตรวจสอบการเปลี่ยนแปลง:ในแท็บ "ผลลัพธ์" และ "สถิติ" คุณจะพบข้อมูลโดยละเอียดเกี่ยวกับคีย์ที่ถูกแก้ไขหรือลบ

ประเภทซ็อกเก็ตและการไหลของข้อมูล

ซ็อกเก็ตประเภทข้อมูลการเชื่อมต่อ

บทความนี้จะอธิบายประเภทข้อมูลที่ใช้โดยซ็อกเก็ตในกราฟโหนดและสิ่งที่สามารถเชื่อมต่อได้ที่ไหน

กฎด่วน

ที่สุดกำลังประมวลผลโหนดทำงานบนSpine เพย์โหลด. Atlas-โหนดที่เกี่ยวข้องทำงานบนAtlas โปรเจ็กต์หรือสไปรท์. ใช้ValidatorNodeเมื่อคุณไม่แน่ใจว่าซ็อกเก็ตคาดหวังอะไร

ประเภทซ็อกเก็ต

  • Spine เพย์โหลด— การแสดงที่เป็นมิตรต่อรันไทม์ของโปรเจ็กต์ Spine ที่ใช้โดยโหนดประมวลผลส่วนใหญ่
  • Atlas โปรเจ็กต์— atlas ข้อมูลเมตา + รูปภาพเพจที่ใช้โดยโหนด atlas
  • สไปรท์— ภาพต่อเรียง/ภูมิภาคที่คลายแพ็กแล้ว (Atlas Unpacker → Asset ตัวแสดงผล / Atlas Repacker)
  • JSON— Spine JSON ดั้งเดิมหรือสร้างขึ้นใหม่เพื่อการวินิจฉัย/การตรวจสอบ/ความแตกต่าง
  • การเปลี่ยนแปลง— รายการ/สตรีมของความแตกต่างที่สร้างโดยเครื่องมือเพิ่มประสิทธิภาพบางตัวและใช้โดยโหนดผู้ดู/การรายงาน

คีย์ → ประเภท → เชื่อมต่อ

กุญแจซ็อกเก็ต (ตัวอย่าง)ชนิดข้อมูลผลิตโดยเชื่อมต่อไปยัง
payload, payload_in, payload_outSpine เพย์โหลดInputNodeโหนดการประมวลผลส่วนใหญ่กำลังประมวลผลโหนด (RDP/Spline/Refit/Quantizer/Cleanup/etc.) จากนั้นOutputNode.payload
original_jsonJSONInputNodeDiagnosticNode, JSONDiffNode.json_before, OutputNode.original_json, atlas โหนดบางโหนด (เช่น โหมดอัลฟ่าของ repacker)
reconstructed_json_outJSONOutputNodeJSONDiffNode.json_after, เครื่องมือตรวจสอบ/ดีบัก
changesรายการเปลี่ยนแปลงโหนดประมวลผลบางตัว +OutputNodeAnimationViewerNode(ไม่บังคับ) รายงาน/แก้ไขข้อบกพร่อง
atlas_projectAtlas โปรเจ็กต์InputNode/ atlas วิวเวอร์AtlasUnpackerNode.atlas_project, OutputNode.atlas_project, atlas ตัวกรอง
atlas_in, atlas_outAtlas โปรเจ็กต์ (หรือสตรีมที่เกี่ยวข้องกับ atlas)Atlas โหนด / ตัวกรองAtlas โหนดAtlasViewerNode, AtlasMergerNode(ผ่านอินพุตหลายตัว)
sprites_out, sprites_in, sprites_data_inสไปรท์AtlasUnpackerNode, ฟิลเตอร์AssetViewerNode.sprites_in, AtlasRepackerNode.sprites_data_in
atlas_inputsAtlas โปรเจ็กต์หลายรายการแหล่งที่มาหลายแห่งAtlasMergerNode.atlas_inputs(เชื่อมต่อหลายแผนที่)

ท่อปฏิบัติ

  • การเพิ่มประสิทธิภาพ JSON ขั้นพื้นฐาน: InputNode→ (ทางเลือก:DiagnosticNode/ ตัวกรอง) → เครื่องมือเพิ่มประสิทธิภาพ (RDPNode, SplineNode, QuantizerNode, …) → OutputNode.
  • Atlas กำลังบรรจุใหม่: InputNode.atlas_projectAtlasUnpackerNode→ (ทางเลือก:AssetViewerNode) → AtlasRepackerNodeOutputNode.atlas_project/atlas_assets.

แผนการสมัครสมาชิกและคุณสมบัติระดับพรีเมียม

สมัครสมาชิกเบี้ยประกันภัยบวกการกำหนดราคา

re-polish เสนอระดับการสมัครสมาชิกสองระดับเพื่อให้เหมาะกับความต้องการที่แตกต่างกัน

แผนฟรี

  • • พื้นฐานNodeGraph
  • • jsonViewer.json
  • • ไทม์ไลน์Mixer
  • • การเพิ่มประสิทธิภาพที่จำกัด
  • • กระดูกสันหลังรุ่น

พลัสแพลน ($5/เดือน)

  • • คุณสมบัติฟรีทั้งหมด
  • • บรรจุใหม่Node
  • • ฟิสิกส์อบ
  • • การล้างข้อมูล BakedKeys
  • • กราฟที่ตั้งไว้ล่วงหน้า
  • • ลำดับความสำคัญการสนับสนุน

รับพลัส

คลิกที่อัพเกรดในการนำทางด้านบน จากนั้น:

  • เลือกรับพลัส
  • คุณจะถูกนำไปที่ Patreon — สมัครสมาชิกให้เสร็จสิ้น
  • กลับไปที่ตัวแก้ไขโหนดในขณะที่ลงชื่อเข้าใช้บัญชี Patreon เดียวกัน เพื่อให้บริการสามารถตรวจสอบลิงก์และเปิดใช้งาน Plus
  • (ไม่บังคับ) ป้อนรหัสเปิดใช้งาน (สำหรับข้อเสนอพิเศษ)

แนวคิดหลัก: Lossy กับ Lossless

แนวคิดสูญเสียไม่มีการสูญเสียผู้เริ่มต้น

วิธีการปรับให้เหมาะสมทั้งหมดแบ่งออกเป็นสองประเภท:

  • แบบไม่สูญเสีย:วิธีการเหล่านี้จะลบเฉพาะข้อมูลที่ซ้ำซ้อนเท่านั้น...
    ตัวอย่าง:SplineOptimizationNode, CleanupNode.
  • สูญเสีย:วิธีการเหล่านี้ช่วยลดความซับซ้อนของเส้นโค้งแอนิเมชั่น...
    ตัวอย่าง:RDPOptimizationNode, QuantizerNode.

คำแนะนำ:เริ่มต้นด้วยการเพิ่มประสิทธิภาพแบบ Lossless เสมอ ใช้วิธี Lossy เฉพาะเมื่อจำเป็นต้องลดขนาดไฟล์เพิ่มเติม และตรวจสอบผลลัพธ์ด้วยสายตาเสมอ

วิธีวัดประสิทธิผล

แนะนำเมตริกสถิติ

เพื่อให้เข้าใจว่าการเพิ่มประสิทธิภาพของคุณมีประสิทธิภาพเพียงใด โปรดพิจารณาเมตริกต่อไปนี้:

  • ขนาดไฟล์:ขนาดสุดท้ายของ..jsonไฟล์เป็นเป้าหมายหลักของการปรับให้เหมาะสม
  • จำนวนคีย์เฟรม:ในแท็บ "สถิติ" คุณจะพบตารางและแผนภูมิที่แสดงจำนวนคีย์เฟรมที่ถูกลบออกในแต่ละภาพเคลื่อนไหว
  • การเปรียบเทียบภาพ:ใช้แท็บ "โปรแกรมดู" เพื่อเปรียบเทียบภาพเคลื่อนไหว "ก่อน" และ "หลัง" เสมอ ตรวจสอบให้แน่ใจว่าการเพิ่มประสิทธิภาพ Lossy ไม่ได้ทำให้เกิดภาพที่ไม่เป็นที่ยอมรับ
  • รายงานในตาราง "ผลลัพธ์":ที่นี่คุณสามารถตรวจสอบรายละเอียดการเปลี่ยนแปลงเฉพาะทั้งหมดที่เกิดขึ้นกับข้อมูลของคุณได้ที่นี่

โปรแกรมดู: แผงควบคุม

ผู้ดูการควบคุมอุ้ย

ที่ผู้ดูแท็บซ้อนทับการควบคุมแผงด้านบนของผ้าใบ แบ่งออกเป็นสามกลุ่ม:

การควบคุมภาพเคลื่อนไหว

  • แอนิเมชั่น— เลือก Spine ภาพเคลื่อนไหวที่กำลังเล่นอยู่
  • ผิว— เลือกสกินที่จะใช้
  • ความเร็ว— ตัวคูณความเร็วในการเล่น (0.1× → 3.0×)

ดูการควบคุม

  • รีเซ็ตมุมมอง— คืนค่าการวางตำแหน่งกล้อง/เค้าโครงเริ่มต้น
  • ดูตัวเลือก— การชดเชยตัวเลขที่ใช้ในการวางตำแหน่งมุมมองการเปรียบเทียบ:ระยะห่าง X / ระยะห่าง Y(ระยะห่างระหว่างต้นฉบับ/ปรับให้เหมาะสม) และออฟเซ็ต X / ออฟเซ็ต Y(การเปลี่ยนแปลงระดับโลก)

การควบคุมการแก้ไขข้อบกพร่อง

  • โหมดแก้ไขข้อบกพร่อง— เปิดใช้งานการซ้อนทับการแสดงผลการแก้ไขข้อบกพร่อง (ขึ้นอยู่กับการสนับสนุนรันไทม์)
  • เปิดใช้งานฟิสิกส์— สลับการจำลองทางฟิสิกส์ (หากโครงกระดูกใช้ฟิสิกส์)
  • ป้ายกำกับ— สลับการซ้อนทับป้ายกำกับ

ผู้ดู: แผงประสิทธิภาพ

ผลงานเฟรมต่อวินาทีหน่วยความจำอุ้ย

ที่ผลงานแผงแสดงการวัดรันไทม์แบบเรียลไทม์สำหรับโครงกระดูกที่เล่นอยู่ในปัจจุบัน

เรียลไทม์

  • FPS— เฟรมต่อวินาทีที่วัดโดยจอภาพ
  • เวลาเฟรม— เวลาต่อเฟรมเป็นมิลลิวินาที (ต่ำกว่าดีกว่า)
  • FPS แผนภูมิ— 120 ตัวอย่างสุดท้ายแสดงเป็นแท่ง

ตัวชี้วัดโครงกระดูก

  • ช่องที่มองเห็นได้— จำนวนช่องที่มองเห็นได้ในตัวอย่างล่าสุด
  • เฉลี่ย มองเห็นได้— ค่าเฉลี่ยการหมุนของช่องที่มองเห็นได้ (เสถียรกว่าเฟรมเดียว)
  • จุดยอด— จำนวนจุดยอดปัจจุบันที่ใช้สำหรับการเรนเดอร์
  • ขอบเขต (px)— โครงกระดูกปัจจุบันมีขอบเขตกว้าง×สูงเป็นพิกเซล
  • เฉลี่ย ขอบเขต— ขอบเขตเฉลี่ยแบบกลิ้ง
  • พื้นผิวที่ใหญ่ที่สุด— หน้า atlas ที่ใหญ่ที่สุด (ตามขนาด) ที่ตรวจพบสำหรับโครงกระดูก
  • หน่วยความจำพื้นผิว— หน่วยความจำพื้นผิวทั้งหมดโดยประมาณสำหรับเพจ atlas ที่โหลด เมื่อพร้อมใช้งาน แผงยังแสดงรายละเอียดต่อหน้า (ชื่อไฟล์ ขนาด และขนาดโดยประมาณ)

การปรับปรุง (เมื่อ Optimized พร้อมใช้งาน)

  • การปรับปรุงสล็อต— เปรียบเทียบเฉลี่ย มองเห็นได้ระหว่างดั้งเดิมกับปรับให้เหมาะสม
  • การเปลี่ยนแปลงหน่วยความจำ— เปรียบเทียบหน่วยความจำพื้นผิวระหว่างดั้งเดิมกับปรับให้เหมาะสม

ผู้ดู: ไทม์ไลน์

ผู้ดูไทม์ไลน์แอนิเมชั่นการเล่นแนะนำ

ที่ไทม์ไลน์แผงคือซีเควนเซอร์ภาพเคลื่อนไหวที่เชื่อมต่อได้ที่ด้านล่างของโปรแกรมดู ช่วยให้คุณสามารถจัดเรียงคลิปแอนิเมชั่นบนหลายแทร็ก ควบคุมการเล่น และดูตัวอย่างการเปลี่ยนผ่าน

แทร็กและคลิป

  • มากถึง 4 แทร็กแอนิเมชั่น— แต่ละแทร็กแมปกับ SpinetrackIndexชั้น. แทร็กที่สูงขึ้นผสมผสานกับแทร็กที่ต่ำกว่า
  • เพิ่มภาพเคลื่อนไหว— คลิกที่+บนแทร็กใดๆ เพื่อเปิดตัวเลือกภาพเคลื่อนไหว (พร้อมตัวกรองการค้นหา)
  • ลากและปรับขนาดคลิป— ลากตัวคลิปเพื่อเลื่อนไปตามแทร็ก ลากขอบซ้าย/ขวาเพื่อเปลี่ยนเวลาเริ่มต้นหรือระยะเวลา
  • ลบคลิป— เลือกคลิปแล้วกดDeleteหรือBackspace.
  • การตรวจจับการทับซ้อนกัน— คลิปที่ทับซ้อนกันบนแทร็กเดียวกันจะถูกเน้นด้วยสีแดง

การควบคุมการขนส่ง

  • เล่น / หยุดชั่วคราว / หยุด- การควบคุมการเล่นมาตรฐาน
  • ก่อนหน้า / ถัดไป— ข้ามไปยังจุดเริ่มต้นของคลิปก่อนหน้าหรือคลิปถัดไป
  • ความเร็วของแอนิเมชั่น— แถบเลื่อนจาก 0.1× เป็น 3.0×
  • หยุดอัตโนมัติ— การเล่นจะหยุดโดยอัตโนมัติเมื่อสิ้นสุดไทม์ไลน์

การผสมการเปลี่ยนผ่าน

  • ระยะเวลาการผสมทั่วโลก— ตั้งเวลาครอสเฟดเริ่มต้นระหว่างคลิปที่ต่อเนื่องกัน
  • การแทนที่ต่อการเปลี่ยนแปลง— คลิกกรอบการเปลี่ยนภาพระหว่างสองคลิปเพื่อกำหนดระยะเวลามิกซ์แบบกำหนดเอง คุณสามารถรีเซ็ตการแทนที่แต่ละรายการกลับไปเป็นค่าส่วนกลางได้

การค้นหาและการขัดถู

  • เพลย์เฮด— ลากที่จับบนไม้บรรทัดบอกเวลาหรือคลิกไม้บรรทัดเพื่อค้นหา
  • การแสดงตัวอย่างเวลาเคอร์เซอร์— การวางเมาส์เหนือพื้นที่ติดตามจะแสดงเวลาใต้เคอร์เซอร์
  • คนทำงานเว็บ— การคำนวณการค้นหาและเหตุการณ์จะถูกถ่ายโอนไปยังผู้ปฏิบัติงานเบื้องหลังเพื่อประสิทธิภาพที่ราบรื่น

การเล่นตามหลักฟิสิกส์

  • สลับฟิสิกส์ระหว่างอัปเดต(ข้อจำกัดที่ใช้งานอยู่) และไม่มี(พิการ).
  • ในระหว่างการค้นหา เวลาของโครงกระดูกจะเร็วขึ้นเพื่อแก้ไขข้อจำกัดทางฟิสิกส์อย่างเหมาะสม

การสนับสนุนหลายโครงกระดูก

  • ตัวเลือกคู่เป้าหมาย— แต่ละแทร็กสามารถกำหนดเป้าหมายทุกคู่ (🌐 ทุกคู่) หรือโครงกระดูกเฉพาะ
  • ตำแหน่งและขนาดต่อโครงกระดูก— อินพุตออฟเซ็ต X/Y และสเกลสำหรับโครงกระดูกแต่ละรายการ
  • สั่งวาด— อินพุตตัวเลขเพื่อควบคุมลำดับความสำคัญของเลเยอร์การเรนเดอร์

ดีบักการวาด

สลับการมองเห็นสำหรับ: กระดูก ชื่อกระดูก ภูมิภาค ตาข่าย ลำตัว ขอบเขต เส้นทาง การตัดคะแนน

การเลือกผิว

ช่องทำเครื่องหมายแบบเลือกหลายรายการสำหรับสกินทั้งหมดที่กำหนดไว้ในโครงกระดูกที่โหลด

ดูการตั้งค่า

  • ระยะห่าง X / Y- ช่องว่างระหว่างคู่โครงกระดูก
  • ออฟเซ็ต X / Y- การเปลี่ยนแปลงวิวพอร์ตทั่วโลก
  • สลับ PMA— โหมดอัลฟ่าคูณล่วงหน้า (Spine 3.x) หรือ atlas โหมดอัลฟ่า (Spine 4.x: auto / pma / bleed / none)
  • ป้ายโครงกระดูก- สลับการซ้อนทับป้ายกำกับ

ผู้ดู: เครื่องบันทึก

ผู้ดูเครื่องบันทึกการบันทึกส่งออกวิดีโอแนะนำ

ที่เครื่องบันทึกจับภาพเคลื่อนไหว Spine จากผู้ชมในรูปแบบวิดีโอ ภาพเคลื่อนไหว หรือลำดับภาพ

โหมดการบันทึก

  • ⚡ บันทึกด่วน— การใช้การจับภาพแบบเรียลไทม์MediaRecorder + captureStream(). สร้างเอาต์พุต WebM เท่านั้น รวดเร็วแต่จำกัดอัตราเฟรมแบบเรียลไทม์
  • 📷 ส่งออกกองบัญชาการ- การเรนเดอร์แบบเฟรมต่อเฟรมออฟไลน์โดยใช้ WebCodecsVideoEncoder + readPixels(). รองรับทุกรูปแบบและสร้างเอาต์พุตพิกเซลที่สมบูรณ์แบบ

รูปแบบเอาต์พุต

  • วีดีโอ: WebM, MP4, AVI, MOV
  • ภาพเคลื่อนไหว: GIF, ภาพเคลื่อนไหว PNG (APNG)
  • ลำดับภาพ: PNG ลำดับ ลำดับ WebP

ตัวแปลงสัญญาณ (ส่งออก HQ)

VP8, VP9, ​​H.264 (AVC), AV1, ProRes — ตัวแปลงสัญญาณที่ใช้งานได้จะถูกตรวจจับอัตโนมัติตามการรองรับเบราว์เซอร์

คุณภาพ

  • ค่าที่ตั้งล่วงหน้า: ต่ำ (~1 Mbps), ปานกลาง (~3 Mbps), สูง (~5 Mbps), Lossless (~20 Mbps)
  • บิตเรตที่กำหนดเอง— ระบุเป็น kbps เพื่อการควบคุมอย่างละเอียด

เวลา

  • FPS: 24, 30, 60 หรือกำหนดเอง (1–120 fps)
  • วอร์มอัพ— วินาทีสำหรับการตั้งค่าฟิสิกส์/ข้อจำกัดก่อนเริ่มการบันทึก
  • หยุดชั่วคราวหลังจาก— ค้างเฟรมสุดท้ายตามระยะเวลาที่กำหนด
  • รวมเฟรมสุดท้าย— สลับ

วิวพอร์ตและครอบตัด

  • เปิด/ปิดการครอบตัด— สลับขอบเขตการครอบตัด
  • ครอบตัดสี่เหลี่ยม— X, Y, ความกว้าง, ความสูงใน Spine พิกัดโลก
  • สแน็ปเพื่อจับคู่- ครอบตัดให้พอดีอัตโนมัติกับคู่โครงกระดูกพร้อมการเสริมที่กำหนดค่าได้
  • การซ้อนทับครอบตัดแบบโต้ตอบ— ลากมุม/ขอบโดยตรงในวิวพอร์ต

ปณิธาน

  • โหมดสเกล— ตัวเลื่อนเปอร์เซ็นต์ (10%–400%)
  • โหมดคงที่— ขนาดพิกเซลที่ชัดเจน (สูงสุด 4096px)
  • ความละเอียดเอาต์พุตที่คำนวณแสดงสด

ตัวเลือกการเรนเดอร์

  • เรนเดอร์กระดูก— รวมการซ้อนทับกระดูกแก้ปัญหา
  • แสดงภาพ- รวมรูปภาพที่แนบมาด้วย
  • เรนเดอร์ผู้อื่น— กล่องล้อมรอบ, เส้นทาง
  • มสอ— ไม่มี / 2× / 4× การลดรอยหยัก
  • ปรับให้เรียบ— ระดับ 0–8 พร้อมตัวเลือกอัลกอริธึม (Bicubic / Bilinear)

พื้นหลัง

  • โปร่งใส— ปิดการใช้งานอัตโนมัติสำหรับรูปแบบที่ไม่มีอัลฟ่า (เช่น GIF, JPEG)
  • สีทึบ— ตัวเลือกสีที่กำหนดเอง
  • กระดานหมากรุก— ตัวบ่งชี้ความโปร่งใสของภาพ
  • รองรับช่องอัลฟ่า: VP9+WebM, AV1+MP4, PNG Sequence, APNG, WebP Sequence

การซ้อนทับ HUD

  • สลับ: ข้อมูลแทร็ก เวลา หมายเลขเฟรม FPS ป้ายกำกับโครงกระดูก
  • ข้อความที่กำหนดเอง— สตริงลายน้ำ
  • ตำแหน่ง— 4 มุม (ซ้ายบน, ขวาบน, ซ้ายล่าง, ล่างขวา)
  • ขนาดตัวอักษร— 8–64px พร้อมตัวเลือกสีข้อความ

ทำซ้ำและหลายโครงกระดูก

  • นับซ้ำ— วนซ้ำ 1–100 รอบ
  • คู่เป้า— บันทึกโครงกระดูกเฉพาะหรือทั้งหมด
  • โหมดโครงกระดูก— รวม (ไฟล์เดียว) / แยกไฟล์ (หนึ่งไฟล์ต่อโครงกระดูก)

เทมเพลตชื่อไฟล์

สตริงเทมเพลตพร้อมตัวแปร:{project}, {animation}, {W}, {H}, {fps}. การแสดงตัวอย่างสดของชื่อไฟล์ที่ได้รับการแก้ไขจะปรากฏขึ้น

บูรณาการไทม์ไลน์

ช่วงการบันทึกจะปรากฏเป็นคลิปเส้นประสีแดง/ส้มบนไทม์ไลน์ ลากขอบเพื่อปรับขนาดช่วง ลากลำตัวเพื่อเปลี่ยนตำแหน่ง หรือใช้ปุ่มการตั้งค่า (⚙️) เพื่อเปิดการตั้งค่าการบันทึกแบบเต็ม

แท็บผลลัพธ์

ผลลัพธ์โต๊ะการเพิ่มประสิทธิภาพ

ที่ผลลัพธ์แท็บแสดงผลลัพธ์การปรับให้เหมาะสมโดยละเอียด

  • ตารางผลลัพธ์— มุมมองแบบแถวต่อการเปลี่ยนแปลงของผลลัพธ์การปรับให้เหมาะสม JSON (เช่น ภาพเคลื่อนไหว/กระดูก/คุณสมบัติ/คีย์เฟรมใดที่ถูกแก้ไขหรือลบออก)
  • การเปรียบเทียบสไปรท์/Atlas— เมื่อใช้การปรับพื้นผิวให้เหมาะสม ส่วนนี้จะเปรียบเทียบขนาดสไปรท์และผลลัพธ์การบรรจุ

เคล็ดลับ: ใช้มุมมองผลลัพธ์เพื่อตอบ:จริงๆ แล้วมีอะไรเปลี่ยนแปลงไปบ้าง?

แท็บสถิติ

สถิติแผนภูมิเมตริก

ที่สถิติแท็บสรุปผลการเพิ่มประสิทธิภาพเป็นแผนภูมิและเมตริกรวม

  • แผนภูมิการเพิ่มประสิทธิภาพ— แสดงภาพผลกระทบการปรับให้เหมาะสมเหนือชุดข้อมูล (เมื่อ JSON การเพิ่มประสิทธิภาพทำให้เกิดการเปลี่ยนแปลง)
  • ตารางเมตริก— ตัวเลขสำคัญ เช่น ขนาดเดิม/ใหม่ และเปอร์เซ็นต์การลดขนาด
  • สถิติการบรรจุพื้นผิว— หากใช้การบรรจุใหม่ atlas จะแสดงหน้า พื้นที่ทั้งหมด/ใช้งาน ประสิทธิภาพ และรายละเอียดต่อหน้า

ใช้แท็บนี้เพื่อตอบ:โดยรวมแล้วเราปรับปรุงไปมากขนาดไหน?

ตัวอย่างไปป์ไลน์ (วิดีโอ)

วิดีโอตัวอย่างท่อยูทูป

ด้านล่างนี้เป็นไปป์ไลน์ในโลกแห่งความเป็นจริงที่สมบูรณ์จากเพลย์ลิสต์ YouTube อย่างเป็นทางการ

เปิดเพลย์ลิสต์แบบเต็ม

ตัวอย่าง

Spine2D การทดลอง 1: การเพิ่มประสิทธิภาพเส้นโค้งด้วย RDP อัลกอริทึม— การสาธิตการเพิ่มประสิทธิภาพ 2D แบบพื้นฐาน Spine: อัลกอริธึม Ramer–Douglas–Peucker (RDP) จะลบข้อมูลเส้นโค้ง/คีย์ที่ซ้ำซ้อนเพื่อลดขนาด JSON RDP สามารถลบคีย์ที่สำคัญได้ ดังนั้นควรตรวจสอบภาพเคลื่อนไหวและยกเว้นกระดูก/ช่องที่ละเอียดอ่อนที่มีโหนดตัวกรองก่อนโหนด RDPดูบน YouTube

Spine2D การทดลอง 2: การเพิ่มประสิทธิภาพเส้นโค้งด้วยอัลกอริทึมการหาปริมาณ— การหาปริมาณเป็นตัวเพิ่มประสิทธิภาพเส้นโค้ง 2D Spine ที่ปลอดภัยที่สุด: ค่าการปัดเศษ (มักจะเป็นทศนิยม 1 ตำแหน่ง) จะให้ขนาดที่ชนะทันที ตัวอย่าง: [0.115,14.5,0.222,-27.78] → [0.1,14.5,0.2,-27.8] ใช้โหนดการหาปริมาณเป็นขั้นตอนสุดท้ายก่อนโหนดเอาต์พุตเพื่อล็อคการปรับให้เหมาะสม วิดีโอจะแสดงก่อน/หลังโดยมีการเปลี่ยนแปลงการมองเห็นจนแทบจะมองไม่เห็นดูบน YouTube

Spine2D การทดลองที่ 3: การสร้างเส้นโค้งขึ้นใหม่ด้วยอัลกอริทึม Spline และ Refit— Spline ไม่มีการสูญเสียสำหรับเซ็กเมนต์ตรง (ลบคีย์กลางที่ซ้ำซ้อน) ในขณะที่ Refit นั้นสูญเสียแต่ทรงพลัง โดยสร้างส่วนที่ซับซ้อนขึ้นมาใหม่เป็นเส้นโค้งเบซิเยร์เดี่ยว อัลกอริธึมเหล่านี้เหมาะอย่างยิ่งหลังจากการอบและล้างข้อมูลทางฟิสิกส์ผ่านโหนด Schneider หมายเหตุ: การรีฟิตซ้ำที่สูงกว่า 100 อาจใช้เวลาสักครู่เพื่อค้นหาเส้นโค้งที่ดีที่สุด วิดีโอแสดงวิธีการทำงานของทั้งสองวิธีและ % ของการเพิ่มประสิทธิภาพที่ได้รับดูบน YouTube

Spine2D การทดลองที่ 4: การลบข้อมูลที่ซ้ำซ้อนด้วยการมองเห็นไฟล์แนบและโหนดการล้างข้อมูล— การเพิ่มประสิทธิภาพโครงสร้าง Spine 2D โดยใช้การมองเห็นไฟล์แนบและโหนดการล้างข้อมูล การมองเห็นไฟล์แนบจะปิดใช้งานไฟล์แนบเมื่ออัลฟ่าจางลงเป็น 0 และกู้คืนเมื่อเฟดอิน ซึ่งช่วยลดการโทรออกและลบคีย์ที่ซ้ำซ้อน การล้างข้อมูลจะลบความซ้ำซ้อนทางลอจิคัล: แทร็กสี/อัลฟ่าที่ไม่ได้ใช้ ปุ่มหมุน IK ที่ควบคุมโดยข้อจำกัดอย่างสมบูรณ์ และปุ่มจำกัดเส้นทาง วิดีโอแสดงให้เห็นว่าการปรับให้เหมาะสมตามลอจิกเหล่านี้แตกต่างจากการลดความซับซ้อนของเส้นโค้งอย่างไรดูบน YouTube

Spine2D การทดลองที่ 5: การสร้างไปป์ไลน์ที่ไม่ใช่เชิงเส้น (ตัวกรองและผสาน Node)— การเพิ่มประสิทธิภาพ 2D แบบไม่เป็นเชิงเส้น Spine: แยกสตรีมข้อมูลด้วยตัวกรอง (แอนิเมชั่น กระดูก สล็อต พารามิเตอร์ หรือสกิน) เรียกใช้อัลกอริธึมที่แตกต่างกันบนกิ่งคู่ขนาน (เช่น การบีบอัดกระดูกอย่างรุนแรงในขณะที่ทำให้แอนิเมชั่นบนใบหน้าไม่สูญเสีย) จากนั้นรวมกิ่งก้านกับโหนด Merge ให้เป็นโครงกระดูกเดียว ขั้นตอนการทำงานนี้เป็นมากกว่าไปป์ไลน์อินพุต → ปรับให้เหมาะสม → เอาท์พุตแบบธรรมดา และให้คุณกำหนดเป้าหมายเฉพาะสิ่งที่ควรได้รับการปรับให้เหมาะสมเท่านั้นดูบน YouTube

Spine2D การทดลองที่ 6: การบรรจุพื้นผิวใหม่และการปรับขนาดแบบเลือกด้วยโหนดที่กำหนดเอง— ไปป์ไลน์การปรับพื้นผิวขั้นสูง: โหนด Atlas Unpacker/Repacker ช่วยให้คุณสามารถคลายแพ็ก ปรับขนาด/บีบอัด และแพ็กแผนที่ภายในกราฟเดียวได้เร็วกว่าเวิร์กโฟลว์ Spine มาตรฐาน เมื่อใช้ไปป์ไลน์ที่ไม่ใช่เชิงเส้น คุณสามารถแบ่งเนื้อหา เก็บพื้นผิวอักขระไว้ที่ 100% ในขณะที่ปรับขนาดอื่นๆ ลงเหลือ 25% จากนั้นรวมทุกอย่างกลับเป็น atlas ที่แชร์เพียงอันเดียว Atlas/โหนด Asset ตัวแสดงผล ให้การตรวจสอบด้วยภาพและการกรองสินทรัพย์และแผนที่ในทุกขั้นตอน ทำให้ง่ายต่อการกำหนดเป้าหมายการปรับขนาด ประมวลผลแบบเลือกสรร และรวมผลลัพธ์ใหม่เป็นเทมเพลตที่นำมาใช้ซ้ำได้ดูบน YouTube

Spine2D การทดลองที่ 7: การปรับขนาดโครงกระดูกทันทีด้วยมาตราส่วน Node— จากต้นทางถึงปลายทาง Spine ไปป์ไลน์การเพิ่มประสิทธิภาพ 2D บวกกับการปรับขนาดโครงกระดูก โหนด Scale จะแทนที่เวิร์กโฟลว์ Spine ที่น่าเบื่อหน่าย (ส่งออก/นำเข้า บรรจุใหม่/แกะกล่อง แก้ไขเส้นทาง) ด้วยขั้นตอนกราฟเดียว: ตั้งค่าขนาดเป้าหมาย ดูตัวอย่างทันทีในวิวพอร์ต และทำซ้ำแบบเรียลไทม์ วิดีโอเชื่อมโยงการเพิ่มประสิทธิภาพเส้นโค้ง/คีย์ การประมวลผลเนื้อหา และการปรับขนาดโครงกระดูกเข้าด้วยกันในไปป์ไลน์เดียวที่มีประสิทธิภาพดูบน YouTube

Spine2D การทดลอง 8: เบต้าสาธารณะ Node ภาพรวม— บทสรุปของทุกโหนดที่มีอยู่ในรุ่นเบต้าสาธารณะ และวิธีที่นักสร้างแอนิเมชันและนักพัฒนาปรับปรุงสะพานใหม่ ครอบคลุมการล้างคีย์ที่ซ้ำซ้อน การลดความซับซ้อนของเบซิเยร์เป็นเชิงเส้น การปัดเศษตามขนาด การลบไฟล์แนบที่มองไม่เห็น การล้างคุณสมบัติที่ไม่ได้ใช้ การตรวจจับอักขระที่ไม่ใช่ภาษาอังกฤษ และ atlas unpack/filter/scale/repack Dual ตัวแสดงผล ตรวจสอบผลลัพธ์ด้วยการเปรียบเทียบภาพแบบเคียงข้างกันและ FPS Public Beta กำลังถ่ายทอดสดอยู่ที่re-polish.com. ดูบน YouTube

Spine2D การทดลองที่ 9: การเสริมข้อจำกัดทางฟิสิกส์ให้กับคีย์เฟรม— ในวิดีโอนี้ ฉันสาธิตการทดลองล่าสุดของฉันด้วยการใส่ข้อจำกัดทางฟิสิกส์ลงในคีย์เฟรมมาตรฐาน อัลกอริธึมการอบใหม่ช่วยให้มั่นใจได้ว่า: Perfect Loops (การกระวนกระวายใจเป็นศูนย์หรือการข้ามระหว่างเฟรมเริ่มต้นและสิ้นสุด), ขนาดไฟล์ที่ปรับให้เหมาะสม (การล้างเส้นโค้งอัตโนมัติทำให้ขนาด JSON ใกล้เคียงกับต้นฉบับ) และความเข้ากันได้แบบย้อนกลับ (คีย์แบบอบช่วยให้คุณใช้ Spine 4.2 แอนิเมชั่นฟิสิกส์ใน Spine 4.1 หรือแม้แต่ 4.0)ดูบน YouTube

Nodes

Input

นำเข้าไฟล์โปรเจกต์ Spine, อินพุตแบบ JSON เท่านั้น, แอสเซ็ตเดโม และแพ็กเกจ ZIP เข้าสู่กราฟ

วัตถุประสงค์: นี่คือจุดเริ่มต้นหลักสำหรับเวิร์กโฟลว์ส่วนใหญ่ โดยจะอ่าน JSON, atlas และ texture แล้วทำให้เป็นข้อมูลภายในรูปแบบมาตรฐานที่โหนดปลายน้ำสามารถประมวลผลต่อได้

โหมดที่รองรับ:
1. โปรเจกต์เต็ม: JSON + atlas + texture
2. JSON เท่านั้น: ประมวลผลข้อมูล skeleton/animation โดยไม่มี atlas
3. แพ็กเกจ ZIP: ไฟล์ zip ที่แพ็กรวมโปรเจกต์ครบชุด
4. แอสเซ็ตเดโม: ข้อมูลตัวอย่างในตัวสำหรับการทดสอบอย่างรวดเร็ว

เอาต์พุตหลัก:
- **payload_out**: ข้อมูลที่ทำให้เป็นมาตรฐานแล้วสำหรับโหนดปรับแต่งประสิทธิภาพ
- **original_json_out**: JSON ต้นฉบับสำหรับการเปรียบเทียบหรือสร้างกลับ
- **atlas_project_out**: โปรเจกต์ atlas ที่ parse แล้วเมื่อมี texture ให้มา

Picture Input

เพิ่มภาพ PNG/JPEG แบบสแตนด์อโลนลงใน viewport เพื่อให้คุณสร้างพรีวิวและภาพสำหรับงานนำเสนอที่สะอาดตายิ่งขึ้นได้

วัตถุประสงค์: ใช้โหนดนี้เพื่อวางภาพลงใน viewport โดยตรงในฐานะเลเยอร์สำหรับการนำเสนอหรือองค์ประกอบช่วยมองเห็น เหมาะเมื่อคุณต้องการตกแต่งฉาก เพิ่มกราฟิกประกอบ และทำให้พรีวิวโปรเจกต์ดูเนี้ยบยิ่งขึ้นก่อนบันทึกวิดีโอหรือเดโม

เวิร์กโฟลว์: โหลดภาพหนึ่งภาพ จากนั้นใช้เครื่องมือของ viewport เพื่อย่อขยาย ย้าย และปรับ z-index ให้ภาพวางอยู่ในคอมโพซิชันได้อย่างถูกต้อง ทำให้สะดวกต่อการสร้างช็อตโชว์เคสที่ดูดีโดยไม่ต้องแตะข้อมูลหลักของโปรเจกต์ Spine

โหนดนี้ทำงานแบบสแตนด์อโลนและไม่มี graph sockets ให้ใช้งาน

Output

รวบรวมผลลัพธ์สุดท้ายและให้คุณดาวน์โหลดข้อมูลที่ปรับแต่งแล้วเป็นไฟล์แยก ชุดไฟล์ที่จัดกลุ่ม หรือไฟล์เก็บถาวรได้

วัตถุประสงค์: ทำหน้าที่เป็นศูนย์กลางการส่งออกสำหรับ JSON ที่ปรับแต่งแล้ว ข้อมูล atlas, texture และ sprite โดยสามารถประกอบผลลัพธ์จากชุด JSON/atlas/texture ชุดเดียว จากหลายชุดไฟล์ หรือจาก sprite เพียงอย่างเดียวเมื่อคุณต้องการเอาต์พุตเป็นภาพโดยไม่ต้องสร้างโปรเจกต์ Spine เต็มรูปแบบใหม่

ตัวเลือกการส่งออก:
- ดาวน์โหลดไฟล์ทีละไฟล์หรือเป็นไฟล์เก็บถาวรเดียว
- ดาวน์โหลดผลลัพธ์แบบแพ็กแล้ว หรือไฟล์เก็บถาวรที่มีไฟล์แบบไม่แพ็ก
- ส่งออก JSON ในรูปแบบกะทัดรัดหรือรูปแบบ pretty-print ที่อ่านง่าย
- ส่งออกข้อมูลโปรเจกต์ Spine ทั้งหมด หรือเฉพาะผลลัพธ์ sprite/image

เวิร์กโฟลว์แบบ chaining: OutputNode ไม่จำเป็นต้องเป็นปลายทางสุดท้ายของกราฟเสมอไป คุณสามารถส่งเอาต์พุตของมันไปยังขั้น pipeline อื่นและรันไฟล์เดิมผ่านการปรับแต่งเพิ่มอีกหลายรอบได้ ในทางปฏิบัติ มีการทดสอบการปรับแต่ง key และ curve ต่อเนื่องได้สูงสุด 3 รอบ

เอาต์พุตหลัก:
- **reconstructed_json_out**: JSON ของ Spine ที่สร้างกลับใหม่
- **original_json_passthrough_out**: การส่งผ่าน JSON ต้นฉบับ
- **payload_out**: payload สำหรับ chaining ต่อ
- **changes**: การเปลี่ยนแปลงจากการปรับแต่งที่รวบรวมไว้
- **atlas_assets**: ทรัพยากร atlas ที่พร้อมส่งออก

RDP

ลดความซับซ้อนของเส้นโค้งแอนิเมชั่นโดยใช้อัลกอริทึม Ramer-Douglas-Peucker (RDP)

วัตถุประสงค์: ลดจำนวนคีย์เฟรมในส่วนภาพเคลื่อนไหวเชิงเส้นหรือใกล้เชิงเส้นโดยลบจุดที่อยู่บนเส้นตรงระหว่างสองส่วนอื่น ๆ

กฎทอง: ปิดใช้งานตามค่าเริ่มต้น ช่วยปกป้องส่วนโค้งที่มีรูปร่างสำคัญ (พื้นที่/ส่วนโค้ง) จากการแบนเป็นเส้นตรง ปิดการใช้งานเฉพาะสำหรับการบีบอัดที่รุนแรงมากขึ้นหลังจากการตรวจสอบด้วยภาพ

คีย์ซ็อกเก็ต: payload_in, payload_out, การเปลี่ยนแปลง

Spline

ปรับเส้นโค้งเส้นโค้งที่เรียบให้กับคีย์เฟรมแอนิเมชั่น ช่วยลดจุดกึ่งกลางที่ไม่จำเป็น

วัตถุประสงค์: ปรับเส้นโค้งให้เรียบโดยยังคงรักษาคุณภาพของภาพไว้

คีย์ซ็อกเก็ต: payload_in, payload_out, การเปลี่ยนแปลง

Refit

ประมาณลำดับคีย์เฟรมที่หนาแน่นโดยมีเส้นโค้ง Bezier น้อยลงเพื่อลดขนาด

วัตถุประสงค์: ปรับให้พอดีกับส่วนโค้งน้อยลงแต่ยังคงอยู่ภายในเกณฑ์ความคลาดเคลื่อน

คีย์ซ็อกเก็ต: payload_in, payload_out, การเปลี่ยนแปลง

Quantizer

ลดความแม่นยำของค่าตัวเลขในคีย์เฟรมและเส้นโค้ง

วัตถุประสงค์: วิธีง่ายๆ แต่มีประสิทธิภาพในการลดขนาดไฟล์โดยการปัดเศษตัวเลขให้เป็นทศนิยมตามจำนวนที่ระบุ

การใช้งาน: สามารถนำไปใช้กับข้อมูลภาพเคลื่อนไหวได้เกือบทุกประเภท มีประสิทธิภาพมากขึ้นเมื่อมีจำนวนคีย์เฟรมสูงขึ้น

ข้อควรระวัง: การหาปริมาณที่รุนแรงเกินไป (ความแม่นยำต่ำ) อาจทำให้เกิดการกระวนกระวายใจหรือภาพผิดปกติในภาพเคลื่อนไหวได้

คีย์ซ็อกเก็ต: payload_in, payload_out, การเปลี่ยนแปลง

Cleanup

ดำเนินการล้างข้อมูลต่างๆ เพื่อลบข้อมูลภาพเคลื่อนไหวที่ซ้ำซ้อนหรือไม่จำเป็น

วัตถุประสงค์: เครื่องมือพิเศษสำหรับการลบข้อมูลที่ซ้ำซ้อนบางประเภทที่เครื่องมือเพิ่มประสิทธิภาพอื่นอาจพลาด

การใช้งาน: เชื่อมต่อเพย์โหลดของคุณกับ 'payload_in' และรับผลลัพธ์จาก 'payload_out' หากคุณต้องการรายงานต่อการเปลี่ยนแปลง ให้ใช้ 'การเปลี่ยนแปลง' ด้วย

ปุ่มซ็อกเก็ต:
- อินพุต: payload_in
- เอาท์พุต: payload_out, การเปลี่ยนแปลง

การล้างข้อมูลที่รองรับในปัจจุบัน:
1. **ลบแทร็กสี/อัลฟ่าที่ไม่ได้ใช้**: ลบไทม์ไลน์สี/อัลฟ่าสำหรับช่องที่ไม่สามารถมองเห็นได้ในระหว่างแอนิเมชั่น
2. **ลบการหมุน IK ที่ซ้ำซ้อน**: ลบคีย์เฟรมการหมุนออกจากกระดูกที่ถูกควบคุมโดยข้อจำกัด IK ด้วยส่วนผสม 100%
3. **ลบคีย์ข้อจำกัดเส้นทาง**: ลบการหมุน/แปลคีย์เฟรมออกจากกระดูกที่ควบคุมโดยข้อจำกัดเส้นทางอย่างสมบูรณ์ (ค่าผสมที่ 100%)
4. **ฆ่าเชื้ออักขระที่ไม่ใช่ภาษาอังกฤษ**: แทนที่อักขระที่ไม่ใช่ภาษาอังกฤษในชื่อ/ตัวระบุ เพื่อหลีกเลี่ยงปัญหาในเครื่องมือดาวน์สตรีม

Scale

ปรับขนาดค่าตัวเลขทั้งหมดในคีย์เฟรมภาพเคลื่อนไหวตามปัจจัยที่ระบุ

วัตถุประสงค์: ปรับขนาดข้อมูลภาพเคลื่อนไหวอย่างสม่ำเสมอ ซึ่งมีประโยชน์สำหรับการปรับขนาดโครงกระดูกตามสัดส่วนหรือปรับความเข้มของภาพเคลื่อนไหว

การใช้งาน: เชื่อมต่อ **payload_in** และรับผลลัพธ์จาก **payload_out**

คีย์ซ็อกเก็ต: payload_in, payload_out

Schneider

ปรับเส้นโค้ง Bezier แบบเรียบให้เหมาะกับคีย์เฟรมแอนิเมชั่นโดยใช้อัลกอริธึมการปรับเส้นโค้งของ Schneider

วัตถุประสงค์: การปรับเส้นโค้งขั้นสูงที่สร้างเส้นโค้ง Bezier ที่ดูเป็นธรรมชาติจากลำดับคีย์เฟรมที่หนาแน่น

ความพร้อมใช้งาน: **โหนด Plus เท่านั้น**

วิธีการทำงาน: อัลกอริธึมของ Schneider วิเคราะห์ตำแหน่งคีย์เฟรมและแทนเจนต์เพื่อสร้างจุดควบคุม Bezier ที่เหมาะสมซึ่งตรงกับการเคลื่อนไหวดั้งเดิมอย่างใกล้ชิด

พารามิเตอร์:
- **Error Tolerance**: ค่าเบี่ยงเบนสูงสุดที่อนุญาตจากคีย์เฟรมดั้งเดิม ต่ำ = แม่นยำยิ่งขึ้น สูงขึ้น = เส้นโค้งที่นุ่มนวลขึ้น
- **มุมมุม**: มุมเกณฑ์ (องศา) ที่ใช้แบ่งเส้นโค้งออกเป็นส่วนๆ

ดีที่สุดสำหรับ:
- ภาพเคลื่อนไหวที่วาดด้วยมือหรือนำเข้าพร้อมคีย์เฟรมจำนวนมาก
- การแปลงการประมาณค่าเชิงเส้นเป็นเส้นโค้ง Bezier ที่ราบรื่น
- ลดจำนวนคีย์เฟรมในขณะที่ยังคงรักษาคุณภาพของเส้นโค้ง

หมายเหตุ: มีความเข้มข้นในการคำนวณมากกว่าอัลกอริทึมที่เรียบง่ายกว่าเช่น RDP แต่ให้คุณภาพเส้นโค้งที่เหนือกว่า

คีย์ซ็อกเก็ต: payload_in, payload_out, การเปลี่ยนแปลง

Physics Constraint Bake

อบ Spine การเคลื่อนไหว PhysicsConstraint ลงในการหมุน/แปลคีย์เฟรมของกระดูก และลบไทม์ไลน์ทางฟิสิกส์

วัตถุประสงค์: แปลงการจำลองฟิสิกส์รันไทม์ให้เป็นคีย์เฟรมที่ชัดเจน ดังนั้นภาพเคลื่อนไหวจึงสามารถกำหนดได้และแก้ไขได้โดยไม่มีข้อจำกัดทางฟิสิกส์ หลังจากการอบ ข้อจำกัดทางฟิสิกส์และไทม์ไลน์ทางฟิสิกส์จะถูกลบออกจากเพย์โหลด

ความพร้อมใช้งาน: **โหนด Plus เท่านั้น**

อินพุต/เอาต์พุต:
- **payload_in** → **payload_out** (อบ)
- **การเปลี่ยนแปลง** (รายการเปลี่ยนแปลงเพิ่มเติม)

การควบคุม:
- **ตัวอย่าง FPS**: อัตราการสุ่มตัวอย่างจำลองสำหรับการอบ
- **การหมุนการอบ**: เขียนปุ่มหมุนการอบ
- **Bake Translation**: เขียนคีย์การแปลแบบอบ
- **Bake Translation (เด็ก)**: ใช้การแปล Bake กับกระดูกเด็กที่ต้องอาศัยการเคลื่อนไหวทางฟิสิกส์

หมายเหตุ:
- ต้องใช้ Spine JSON ดั้งเดิมเพื่อสร้างข้อมูลการจำลองขึ้นใหม่
- ใช้เมื่อคุณต้องการลบข้อจำกัดทางฟิสิกส์แต่ยังคงการเคลื่อนไหวไว้

Attachment Visibility

เพิ่มประสิทธิภาพการเรนเดอร์โดยตั้งค่าไฟล์แนบของช่องให้เป็นโมฆะเมื่ออัลฟ่าเป็นศูนย์

วัตถุประสงค์: ป้องกันไม่ให้เอ็นจิ้นเกมต้องประมวลผลหรือแสดงไฟล์แนบที่มองไม่เห็น

การใช้งาน: กระบวนการ **payload_in**, เอาต์พุตที่ปรับให้เหมาะสม **payload_out** และรายงาน **การเปลี่ยนแปลง** ทางเลือก

คีย์ซ็อกเก็ต: payload_in, payload_out, การเปลี่ยนแปลง

Payload Merger

รวมเพย์โหลดภาพเคลื่อนไหวที่ประมวลผลแล้วหลายรายการกลับเป็นเพย์โหลดเดียวที่เป็นหนึ่งเดียว

วัตถุประสงค์: จำเป็นสำหรับไปป์ไลน์การประมวลผลแบบขนานซึ่งมีการปรับแอนิเมชั่นหรือกลุ่มกระดูกที่แตกต่างกันแยกกันและจำเป็นต้องรวมเข้าด้วยกันใหม่

อินพุต:
- **ฐาน**: น้ำหนักบรรทุกหลัก (โครงสร้างโครงกระดูก)
- **แทนที่**: เพย์โหลดตั้งแต่หนึ่งรายการขึ้นไปที่มีแทร็กมาแทนที่แทร็กฐาน

เอาท์พุท:
- **merged_out**: เพย์โหลดที่รวมเข้าด้วยกัน

ปุ่มซ็อกเก็ต: ฐาน, แทนที่, ผสาน_ออก

Animation Viewer

เครื่องมือภาพสำหรับตรวจสอบและเปรียบเทียบเส้นโค้งแอนิเมชั่นก่อนและหลังการปรับให้เหมาะสม

วัตถุประสงค์: ให้การแสดงคีย์เฟรมและเส้นโค้งแบบกราฟิกสำหรับแทร็กที่เลือก

การใช้งาน: เชื่อมต่อ **before_in** และ **after_in** เพื่อซ้อนทับต้นฉบับและปรับให้เหมาะสม เลือกเชื่อมต่อ **การเปลี่ยนแปลง** เพื่อเน้นแทร็กที่ได้รับผลกระทบ

ปุ่มซ็อกเก็ต: before_in, after_in, การเปลี่ยนแปลง

Animation Filter

กรองแทร็กภาพเคลื่อนไหวตามชื่อภาพเคลื่อนไหว (เช่น 'วิ่ง', 'ไม่ได้ใช้งาน')

วัตถุประสงค์: มีประโยชน์สำหรับการใช้กลยุทธ์การปรับให้เหมาะสมที่แตกต่างกันกับภาพเคลื่อนไหวต่างๆ

การใช้งาน: กรอง **payload_in** ลงใน **payload_out** และแสดง **animation_list** สำหรับการเลือก UI

คีย์ซ็อกเก็ต: payload_in, payload_out,animation_list

Asset Filter

กรองเนื้อหา atlas ตามชื่อ ทำงานในสองโหมด: ก่อนเปิดไฟล์ (กรองข้อความ atlas) หรือหลังเปิดไฟล์ (กรองสไปรต์)

วัตถุประสงค์: ควบคุมว่าเนื้อหาใดที่จะรวมอยู่ในเวิร์กโฟลว์ - ไม่ว่าจะเป็นเนื้อหาใดที่จะแยกออกจาก atlas หรือสไปรท์ที่คลายแพ็กแล้วที่จะรวมไว้ในการบรรจุใหม่

อินพุต/เอาต์พุต:
- โหมด Atlas: **atlas_in** → **atlas_out**
- โหมดสไปรท์: **sprites_in** → **sprites_out**

ปุ่มซ็อกเก็ต: atlas_in, atlas_out, sprites_in, sprites_out

Bone Filter

กรองแทร็กแอนิเมชันของกระดูกตามชื่อกระดูก

วัตถุประสงค์: อนุญาตให้กำหนดเป้าหมายหรือแยกกระดูกเฉพาะออกจากกระบวนการปรับให้เหมาะสม

การใช้งาน: กรอง **payload_in** ลงใน **payload_out**

คีย์ซ็อกเก็ต: payload_in, payload_out

Skin Filter

กรองข้อมูลภาพเคลื่อนไหวและเนื้อหาตามชื่อสกิน

วัตถุประสงค์: ประมวลผลเฉพาะสกินที่ระบุจากโปรเจ็กต์ Spine แบบหลายสกิน

การใช้งาน: กรอง **payload_in** ลงใน **payload_out**

คีย์ซ็อกเก็ต: payload_in, payload_out

Slot Filter

กรองแทร็กแอนิเมชั่นของช่องตามชื่อช่อง

วัตถุประสงค์: มีประโยชน์สำหรับการกำหนดเป้าหมายหรือยกเว้นช่องเฉพาะที่อาจมีข้อกำหนดด้านเวลาหรือการมองเห็นพิเศษ

การใช้งาน: กรอง **payload_in** ลงใน **payload_out**

คีย์ซ็อกเก็ต: payload_in, payload_out

Parameter Filter

กรองแทร็กแอนิเมชันตามประเภทคุณสมบัติ (เช่น การหมุน ขนาด สี)

วัตถุประสงค์: อนุญาตให้ใช้การปรับให้เหมาะสมในภายหลังกับข้อมูลภาพเคลื่อนไหวบางประเภทเท่านั้น

การใช้งาน: กรอง **payload_in** ลงใน **payload_out**

คีย์ซ็อกเก็ต: payload_in, payload_out

Atlas Unpacker

แยกสไปรท์แต่ละตัวจากพื้นผิว Spine atlas

วัตถุประสงค์: แบ่งไฟล์ atlas ออกเป็นสไปรท์คอมโพเนนต์ เพื่อให้สามารถวิเคราะห์ทีละรายการหรือบรรจุใหม่ได้

การใช้งาน: เชื่อมต่อ **atlas_project** จาก InputNode ไปยัง **atlas_project** (หรือ **atlas_project_in** เดิม) บนโหนดนี้ เลือกเชื่อมต่อ **skeleton_json_in** (จาก InputNode's **Original_json**) เพื่อเปิดใช้งานการครอบตัดแบบ mesh-aware (ตัดสไปรท์เป็นขอบเขตตัวถังแบบ mesh แทนที่จะเป็นขอบเขตสี่เหลี่ยม ซึ่งสามารถลดหน่วยความจำพื้นผิวสำหรับการแนบแบบ mesh ได้อย่างมาก)

เอาท์พุต:
- **sprites_out**: อาร์เรย์สไปรท์มาตรฐาน (สำหรับผู้ดู/ผู้แบ่งบรรจุ)
- **sprites_data_out**: ภาพสไปรท์/ข้อมูลเมตาที่แยกออกมา (บันเดิลที่มีโครงสร้าง)
- **atlas_out**: Atlas ส่งผ่านโปรเจ็กต์

คีย์ซ็อกเก็ต: atlas_project, atlas_project_in, skeleton_json_in, sprites_out, sprites_data_out, atlas_out

Atlas Repacker

บรรจุสไปรท์แต่ละตัวลงใน Atlas พื้นผิวใหม่ที่ปรับให้เหมาะสมอย่างน้อยหนึ่งรายการ

วัตถุประสงค์: ปรับหน่วยความจำพื้นผิวให้เหมาะสมและอาจลดการดึงสายโดยการสร้างภาพต่อเรียงที่มีประสิทธิภาพ

การใช้งาน: ยอมรับสไปรท์ผ่าน **sprites_data_in** (บันเดิลสไปรท์ที่มีโครงสร้าง) หรือผ่าน **sprites_out** (อาร์เรย์สไปรท์มาตรฐาน) หากจำเป็นสำหรับการจัดการอัลฟ่า / การบรรจุรูปหลายเหลี่ยม ให้จัดเตรียมโครงกระดูกดั้งเดิมผ่าน **Original_json** ส่งออก atlas ที่แพ็กเป็น **atlas_out**

คีย์ซ็อกเก็ต: sprites_data_in, sprites_out, original_json, atlas_out

Atlas Viewer

เครื่องมือสร้างภาพและวิเคราะห์ atlas น้ำหนักเบาสำหรับตรวจสอบโครงสร้าง atlas ก่อนแกะกล่อง

วัตถุประสงค์: มอบวิธีที่รวดเร็วในการดูตัวอย่างหน้าและภูมิภาค atlas โดยไม่ต้องทำการคลายแพ็กจำนวนมาก ช่วยตรวจสอบโครงสร้าง atlas และระบุภูมิภาคที่ไม่ได้ใช้

การใช้งาน: เชื่อมต่อโปรเจ็กต์ atlas โปรเจ็กต์เดียวกับ **atlas_project** (หรือ **atlas_in** / **atlas**) หรือตรวจสอบชุดของโปรเจ็กต์ atlas ผ่าน **atlas_projects** เลือกเชื่อมต่อโครงกระดูก JSON กับ **json** เพื่อการวิเคราะห์การใช้งาน

คีย์ซ็อกเก็ต: atlas_project, atlas_projects, atlas_in, atlas, json

Atlas Merger

รวมแหล่งที่มา atlas หลายแหล่งให้เป็น atlas ที่รวมเป็นหนึ่งเดียว

วัตถุประสงค์: รวมโปรเจ็กต์ atlas หลายโปรเจ็กต์เป็นโปรเจ็กต์เดียว

อินพุต:
- **atlas_inputs**: อาร์เรย์หลายอินพุตของโปรเจ็กต์ atlas

เอาท์พุต:
- **atlas_out**: รวมโปรเจ็กต์ atlas แล้ว
- **merged_out**: เอาต์พุตที่ผสานแบบเดิม
- **merged_atlas_out**: เอาต์พุตที่ผสานแบบเดิม

ปุ่มซ็อกเก็ต: atlas_inputs, atlas_out, merged_out, merged_atlas_out

ไปป์ไลน์ทั่วไป:
```
InputA → Unpacker → Repacker ─┐
                               ├→ Atlas Merger → Unpacker → Repacker → Output
InputB → Unpacker → Repacker ─┘
```
ก่อน Repacker ข้อมูลจะเป็นสไปรท์แต่ละตัว หลังจาก Repacker มันจะกลายเป็นโปรเจ็กต์ atlas Atlas การควบรวมกิจการจะรวมโปรเจ็กต์ atlas จากนั้น Unpacker สุดท้าย → Repacker Pass จะบรรจุทุกอย่างใหม่ให้แน่นเป็น atlas ที่รวมเป็นหนึ่งเดียว

Asset Viewer

แสดงสไปรท์แต่ละตัวจาก atlas ที่คลายแพ็กแล้ว

วัตถุประสงค์: เครื่องมือแก้ไขข้อบกพร่องด้วยภาพสำหรับการจัดการ atlas

การใช้งาน: ยอมรับสไปรท์ผ่าน **sprites_out** (มาตรฐาน) หรือแบบเดิม **sprites_in** / **sprites_data**

ปุ่มซ็อกเก็ต: sprites_out, sprites_in, sprites_data