Katmanlar arasında dökülen 2B gölgeleri nasıl uygularım?


10

Farklı bir katmandaki nesneler tarafından oluşturulan 2d gölgeleri nasıl uygulayabilirim?

Catalin Zima'nın iyi bilinen eğitimindeki dinamik aydınlatma gibi DEĞİL :

resim açıklamasını buraya girin

Ama bu videodaki boruların gölgeleri gibi :

resim açıklamasını buraya girin

Platformun gölgesi ve bu videodaki karakter gibi :

resim açıklamasını buraya girin

Birçok katmanın olduğu bir sahnede ve farklı renklerde çok fazla ışığın aynı tür aydınlatmasını kullanmak istiyorum.

Bunu, katmanın arkasındaki katmanların üzerine siyah bir kopya çizerek ve gölgenin uygulandığı katmanlardaki deliklere göre ayarlayarak bunu hayal edebiliyorum. Ama umarım bunun için daha ucuz, piksel gölgelendirici tabanlı bir yaklaşım vardır.

Yanıtlar:


1

Bu maskeleme ile yapılabilir. Bunu yapmanın birden fazla yolu var.

Bunun bir yolu, ön plan öğelerinin gölge bir sürümünü oluşturmanın bir yoluna sahip olmaktır. Arka planı çizin. Ardından, ön plan öğelerini çizin, ışığın nasıl hareket etmesini istediğinize bağlı olarak, yalnızca siyah renkler çıkaracak şekilde hafifçe kaydırın. Ardından ön planı normal şekilde çizin.

Başka bir yol, ön planı gerçekte gördüğünüzden biraz daha fazla bir arabellek haline getirmektir. Sonra biraz "siyah" ve belki de bir bulanıklık geçişi yapın. Şimdi bu geçiş kümesinin çıktısını ve daha sonra ön plan arabelleğinin görünür bölümünü oluşturun.

Farklı açılardan birden fazla ışığı desteklemek için, önceki adımı birden çok kez yapabilir veya hepsini tek bir tamponda biriktirebilirsiniz. Matematik, elde etmeye çalıştığınız şeye göre değişecektir, ancak bu ilk videoda neler olup bittiğine dair ilk tahmin, ışığın konumunu kameranın konumuna (görünür alanın merkezi) karşı almaları ve ardından gölgeleri nasıl dengeleyeceğinizi belirlemek için o vektörü (ölçeklendirilmiş) kullanın. Gibi bir şey:

draw background
for each light intersecting viewing bounds:
  offset = light.position - camera.position
  offset *= SCALE FACTOR (0.25 maybe)
  draw shadow foreground at offset
draw foreground

Sahneye "daha yakın" olan ışıklar daha küçük bir ölçek faktörüne sahip olacaktır. Birden fazla derinlik istiyorsanız, orada çalışmak için bazı matematik var, basit geometrik şeyler.


Evet tam olarak kendimle geldim. Maskeleme için doğru terimi bilmiyordum. Ama belki gölge hacimlerinin 3B alanda nasıl çalıştığına daha çok benzeyen bir algoritma olmasını umuyordum ..
Berry

İçlerinde delik bulunan yüzeylerin üzerine gölgeler koyarken, yerleşik gölgeyi bunun arkasındaki katmanın üzerine dökmeniz gerekir. Ayrıca, şeffaflıkla çalışmak biraz zorlaşacaktır. Zaten bu sorunların tüm çözümlerini düşündüm! Ancak, özellikle çok sayıda katman (20) ve çok fazla ışık (50) ile uğraşırken gerçek zamanlı olarak uygulanmanın çok pahalı olacağını düşündüm. Bu yüzden farklı bir yaklaşım umuyordum.
Berry
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.