3D oyunumu ASCII sanatında nasıl oluşturabilirim?


19

Unity3D'de 3D oyun için bir Paskalya yumurtası oluşturmaya çalışıyorum. Oyunumu ASCII sanatında bir anlığına göstermek istiyorum.

İlk fikrim bunu yapmak için bir gölgelendirici oluşturmak, ancak bunun doğru yol olup olmadığından emin değilim.


libAA veya libCACA ile ( link1 - link2 resp.)
v.oddou

Yanıtlar:


20

Bunun için herhangi bir tak ve çalıştır çözümü bilmiyorum, ama burada piksel gölgelendiricisinde ekstra varlıklar olarak bir doku ile çalışan bir algoritma var .

Gereken varlık, en soldaki en karanlık ve en sağdaki en açık olan, bir dizi döşemeden oluşan tek bir sıraya sahip küçük bir dokudır.

O zaman ne olur (kare başına):

  • ASCII sürümünü yapmak istediğiniz arabelleği alın ve kutucuk boyutuna göre küçültün (8x8 kutunuz varsa görüntü her iki boyutta da 8 ölçeklenir).
  • Orijinal tam boyutlu arabelleğin yeni bir oluşturma hedefi oluşturun.
  • Aşağıdakileri içeren bir piksel gölgelendirici kullanın:
    • Tampon için örnekleyici girişi (örnekleme en yakın komşuya ayarlanmış olarak) ve karolar için örnekleyici girişi.
    • Fayans boyutu, fayans miktarı ve nihai çıktı çözünürlüğü için üniformalar
  • Piksel gölgelendiricisi daha sonra:
    • Ölçeği küçültülmüş tampondan gri skala değerini alın ( (col.r+col.g+col.b) / 3.0gözlerin nasıl çalıştığı tam olarak olmasa da muhtemelen yeterlidir)
    • Oluşturmak istediğiniz döşemeyi almak için bu bilgileri kullanın ( floor(grayscale * TILE_COUNT))
    • Çıktının piksel X / Y koordinatlarını hesaplayın ve bu modülü döşeme boyutunu (tileX / tileY) alın.
    • Renk olarak, döşeme tamponundan örneklenen değerin rengi olarak döndürün vec2( whichTile * TILE_WIDTH + tileX, tileY ) / vec2( TILE_WIDTH * TILE_COUNT, TILE_HEIGHT )

Bağlantılı sayfada birkaç örnek resim var, eklemeyi düşündüğüm bir şey hesaplanan gri tonlama değerinde biraz gürültü olurdu, bu yüzden büyük bir MMMMMMMMMMMMMMMMs bloğu değil

Güncellendi: gamedev sohbet odasında @Lokkij Unity için daha eksiksiz bir eğitim yayınladı: http://pentahelix.github.io/ASCII-Tutorial-Revisited/


Oldukça iyi çalışabilen basit bir çözüm (+1). Şimdi bu etkiyi kendim uygulamayı düşünüyorum.
Paul Manta

2
@Sata Kevin'in "[bu] gözler nasıl çalıştığı değil" yorumuna referansla, burada renkli bir görüntüyü gri skalaya
Paul Manta

1
Yoğunluk / parlaklığa ek olarak şekillerine göre karakterleri seçmek için kenar algılama gibi ek parametreler içerecek şekilde bunu genişletebilirsiniz.
DMGregory

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.