Sprite ve Texture arasındaki fark nedir?


27

Üniversiteden dolayı ödevim var ve görevim video oyunlarında kullanılan dokuları ve bunların nasıl geliştiğini tartışmak.

Asıl sorum şu, bir sprite kullanmakla veya diğer doku metotlarını kullanmakla arasındaki temel fark nedir?

Kendim üzerinde küçük bir araştırma yaptıktan sonra, Sprite'ların görüntüleri tek bir dosyada depoladığı ve animasyonlar vb. Şimdi, modern oyunlarda, sprite'ların teknoloji ilerledikçe daha az kullanılma eğiliminde olduğuna inanıyorum ve kabartma eşleme gibi diğer dokular da mevcut. Her ne kadar sprite bugün hala bir sağlık barı veya uzun mesafeli dokular gibi özellikleri barındırmak için kullanılmaktadır.

Ancak, doku kullanmanın sprite üzerinden temel avantajları nelerdir?



5
Biri bir içecektir ve diğeri değildir (bu şaka için özür dilerim)
CAD97 '

Yanıtlar:


37

Günün sonunda, sprite ve dokular sadece görüntülerdir - raster renk verilerinin blokları (bazen görüntü olmayan verileri içine koymak için sınırları biraz zorlasak da). Buradaki ayrım büyük ölçüde onları nasıl kullandığımızla ilgilidir.

Genelde, görüntüyü (veya birçok ayrı parça içeren bir görüntünün bir bölümünü) "hedef" olarak adlandırmak istiyorsak, perspektif distorsiyonu olmadan doğrudan ekranın 2B ızgarasına çekilmesi gerekiyor. Bu nedenle koşu oyunda gördüğünüz şey, temel olarak görüntü dosyasında gördüğünüz şeydir (renk tonlama / palet değiştirme / şeffaflık efektleri dışında). Bu, 2B oyunlarda arka plan döşemeleri ve karakterleri / etkileşimli nesneler, parçacıklar ve eski ağaç ve çalı işleme stilleri gibi "pano" kartları ve ayrıca 3B oyunlardaki kullanıcı arayüzü öğeleri ve simgeleri için de geçerlidir.

Tersine, 3B nesnenin çokgenleri için perspektifte çizilebilecek yüzey ayrıntılarını sağlamak için bir görüntü kullanıyorsak, bu görüntüye genellikle "doku" diyoruz. Bu isim, artık parmak uçlarınızla hissedebileceğiniz bir dokuda olmasalar bile - yansımalar, bozulma haritaları, bindirmeler, maskeler veya benzeri şeyler gibi - başka bir şeyin oluşturulmasını modüle etmek için görüntü verisinin diğer kullanımlarına da taşınmıştır. resimlerin genel amaçlı kullanımı, daha spesifik olarak adlandırmak istemediğimiz gibi, gevşek isimlendirme sistemimizde "doku" altında toplanma eğilimindedir.

Bu, iki bulanık arasındaki ve özellikle katı olmayan sınırlar yapar. Bir patlama efekti için reklam panosu parçacıklarını çizmek için kullanılacak bir dizi yangın ve duman teli içeren bir resme sahipsem, bunun yerine "spritesheet" veya "flipbook texture" olarak da bahsedebilirim. Veya bir 2D oyun için tüm arka plan döşemelerini içeren bir fayans setim varsa, 2D oyunumdaki verileri ve kullanımı ayırt edilemez olsa da, bugün 3B oyunlar için geliştirilen atlas dokularına benzetilerek "doku atlası" diyebilirim. başka birinin elektronik sayfa dediği şeyden. Amacıyla ekrana tek bir görüntü sunmak olan bir geometri dikdörtgenine sahipsem, kullanımı hakkında vurgulamak istediğim şeye bağlı olarak "dokulu dörtlü" veya "sprite" diyebilirim.

(Bu son örnekte, "sprite" ifadesinin hem oyun varlıklarımızdaki kaynak resim segmentini hem de bu resim segmentini kullanan bir render oyun varlığı örneğini (bu terminolojiyi biraz tutarsız kullandığımız şekilde) ifade ettiğini unutmayın.

Bazı motorları ve kütüphaneleri bu ayrımı kendi isimlendirmelerinde niyet oluşturmada kodlayan kodlar bulacaksınız. Örneğin, Unity'de bir görüntü öğesini "Sprite" olarak içe aktarmayı seçebilirsiniz - bu, kullanıcı sayfası görüntüleri veya 2D oyun varlıkları için spritesheet dilimleme ve paketleme ve referans verme yeteneği gibi genel olarak istenen ekstra seçeneklerin bir kümesini sağlar görüntünün bölümleri ve nesne ayarlarında ayrık varlıklar olarak görüntünün bir kısmı. Bu durumlarda "Sprite" genellikle "görüntü (doku) artı meta veri " anlamına gelir - ancak yine de kaputun altındaki sıradan dokularla aynı şekilde yapılır. Ekstra ambalajlama bir rahatlıktır, bu nedenle görüntüyü kullanmak istediğimiz her yerde UV ofsetlerini ve benzerlerini mikro yönetmemize gerek yoktur;


"Dokular" genellikle saydam pikselleri içeriyor mu veya içeriyor mu? Yüzeyin kamera eksenine dik olsun veya olmasın, "piksel" olarak saydam pikseller içeren piksel eşlemeli düz bir yüzey gibi davranan bir nesne olduğunu düşünürdüm.
supercat

2
Onlar "doku" unvanından vazgeçmeden kesinlikle yapabilirler. İnsanların alfa testi / dithered veya alfa harmanlanmış saydamlık ile oluşturulmuş olsalar bile, bir "yeşillik dokusu" veya "çit dokusu" olarak oluşturulması, söylenmesi, yaprakları veya bir zincir bağlantı çitinin görüntüye atıfta bulunmaları yaygındır. . Kameraya bakan bir pano olarak işlenirse, yaprak kasasına "yaprak sprite" de diyebiliriz, ancak 3D çit gibi perspektif geometrisinde kullanılıyorsa sprite adını uygulamak alışılmadık olur.
DMGregory

Opak doku eşlemeli nesneleri oluştururken, bir işleme motorunun, opak yüzey içini gizleyeceğinden içlerinin nasıl görüneceği konusunda endişelenmenize gerek yoktur. Bir ağaç veya zincir bağlantı çit gibi bir şeyin en iyi opak kısımlar yapılarak ve sonra kısmen şeffaf kısımları ayrı, kısmen şeffaf yüzeyler olarak gösterilmesiyle elde edilebileceğini düşünüyorum. Bazı insanların fotoğraf makinesiyle yüzleşmezse "sprite" dediği şeyle eşleşmese de, "normal" nesnelerle aynı olmazlardı.
supercat

Gerçekten de genelde böyle yapılır. Çit direkleri ve gövdeleri için geometri opak geçişte, ardından da çit yayları ve yeşillik / dalların geometrisi daha sonra alfa testinde veya alfa harmanlanmış geçişte gerçekleştirilir.
DMGregory

1
Genellikle "şeffaf doku" veya "alfa doku" / "alfa ile doku" - belki de bazen "kesikli" / "kesikli doku", eğer kenarları sertleştirilmiş / alfa test edilmiş bir şeffaflıksa duyuyorum.
DMGregory

7

Bir sprite bilgisayar oyunları tarihinin bir kalıntıdır. 8-bit Ataris'i yaklaşık olarak düşünün. 1980. Genellikle, ekran üzerinde bir konuma sahip olan ve ekran üzerinde belirli bir şekilde birleştirilen kapsama bit maskesi (veya özel bir "saydam" renk) olan küçük bir görüntü. Kapsama haritası uyarınca, sprite içinde “delik” bulunan delikler. Genellikle "sadece işe yarar" bir şekilde ve genellikle üzerine yazılan orijinal ekran piksellerini kaydederek ve geri yükleyerek etrafta dolaşan maddelerin yanılsamalarına kolayca izin verecek şekilde.

Eskiden sprite'ların bilgisayarlarda donanım özelliği olduğu, eskiden çok sınırlı sayıda bunlara sahip olabileceğiniz (ve örtüşmeyen, yay!) Olmak için kullanılan ekran içeriği otomatik olarak kaydedilmiş / çizilmemiş ve eskiden çok küçük (16x16 gibi) ve sınırlı oldukları için kullanılır.

Fare imleci bugünlerde bir sprite en yakın olan şeydi (ve bazı sistemlerdeki ~ 10-15 yıl öncesine kadar gerçek bir sprite idi ).

Günümüzde, böyle bir şey gerçekten yoktur, ancak kelime kalır. Sprite, temel olarak, bir yere çizdiğiniz (kompozit) küçük bir 2D görüntüdür. Genellikle küçük bir dokulu dörtgen çizerek.

Öte yandan bir doku, biraz daha modern grafik API'lerde kullanılan okunabilir bir görüntü kavramıdır. Veya, daha kesin olarak, bazı yollarla örneklenebilen, boyut gibi bazı ek veriler içeren bir bellek bölgesi (modern API'ler açısından "tampon"). Genellikle, ancak mutlaka bir grafik işlem biriminde çalışan bir gölgelendirici tarafından değil. Genellikle, ancak zorunlu olarak, normalize edilmiş koordinatlarla ve genellikle ancak zorunlu olarak filtrelemeyle değil (ve mipmaplama ve bazı özel sınır modları ve, ve, ve ...).

Bu nedenle, bir doku sprite çizmek için kullandığınız verinin kaynağı olabilir.


3
Donanımda uygun spritelar üst üste gelir, bu nedenle bellekteki video verileri değişmez ve aynı modu kullanmak zorunda kalmazlar (örneğin C64'te, bir metin arka planının üzerinde bitmap sprite'lar olabilir). Bitmap'i kaydederek ve verileri değiştirerek oluşturulan nesnelere BOB (Blitter OBjects) adı verilir.
Simon Richter

1
@SimonRichter: C64'ü tanımadım, oyuncak olarak kullandım, ama Amiga'da da vardı, 8 tanesini doğru hatırlıyorsam. Donanım düzeyinde nasıl çalıştığından emin değilim, ancak doğrudan kaplama da olabilirdi (muhtemelen görünüyor). ST günü, A00D/ AOOCişlemkodu sprite kesinlikle / undraw karetamponu modifiye tür çekiliş idi. BOB'ler, evet, bu da vardı, tipik Amiga meselesi. Günümüz dokusuna en yakın şey buydu, sanırım (herhangi bir boyutta, bir kez grafik işlemcisine yükle, birçok kez çizin).
Damon

4

Elmalar ve portakallar karşılaştırması. Bir doku sadece bir görüntüdür, sprite ise bir görüntüdür ve nasıl kullanılır.

Hala 2d oyunlar için sprite kullanıyoruz ve partikül efektlerinde 3B oyunlarda ortaya çıkıyorlar. Günümüzde, sprite'ler genellikle belirli bir dokulu dörtlü türü ya da (nadiren sanırım) tek bir üçgeni ifade eder. UI elemanları bile çoğu zaman dokulu dörtgenlerdir - ki ben sprite diyeceğim.

Sprite'ların belleğe önceden yüklendiği ve pullar gibi ekrandaki noktalara (kelimenin tam anlamıyla, ekran belleği) harmanlandığı (bayt for bayt mem kopyalandı) durumdu. Bir şekilde, yine de yapıyoruz. Sprite animasyonları için, bölümleri oluşturulacak dokulardan dörtlü olarak kopyalamak için kaynak dokunun örnek koordinatlarını sık sık değiştiririz. Kabartma eşleme gibi gölgelendirici efektleri, aynı şekilde dokulardan numune alır ve böylece spritlerde parlama efektleri için hala kullanılabilir.

2d oyunlara daha özel, bu stilistik bir seçim. Örneğin, sprite kullanan bir oyunda elle çizilmiş veya boyanmış karakterler oluşturabilir. South Park oyunları teknik olarak bunun bir örneği olabilir.

Yani, sadece bir sprite yerine sadece bir doku kullanamazsınız .


3

İşte basit ve kısa cevap. Sprite'ı genellikle, uyguladığı fonksiyonlar ve dokularla birlikte tüm nesnenin kendisi olarak düşünüyorum. Doku gelince, onu sadece bir şeye uygulanabilecek bir görüntü olarak görüyorum.

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.