Cắt Sprite Sheet

Thả một sprite sheet vào và nó sẽ tách thành từng khung hình — kích thước ô được đo trực tiếp từ chính sheet nên bạn không cần gõ gì cả.

Thả một sprite sheet, hoặc một bộ ảnh khung hình, hoặc bấm để chọn file

PNGWEBPGIFBMPJPEG

Thả nhiều ảnh cùng lúc thì mỗi ảnh là một khung hình, xếp theo tên file: walk1, walk2, walk10.

Công Cụ Này Làm Gì

Thả một sprite sheet vào và nó sẽ tách ra thành từng frame. Kích thước ô được đo trực tiếp từ chính sheet đó thay vì phải tự gõ, các frame phát lại thành một hoạt ảnh để bạn kiểm tra đúng thứ tự trước khi tải về, và toàn bộ tập hợp được tải xuống dưới dạng ZIP chứa các file PNG đã được đánh số.

Cách Lưới Được Tìm Ra

Công cụ thu gọn sprite sheet theo từng trục: với mỗi cột, nó kiểm tra xem có điểm ảnh đục nào trong cột đó hay không, và làm tương tự với từng hàng. Kết quả là hai dải hồ sơ xen kẽ giữa đoạn đầy và đoạn rỗng. Các đoạn rỗng chính là khe hở giữa các ô, và một khi biết vị trí của chúng thì kích thước ô, viền ngoài và khoảng cách giữa các ô đều được suy ra.

Việc nhận diện từ chối đưa ra kết quả thay vì đoán bừa khi các phép đo không khớp nhau. Nếu chiều rộng ô chênh lệch quá một pixel, hoặc các khe hở không đều nhau, sẽ không có lưới nào được báo cáo — một lưới sai mà được khẳng định là đúng gây thiệt hại nhiều hơn một ô trống, vì bạn sẽ tin vào nó.

Sửa Lại Lưới

Điều khiểnChức năng
Chiều rộng / chiều cao ôKích thước của một frame, tính bằng pixel
Số cột / số hàngCùng một lưới nhưng biểu diễn bằng số lượng — sửa các giá trị này sẽ cập nhật kích thước ô
Lề X / Lề YViền trống trước ô đầu tiên
Khoảng cách X / Khoảng cách YKhoảng hở giữa các ô liền kề

Cảnh báo phần dư bên dưới form cho biết số pixel không dùng đến ở mép phải và mép dưới. Không dư ở cả hai trục thường có nghĩa là các số liệu đã đúng.

Chọn Frame

Sheet thường chứa nhiều animation, mỗi hàng một animation. Các nút chọn hàng cô lập đúng một hàng; ô nhập khoảng thu hẹp về một dải frame cụ thể; và bấm vào bất kỳ hình thu nhỏ nào sẽ bật/tắt frame đó. Nút "bỏ qua khung trống" sẽ tắt mọi frame không có điểm ảnh đục nào, đây thường là trạng thái của hàng cuối cùng trên một sheet có đệm thêm.

Câu hỏi thường gặp

Sprite sheet của tôi có bị upload lên đâu không?
Không. Ảnh được giải mã ngay trong trình duyệt, cắt bằng JavaScript chạy trong chính tab đó, và nén ZIP tại máy bạn. File không bao giờ đi qua mạng — đó cũng là lý do công cụ vẫn chạy được khi mất mạng, miễn là trang đã tải xong.
Làm sao công cụ biết kích thước một ô?
Nó đo các khoảng trống. Công cụ đếm số điểm ảnh đục theo từng cột và từng hàng; những đoạn hoàn toàn rỗng chính là khe giữa các ô. Từ vị trí các khe đó suy ra kích thước ô, viền ngoài và khoảng cách giữa các ô. Nếu các ô chạm nhau thì không có khe nào để đo, lúc đó công cụ đoán một kích thước sprite phổ biến chia hết cho cả hai chiều của sheet và để bạn chỉnh lại.
Nếu lưới nhận diện bị sai thì sao?
Bạn gõ đè lên. Có thể nhập trực tiếp chiều rộng và chiều cao một ô, hoặc nhập số cột và số hàng rồi để kích thước ô tự suy ra — cả hai chiều đều hoạt động. Một cảnh báo cho biết còn thừa bao nhiêu điểm ảnh ở mép phải và mép dưới, và đó thường là cách nhanh nhất để phát hiện kích thước ô bị lệch một vài pixel.
Sheet của tôi có nhiều animation. Xem trước riêng một cái được không?
Được. Sheet nhân vật thường xếp mỗi hàng một animation, nên phía trên dải frame có bộ chọn hàng: chọn một hàng thì phần xem trước chỉ chạy đúng animation đó. Bạn cũng có thể nhập một khoảng frame cụ thể, hoặc bấm vào từng frame để tắt nó đi.
Vì sao vài frame trông bị mờ khi xem trước?
Lẽ ra không nên mờ. Công cụ kiểm tra xem kênh alpha có thực chất chỉ có hai mức hay không — đó là đặc điểm của pixel art — và chuyển phần xem trước sang chế độ phóng to giữ nguyên điểm ảnh nếu đúng vậy. Còn sheet có viền khử răng cưa thì khi phóng to sẽ trông mượt chứ không sắc nét, vì bản thân viền của nó vốn đã mượt.
Các file xuất ra được sắp theo thứ tự nào?
Theo đúng thứ tự phát, và số thứ tự được đệm số 0 để trình quản lý file sắp xếp giống hệt như vậy. Những frame bạn đã tắt sẽ bị bỏ qua, và phần còn lại được đánh số liên tục chứ không chừa khoảng trống.
Tôi thả vào được những định dạng ảnh nào?
PNG, WebP, GIF, BMP và JPEG. PNG và WebP là hai định dạng hữu ích nhất cho sprite vì chúng có kênh trong suốt. Sheet dạng JPEG hay BMP thì hoàn toàn không có vùng trong suốt, nên mọi điểm ảnh đều được tính là nội dung, không còn khe trống nào để đo và công cụ không báo lưới nào cả. Khi đó công cụ lấy màu chiếm ưu thế ở viền ngoài của sheet, coi mọi màu nằm trong dung sai quanh nó là vùng rỗng, rồi dò riêng từng sprite. Nếu các sprite dò được có kích thước khác nhau, trang sẽ mở ra với chúng đã được tìm sẵn và bạn không phải nhập gì; còn nếu chúng bằng nhau cả thì công cụ vẫn cắt theo lưới và bạn tự đặt kích thước ô. Dù rơi vào trường hợp nào, dòng trạng thái cũng nói rõ điều gì đã xảy ra và vì sao, và chỉ cần một nút để chuyển sang cách còn lại.