Piksel resmini nasıl ölçeklendiririm?


14

Piksel sanatını ölçeklendirmek için birçok algoritma vardır . (Tercihim HQX . Şahsen) Ama onu en yükseğe çıkarmak herhangi kayda değer algoritmalar vardır aşağı ? Oyunum bir çözünürlükte çalışacak şekilde tasarlandı , ancak daha düşük bir çözünürlükte oynatılırsa yine de iyi görünmesini istiyorum.1280x720

Çoğu piksel sanat tartışmaları etrafında ortalamak 320x200veya 640x480ve konsol emülatörleri kullanılmak üzere upscaling ama kadar modern 2D oyunlar gibi merak Monkey Island Remake düşük çözünürlüklerde üzerinde iyi görünebilir?

Tabii ki varlıkların birden fazla versiyonuna sahip olma seçeneğini göz ardı etmek ( mipmap ).


Mipmap oluşturma, varlıkların birden fazla sürümünü gerektirmez; içerik yükleme zamanında OpenGL veya DirectX tarafından otomatik olarak yapılabilir. Bu, hedeflerinizi tatmin eder mi?
Seth Battin

@SethBattin Emin değilim. 1024x576'da 1280x720 için yapılmış bir oyun oynamayı düşünüyorum. 128x96 boyutunda bir görüntü verir ve 102x76 boyutlarında görüntülenmesi gerekiyorsa OpenGL ve DirectX yeniden ölçeklendirmek için ne kullanır? (102.4x76.8 piksel olması gerektiği için bir yuvarlama sorunu bile)
Michael Stum

Mipmap oluşturma görüntüyü çok bulanıklaştırır. Bunu pixelart için istemezsiniz.
Kromster

5
Sadece FYI: Monkey Island Remake ölçek küçültme gerektirmedi. Oyun EGA üzerinde koştu ve 320x200 piksel boyutunda etkili oldu. Mobil cihazlar için bunun küçültülmüş sürümlerini oluşturmaya gerek yoktur, çünkü bu cihazların günümüzde sahip olduğu çözünürlükten zaten daha küçüktür.
bummzack

2
Piksel sanatınız nasıl görünüyor? Bizden körlük içinde cevap vermemizi istiyorsun.
aaaaaaaaaaaa

Yanıtlar:


14

Şu anda çok çeşitli ekran boyutları ve en boy oranlarında çalışması gereken bir oyun yapıyorum ve bu çok kolay bir süreç değildi. Buna ek olarak, piksel sanatında bir şeyler yapıyorsanız ve birçok çözünürlüğü desteklerken piksel sanatını hissetmek istiyorsanız, bir acı dünyasına giriyorsunuz, bu yüzden hazırlıklı olun.

Bence yapabileceğiniz birkaç şey var (bazıları özel, bazıları değil)

  1. Minimum çözünürlüğü tanımlayın ve en yakın komşunuzla tam sayı açısından yalnızca (her şeyi) yükseltin. Bu şekilde piksel sanat hissini koruyabilirsiniz. Ölçeği küçültmenin iyi bir fikir olduğunu düşünmüyorum, çünkü detay kaybedeceksiniz ve dikkatlice hazırlanmış piksel sanatını kullanmanın tüm amacı yenilecek. Desteklenen minimum çözünürlüğünüz spritelarınız için çok küçükse, desteklenen minimum çözünürlüğünüzü değiştirin veya bu minimum çözünürlüğü desteklemek için tüm öğeleri yeniden çizin.

  2. Tüm ekranı kapsamak için yeterli olmayan bir çözünürlük veya en boy oranıyla karşılaştığınızda, varlıkları olduğu gibi koruyarak oyununuzu genişletin (daha fazla kutu göster). Yine de minimum çözünürlük / en boy oranıyla oynanabilecek şekilde oyununuzu yapmalısınız.

  3. Oyunu genişletmek mümkün değilse, ekranın oyun dışı bölümlerini siyahla doldurun; üst ve alt, sol ve sağdaki şeritler veya siyah bir çerçeve. İPhone uygulamalarını büyütülmüş modda çalıştırırken iPad'in yaptığı budur. Bu aynı zamanda emülatörlerde yaygın olarak kullanılmaktadır.

  4. Piksel ızgarasına sadık kalmaktan vazgeç. Ancak daha sonra keskin köşelere sahip piksel gösterişli varlıkları kullanmayı bırakmanız gerekir. Ardından bilinear (veya platformunuz destekliyorsa en uygun şekilde bikubik) filtreleme kullanarak ölçeklendirin / küçültün. Bu, kullanıcı deneyimini desteklenen tüm çözünürlüklerde benzer tutarken ekran kullanımını en üst düzeye çıkarmak için en iyi seçimdir.

Oyunum için, 4 numaralı seçeneği yaptım ve dikeyde 320 pikselden (eski bir Android 2.3) dikeyde 1536 piksele (2012 iPad'li) sahip cihazlarda ne kadar iyi göründüğüne oldukça şaşırdım. Retina ekran). Orijinal varlıklar dikeyde 600 piksel içindir (orijinal olarak bir Windows PC'de 800x600 ekran için). Sonraki oyunlar için daha mantıklı bir dikey çözünürlük 720 piksel olduğunu düşünüyorum.

Oyun, bilinear filtreleme ile cihazın doğal çözünürlüğüne göre ölçeklendirilmiş, 600 piksel yüksek sanal bir çözünürlük kullanıyor. Bu, tüm kod içi Y koordinatlarının 0 (ekranın üst kısmı) ile 600 (ekranın alt kısmı) arasında olduğu anlamına gelir.

Yatay boyut için, maksimum genişliğin 1080 piksel olduğunu ve en geniş 16: 9 en boy oranlarını bile kapsayacak kadar fazla olduğunu düşünüyorum. X koordinatlarım ortalanmış, bu nedenle x = 0 ekranın merkezidir ve x koordinatları soldaki -540'tan sağdaki 540'a gider. En dar ekranları desteklemek için her şeyin -400 ve 400 arasında uyduğundan emin olurum (4: 3)

Ancak, piksel sanat hissini korumak zorunda kalsaydım, kesinlikle seçenekler 1 ve 2'yi kullanırdım. döşemeler sabit değildir ve herhangi bir ekran çözünürlüğü / en boy oranına uyum sağlayabilir.

Yani, sorunuza cevap vermemek için. Bence piksel küçültme piksel sanatı çok kötü bir fikir, bu yüzden yapmamalısınız. Özenle oluşturulmuş resminizi basitçe düzenlemekten daha iyi sonuçlar sağlayacak farklı ekran çözünürlüklerini desteklemenin başka yolları da vardır.


Aynı durumdayım ve bu beni deli ediyor. Oyunumuz 600 piksel yükseklik ekranı için yapılmış pixelart. Ama 720p ekranlara (PC) yükseltirsem, gerçekten korkunç, biraz bulanık bir görünüm alır. Burada ne yapacağımı gerçekten bilmiyorum. Ayrıca 720p ekranlar için daha büyük bir harita yapmayı ve pixelart'ı olduğu gibi tutmayı düşündüm, ancak daha sonra 1080p ekranlar için aynı problemim var. Sanırım 360p piksel (veya daha küçük) yapmalıydık, bu yüzden 720 ve 1080p ekranlar için mükemmel x2 ve x3 ölçeklendirmeye sahip olurduk. Şimdi bunun için çok geç. Başka fikir veya öneriniz var mı?
Damian

8

Aslında geliştirme zamanında ölçeklendirilmiş sürümleri oluşturmayı ve bunları doğrudan kaynak olarak oyuna dahil etmeyi düşünün. Bunu Photoshop ile yapın veya bulduğunuz herhangi bir araç, istediğinizi oluşturur. Sonra oyunun dinamik olarak geçerli çözünürlüğe uygun doğru sanat setini seçmesini sağlayın.

İşte bunu yapabilmenizin birkaç nedeni ...

İşleme Çalışmalarını Kaydeder

Çalışma zamanında programlı olarak yeniden ölçeklendirdiyseniz, yazılımınız muhtemelen resmi zaten oluşturur ve önbelleğe alır. Öyleyse neden sadece sanat varlıkları paketine ölçeklendirilmiş sürümler dahil edilmiyor? Sanırım indirmeyi istediğinizden daha büyük hale getirdiyse, ancak bazı CPU yüküne, disk yazmalarına vb.

Daha Fazla Sanatsal Kontrol

Sanatı kendiniz yeniden ölçeklendirirseniz, son görünüm üzerinde daha fazla kontrole sahip olursunuz. Küçük bir miktarı ölçeklendirirseniz bu bir fark yaratmayabilir, ancak çok daha düşük çözünürlüklere ulaştığınızda, son görünüm üzerinde daha iyi sanatsal kontrole sahip olmak isteyebilirsiniz. Örneğin, belirli bir karakterin gözlerinin vurgulanması gerekiyorsa, etkisi korumak için gözlerin küçültülmediği şekilde daha düşük çözünürlüklü sürümleri çizebilirsiniz - programlı ölçeklemenin yapamayacağı bir şey.

Dinamik Ölçeklendirme Mükemmel Değil

Dinamik ölçeklendirme ile çalışmayan belirgin sanatsal kararlar verebilirsiniz. Örneğin, görüntünün çevresine kenarlık, anahat veya vurgu koymak istediğinizi varsayalım. Daha yüksek çözünürlükte görüntülendiğinde, bu iyi görünebilir, ancak ölçeklendirilmiş sürüm çamurlu veya tamamen etkisini kaybedebilir. Ancak el yapımı ise, efekti her boyuta kendiniz uygulayabilir ve etkisini koruyacağınızı garanti edebilirsiniz.

diğer düşünceler

Bulunan yerlerde kullanılan bir dizi çözünürlüğe özgü kaynak ve çözünürlüğe özgü bir sürüm bulunmazsa dinamik olarak ölçeklendirilmiş bir genel kümeyle karma bir yaklaşım da yapabilirsiniz. Bu, Android platformunun nasıl çalıştığı gibi. Bununla ilgili bazı bilgiler http://developer.android.com/guide/practices/screens_support.html


0

Yeniden boyutlandırmak, yeniden boyutlandırmaktan daha kolaydır, çünkü boşlukları doldurmak için yeni (ve muhtemelen yanlış) bilgileri icat etmek yerine atmak için bilgi seçersiniz. Bunu göz önünde bulundurarak, muhtemelen burada özel bir şeye ihtiyacınız yoktur ve görüntü işleme alanındaki çoğu standart yeniden örnekleme algoritması bir görüntüyü ölçeklemek için oldukça iyi çalışmalıdır: bilinear, Gaussian, Lanczos, vb.

Özellikle Lanczos, görüntüyü keskinleştirdiği için ilginç bir seçim olabilir ve muhtemelen birkaç pikseli bir araya getirirken kaybolacak ayrıntıları korur. Açıkçası bu, potansiyel olarak istenmeyen eserler getirmenin pahasına gelir.

Burada bazı görsel karşılaştırmalar: /gis/10931/what-is-lanczos-resampling-useful-for-in-a-spatial-context


3
-1, (genellikle elle hazırlanmış piksel piksel başına, bir piksel art küçültme için , örneğin , bu algoritmaların herhangi biri ile iyi bir nokta asla). En yakın komşu yaklaşımıyla önemli çizgi segmentlerini kaybedersiniz. İnterpolasyon ile bulanık görüntüler elde edersiniz. OP sorusuna elle yapmak dışında tatmin edici bir cevap olmadığından korkuyorum.
bummzack
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.