3D oyun haritası nasıl saklanır ve kullanılır?


9

Programcıyım ancak henüz oyun geliştirmedim.

Çeşitli 3D oyunlar oynadım ve her zaman alan Haritasının nasıl saklandığını ve oluşturulduğunu merak ettim.

Bazı hızlandırma kartlarının gerekli bir donanım olduğunu biliyorum, ancak ekranda tek bir titreme olmadan görünümün tam olarak nasıl değiştiğini biliyorum.

Bunu anlamama yardımcı olacak herhangi bir çevrimiçi materyaliniz var mı?

Teşekkürler

Yanıtlar:


9

Genel olarak, dünya çok sayıda üçgenin haritasını çıkarır ve harita bu üçgenlerin bir listesi ve her bir tepe noktasının dünyasındaki konumudur. Onları çizme süreci:

  • 'Kameranın' konumunu ayarlayın - eğer dünyada durduysanız, bu dünya konumunda olacaksınız
  • Üçgen köşeleri 'kamera boşluğuna' dönüştürün
  • Üçgenleri 'kamera boşluğundan' 'ekran boşluğuna' dönüştürün - bu, perpektif etkinin gerçekleştiği yerdir (uzak şeyler daha küçüktür). Üçgenler bu noktada 2B olur.
  • 2D üçgeni gizli bir ekrana çizin.
  • Tüm üçgenler çizildiğinde, ekranı oynatıcıya gösterin.

Son adım genellikle monitörün kare hızına bağlıdır, böylece gizli ekranı gösterme işlemi v-blank aralığı sırasında yapılır - katot ışın tüpü monitörlerinden türetilen bir kavram, katot ışınının aşağıdan sağa hareket etmesine izin verir solda, bu hızlı bir şekilde gerekliydi, ama hemen değil, ışın tüpünün arkasındaki sapma bobinlerindeki voltajları değiştirdi.

Bu gerçekten basit bir yöntem. Yüksek performans elde etmek için gizli yüzey çıkarma, oklüzyon, görünür küme belirleme vb. Gibi şeyler eklemeniz gerekir. Ne çizileceğine karar vermek için birçok algoritma var.

Ayrıca, dünyanın üçgenlerden oluştuğunu söyledim, ancak diskte bu şekilde saklanmayabilir. Genellikle ekrana çizilen üçgenler, çalışma zamanında yükseklik haritaları, spline'lar, tessalasyon, geometrik ilkeller (örn. Bir küre, kutu, vb.) Gibi yüksek dereceli ilkellerden tanımlanır.

Özel donanım gerekli değildir - birçok erken 3B oyunun hepsini yazılımda yaptı (FPU'su olmayan 8 bit CPU'larda bile). Sadece daha hızlı ve daha kolay hale getirir.

Çok basit bir soru. Kolay cevap yok.


0

Görünüm, çift arabelleğe alma nedeniyle ekranda titreme olmadan değiştirilir, Arka tampondaki tüm verileri işleyin, daha sonra işlendikten sonra ön tamponda değiştirirsiniz.

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.