Làm cách nào để thu nhỏ pixel art?


14

Có rất nhiều thuật toán để mở rộng quy mô lên nghệ thuật pixel. (Tôi thích HQX , cá nhân.) Tuy nhiên, có bất kỳ thuật toán đáng chú ý để mở rộng nó xuống ? Trò chơi của tôi được thiết kế để chạy ở độ phân giải 1280x720, nhưng nếu nó được chơi ở độ phân giải thấp hơn, tôi vẫn muốn nó trông ổn.

Hầu hết các cuộc thảo luận nghệ thuật pixel xoay quanh 320x200hoặc nâng 640x480cấp để sử dụng trong trình giả lập giao diện điều khiển, nhưng tôi tự hỏi làm thế nào các trò chơi 2D hiện đại như Monkey Island Remake có thể trông tốt ở độ phân giải thấp hơn?

Tất nhiên bỏ qua tùy chọn có nhiều phiên bản tài sản (ví dụ: mipmapping ).


Mipmapping không yêu cầu nhiều phiên bản tài sản; nó có thể được thực hiện tự động tại thời điểm tải nội dung bằng OpenGL hoặc DirectX. Điều đó sẽ đáp ứng mục tiêu của bạn?
Seth Battin

@SethBattin Tôi không chắc. Tôi đang suy nghĩ về việc chạy một trò chơi được tạo cho 1280x720, ví dụ 1024x576. OpenGL và DirectX sử dụng gì để bán lại nếu tôi cho nó một hình ảnh có kích thước 128x96 và được cho là hiển thị ở 102x76? (đó thậm chí là một vấn đề làm tròn vì nó phải là 102,4x76,8 pixel)
Michael Stum

Mipmapping làm mờ hình ảnh rất nhiều. Bạn sẽ không muốn điều đó cho pixelart.
Kromster nói hỗ trợ Monica

5
Chỉ cần FYI: Làm lại Đảo Khỉ không yêu cầu hạ thấp. Trò chơi chạy trên EGA và có kích thước hiệu quả 320x200 pixel. Không cần phải tạo các phiên bản thu nhỏ này cho thiết bị di động, vì nó đã nhỏ hơn độ phân giải mà các thiết bị này hiện nay.
bummzack

2
Pixel art của bạn trông như thế nào? Bạn đang yêu cầu chúng tôi trả lời trong mù.
aaaaaaaaaaaa

Câu trả lời:


13

Tôi hiện đang làm một trò chơi phải chạy trên nhiều kích cỡ màn hình và tỷ lệ khung hình khác nhau và đó không phải là một quá trình rất dễ dàng. Ngoài ra, nếu bạn đang tạo ra những thứ trong nghệ thuật pixel và bạn muốn giữ cảm giác nghệ thuật pixel trong khi hỗ trợ nhiều độ phân giải, bạn đang bước vào một thế giới đau khổ, vì vậy hãy chuẩn bị.

Theo tôi, có một số điều bạn có thể làm (một số là độc quyền, nhưng một số khác thì không)

  1. Xác định độ phân giải tối thiểu và chỉ nâng cấp (mọi thứ) theo số nguyên với hàng xóm gần nhất. Bằng cách đó bạn có thể giữ cảm giác nghệ thuật pixel. Tôi không nghĩ rằng hạ thấp là một ý tưởng hay, vì bạn sẽ mất chi tiết và toàn bộ mục đích sử dụng nghệ thuật pixel được làm cẩn thận sẽ bị đánh bại. Nếu độ phân giải được hỗ trợ tối thiểu của bạn quá nhỏ so với các họa tiết của bạn, hãy thay đổi độ phân giải được hỗ trợ tối thiểu của bạn hoặc vẽ lại tất cả các tài sản để hỗ trợ độ phân giải tối thiểu này.

  2. Khi bạn gặp độ phân giải hoặc tỷ lệ khung hình không đủ để bao phủ toàn bộ màn hình, hãy mở rộng trò chơi của bạn (hiển thị nhiều ô xếp hơn), trong khi vẫn giữ nguyên các tài sản. Bạn nên làm cho trò chơi của mình để nó vẫn có thể chơi được với tỷ lệ độ phân giải / khía cạnh tối thiểu.

  3. Nếu không thể mở rộng trò chơi, hãy tô các phần không phải của trò chơi trên màn hình bằng màu đen; hoặc các sọc ở trên cùng và dưới cùng, trái và phải, hoặc một khung màu đen. Đây là những gì iPad làm khi chạy các ứng dụng iPhone ở chế độ phóng to. Điều này cũng được sử dụng rộng rãi trong các trình giả lập.

  4. Hãy từ bỏ việc giữ đúng với lưới pixel. Nhưng sau đó bạn phải ngừng sử dụng tài sản pixel arty với các góc sắc nét. Sau đó, nâng cấp / hạ cấp bằng cách sử dụng song tuyến tính (hoặc tối ưu hóa nhị phân, nếu nền tảng của bạn hỗ trợ nó) lọc. Đây là lựa chọn tốt nhất để tối đa hóa việc sử dụng màn hình, trong khi vẫn giữ trải nghiệm người dùng tương tự trên tất cả các độ phân giải được hỗ trợ.

Đối với trò chơi của tôi, cuối cùng tôi đã thực hiện tùy chọn số 4 và tôi khá ngạc nhiên khi thấy nó trông tốt như thế nào trên các thiết bị từ 320 pixel trên dọc (một Android 2.3 cũ) lên đến 1536 pixel trên dọc (iPad 2012 với màn hình hiển thị võng mạc). Các tài sản ban đầu có nghĩa là 600 pixel theo chiều dọc (ban đầu cho màn hình 800x600 trên PC Windows). Mặc dù đối với các trò chơi tiếp theo, tôi nghĩ rằng độ phân giải dọc logic tốt hơn là 720 pixel.

Trò chơi sử dụng độ phân giải ảo cao 600 pixel, được chia tỷ lệ thành độ phân giải gốc của thiết bị với tính năng lọc song tuyến. Điều này có nghĩa là tất cả các tọa độ Y trong mã đi từ 0 (trên cùng của màn hình) đến 600 (dưới cùng của màn hình).

Đối với kích thước ngang, tôi cho rằng chiều rộng tối đa là 1080 pixel, quá đủ để bao phủ cả tỷ lệ khung hình 16: 9 rộng nhất. Các tọa độ x của tôi được căn giữa, vì vậy x = 0 là tâm của màn hình và tọa độ x đi từ -540 ở bên trái đến 540 ở bên phải. Tôi đảm bảo mọi thứ phù hợp trong khoảng từ -400 đến 400 để hỗ trợ các màn hình hẹp nhất (4: 3)

Tuy nhiên, nếu tôi phải giữ cảm giác nghệ thuật pixel, tôi chắc chắn sẽ sử dụng tùy chọn 1 và 2. Có nghĩa là tôi chỉ chia tỷ lệ theo số nguyên để giữ cảm giác khối của nghệ thuật pixel và thiết kế trò chơi sao cho mức độ hiển thị gạch không cố định và có thể thích ứng với bất kỳ tỷ lệ độ phân giải / khía cạnh màn hình.

Vì vậy, để (không) trả lời câu hỏi của bạn. Tôi nghĩ rằng nghệ thuật pixel hạ thấp là một ý tưởng rất tồi, vì vậy bạn không nên làm điều đó. Có nhiều cách khác để hỗ trợ các độ phân giải màn hình khác nhau sẽ mang lại kết quả tốt hơn là chỉ đơn giản là đánh cắp nghệ thuật được tạo cẩn thận của bạn.


Tôi đang ở trong tình trạng tương tự và nó làm tôi phát điên. Trò chơi của chúng tôi là pixelart được tạo cho màn hình chiều cao 600px. Nhưng nếu tôi nâng cấp lên màn hình 720p (PC), nó sẽ có một cái nhìn thực sự khủng khiếp, hơi mờ. Tôi thực sự không biết phải làm gì ở đây. Tôi cũng đã nghĩ đến việc tạo một bản đồ lớn hơn cho màn hình 720p và giữ pixelart như hiện tại, nhưng sau đó tôi gặp vấn đề tương tự đối với màn hình 1080p. Tôi nghĩ rằng chúng ta nên thực hiện pixel 360p (hoặc nhỏ hơn), vì vậy chúng ta sẽ có tỷ lệ x2 và x3 hoàn hảo cho màn hình 720 và 1080p. Bây giờ đã quá muộn cho việc đó. Bất kỳ ý tưởng hoặc lời khuyên nào nữa?
Damian

8

Xem xét thực sự tạo ra các phiên bản thu nhỏ trong thời gian phát triển và bao gồm chúng trực tiếp trong trò chơi dưới dạng tài nguyên. Làm điều này với Photoshop hoặc bất kỳ công cụ nào bạn tìm thấy sẽ tạo ra những gì bạn thích. Sau đó, trò chơi tự động chọn đúng bộ nghệ thuật phù hợp với độ phân giải hiện tại.

Dưới đây là một vài lý do bạn có thể làm điều này ...

Lưu công việc xử lý

Nếu bạn đã lập trình lại chương trình trong thời gian chạy, phần mềm của bạn có thể sẽ tạo và lưu trữ các tác phẩm nghệ thuật. Vậy tại sao không chỉ bao gồm các phiên bản thu nhỏ trong gói tài sản nghệ thuật? Tôi cho rằng nếu nó làm cho tải xuống lớn hơn bạn muốn thì có thể, nhưng bạn sẽ tiết kiệm được một số tải CPU, ghi đĩa, v.v.

Kiểm soát nghệ thuật lớn hơn

Nếu bạn tự giải cứu nghệ thuật, bạn sẽ kiểm soát tốt hơn sự xuất hiện cuối cùng. Điều đó có thể không tạo ra sự khác biệt nếu bạn thu nhỏ một lượng nhỏ, nhưng khi bạn đạt được độ phân giải thấp hơn nhiều, bạn có thể muốn kiểm soát nghệ thuật tốt hơn đối với sự xuất hiện cuối cùng. Ví dụ: nếu đôi mắt của một nhân vật cụ thể cần được nhấn mạnh, bạn thực sự có thể vẽ các phiên bản có độ phân giải thấp hơn với đôi mắt không bị thu nhỏ lại để giữ hiệu ứng - điều mà quy mô lập trình không thể làm được.

Quy mô động không hoàn hảo

Bạn có thể đưa ra các quyết định nghệ thuật đặc biệt không hoạt động với quy mô động. Ví dụ: giả sử bạn muốn đặt đường viền, đường viền hoặc tô sáng xung quanh hình ảnh. Khi xem ở độ phân giải cao hơn, điều này có thể trông ổn, nhưng phiên bản thu nhỏ có thể bị lầy hoặc mất hoàn toàn hiệu ứng. Nhưng nếu thực hiện bằng tay, bạn có thể tự mình áp dụng hiệu ứng cho từng kích thước và đảm bảo bạn giữ được tác động.

Những suy nghĩ khác

Bạn cũng có thể thực hiện một cách tiếp cận hỗn hợp, với một tập hợp các tài nguyên dành riêng cho độ phân giải được sử dụng ở nơi tìm thấy và một bộ chung được chia tỷ lệ động nếu không tìm thấy phiên bản dành riêng cho độ phân giải. Điều này hơi giống với cách nền tảng Android hoạt động. Một số thông tin về điều này tại http://developer.android.com/guide/practices/sc Greens_support.html


0

Thay đổi kích thước xuống dễ dàng hơn thay đổi kích thước lên vì bạn đang chọn thông tin để vứt bỏ thay vì phải phát minh ra thông tin mới (và có thể không chính xác) để điền vào các khoảng trống. Với ý nghĩ đó, có lẽ bạn không cần bất cứ điều gì đặc biệt ở đây và hầu hết các thuật toán lấy mẫu tiêu chuẩn từ lĩnh vực xử lý hình ảnh sẽ hoạt động khá tốt để thu nhỏ hình ảnh: bilinear, Gaussian, Lanczos, v.v.

Lanczos nói riêng có thể là một lựa chọn thú vị vì nó làm sắc nét hình ảnh, có thể bảo toàn chi tiết sẽ bị mất khi kết hợp nhiều pixel thành một. Rõ ràng điều này đến với chi phí có khả năng giới thiệu các đồ tạo tác không mong muốn.

Một số so sánh trực quan tại đây: /gis/10931/what-is-lanczos-resampling-usiously-for-in-a-spatial-context


3
-1, vì việc thu nhỏ pixel-art (thường là pixel-per-pixel được làm thủ công, ví dụ ) sẽ không bao giờ trông đẹp với bất kỳ thuật toán nào trong số các thuật toán này. Với cách tiếp cận hàng xóm gần nhất, bạn sẽ mất các phân đoạn dòng quan trọng. Với nội suy, bạn sẽ có được hình ảnh mờ. Tôi sợ không có câu trả lời thỏa mãn cho câu hỏi OP ngoại trừ làm nó bằng tay.
bummzack
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.