Çok katmanlı bir 2d tilemapta ışıkları ve gölgeleri nasıl uygulayabilirim?


11

Sıfırdan izometrik bir oyun yazma sürecindeyim ve nasıl ışık ve gölge ekleyip ekleyemeyeceğimi bilmek istiyorum.

Şimdiye kadar sahip olduğum kod burada bulunabilir , ancak şu anda haritaların doğru / yanlış değerlerin basit 3d dizileri olduğunu bilmek yeterli olmalıdır . İşte ortamın bir çekimi:Çok katmanlı tilemap ekran görüntüsü

Tek bir katemap olsaydı, düz ileri olurdu. 2d'de gerekli olan basit rekorları anlayabiliyorum.

Ancak, haritalarımın mağara benzeri alanların yanı sıra birden fazla yükseklik seviyesine sahip olduğu düşünüldüğünde, bunun için ikna edici gölgeler yapmaya nasıl devam edeceğimi bilmiyorum. Belki de blok başına bir çözüm tek gerçekçi yoldur?


Önceden pişirilmiş veya dinamik olarak oluşturulmuş aydınlatma mı arıyorsunuz? Oyuncu içeri girerse “mağara benzeri alanlar” kesik mi gösteriliyor veya ışığın tavanı da dikkate alması gerekiyor mu? Her döşemenin ikili aydınlatılmış / karanlık olmasını veya bir çeşit kesirli değere sahip olmasını mı bekliyorsunuz?
Anko

1
@Anko 0 - 1.1 gibi kesirli bir şeyi tercih ederim (patlamalar gibi aşırı parlak alanlar için), ancak gerçek enterpolasyon veya bunun gibi bir şey olmadan sadece blok tabanlı olabilir. Gerçekten dinamik olmasını ve birden fazla ışığı desteklemesini istiyorum. Ve "mağara benzeri" / çatılı alanlar kesilmiş olarak gösterilecek olsa da, algo ışık hesaplanırken gösterilmeyen blokları dikkate almalıdır. Örneğin, bir evde yürürseniz, çatı blokları kaybolur, ancak hala gölgeli olmalıdır.
Danie Clawson

Mağaralar ve yükseklik ile böyle bir çözüm arıyorsanız, 2D'nin hiçbir şeye sahip olmadığı görülüyor. Kamera her zaman bir Kuzey-45º aşağı yöne baksa bile, muhtemelen tam bir 3D çözümü arıyorsunuz. Şablon-gölge veya benzeri tekniklere bakmalısınız.
Adrian Maire

Ben ikinci @AdrianMaire uygun 3d hesaplamalar yapmak gerekir ama bir "kiremit" yüzleri arasında enterpolasyon yoksa bazı kısayollar yapmak gerekir. İnterpolasyon yapmıyorsanız muhtemelen ışın kullanabilirsiniz.
NeomerArcana

Şu anda bir cevabı sindirmek için zihnim yok, ancak bu blog yazısında yükseklik haritası arazisi için görüş hattı belirlemesi hakkında tökezledim . Aradığın gibi geliyor.
Anko

Yanıtlar:


1

Sadece avatarınızın şu anda bulunduğu seviye için olsa bile, önce 2d gölgelerin çalışmasını tavsiye edebilir miyim. Koda bu şekilde bakıp çalışmaya başlamak daha kolay olacaktır.

2d kiremit haritalarına birkaç şekilde gölgeler uyguladım. Eric Lippert tarafından Microsoft'ta tanımladığım bir gölge yayınlama yöntemi oldukça iyi çalışıyor.

Ve bu tür bir şeye ilk kez baktığımda kendime yaptığım diğer yol, görünür karoları ve fayans kenarlarını dikey olarak süpürmek ve sahneyi en az sayıda kenarda tanımlayan kenarlar (ve belki de köşeler iirc) üretmekti. Daha sonra gizli kenarları kesebilir ve biraz duvar göstermek istiyorsanız gömme gölgeler gibi özel gölgeleme özelliklerini oluşturabilirsiniz. Ardından gölge geometrinizi (projektif gölge dökümü?) Oluşturun ve üste getirin.

Ama bu fikri 3B'ye götürmeye çalışırsam, 3B'de yapmak daha kolay olur. Eric Lippert tarafından açıklanan yöntem muhtemelen 3B'ye dönüştürülebilir. Ama bence bunu 3d olarak yapmanın pahalı olduğunu göreceksiniz. Belki de Brogue'un kaynak koduna da bir göz atın . 2d görünürlük / gölge dökümü için daha verimli bir uygulamaya sahip olabilir.

İyi şanslar.

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.