health

[tahir][bigposts]

vehicles

[tahir][bigposts]

business

[tahir][bigposts]

Game maker 3D dersleri 6: Dünya ayarları

Dünyayı incelemek
Varsayılan olarak negatif z ekseni boyunca odanın ortasına doğru bakarsınız. Genellikle 3D oyunlarda dünyaya nasıl baktığınızı değiştirmek istersiniz. Örneğin, bir first person shooter oyununda muhtemelen kameranın xy-düzlemi boyunca xy-düzleminin biraz üstünde bir pozisyona sahip olmasını istersiniz. Grafik terimlerinde doğru projeksiyonu ayarlıyorsunuz. Görünüş şeklini değiştirmek için aşağıdaki iki işlev var.

d3d_set_projection (xfrom, yfrom, zfrom, xto, yto, zto, xup, yup, zup) Dünyada nasıl görüneceğini tanımlar. Bakılacak noktayı, bakılacak nokta ve yukarı vektörünü siz belirlersiniz.

Bu fonksiyon biraz açıklama gerektirir. Projeksiyonu ayarlamak için önce baktığınız konuma ihtiyacınız var. Bu, parametrelerle belirtilir (xfrom, yfrom, zfrom). Sonra baktığınız yönü belirtmelisiniz. Bu, doğru bakmak için ikinci bir nokta vererek yapılır. Bu nokta (xto, yto, zto). Son olarak, kamerayı hala görüntü noktasından seyir noktasına kadar çevirebilirsiniz. Bunu belirtmek için bir yukarı vektörü, yani kamerada yukarı doğru olan yönü vermeliyiz. Bu son üç parametre ile verilir (xup, yup, zup). Bana bir örnek vereyim. İlk kişi olarak xy-düzleminde gezinmek için kullanabilirsiniz
{
  d3d_set_projection(100,100,10,200,100,10,0,0,1);
}

Böylece (100, 100) ve 10'uncu düzlemden (200,100) yöne bakarsınız. Yukarı vektör noktaları gerektiği gibi z-yönüdür. Bunu biraz daha karmaşık hale getirmek için, odanızda kameranın konumunu belirten bir örneğiniz olduğunu varsayalım. Bir akım (x, y) konumu ve bir yönü (ve hatta bir hız) olacaktır. Bunu şimdi aşağıdaki kodu kullanarak kameranız olarak belirtebilirsiniz:
{
  ile (obj_camera)
    d3d_set_projection (x, y, 10,
               x + cos (yön * pi / 180), y-sin (yön * pi / 180), 10,
               0,0,1);
}
Bu biraz karmaşık görünebilir. Fotoğraf makinesinin konumundan (x, y), 10 yerden bakıyoruz. Doğru yönde bir nokta belirlemek için biraz aritmetik yapmamız gerekiyor. Bu nokta sonraki üç parametre ile gösterilir. Son olarak yukarıdaki gibi yukarıdaki vektörü kullanıyoruz.

Önemli bir not! Game Maker bir oda çizmeye başladığında, görüntü noktasını varsayılan konuma geri döndürecektir. Yani sahne çizerken yapmanız gereken ilk şey, istediğiniz projeksiyona vermektir. Bu bir çizim etkinliğinde yapılmalıdır!

Yukarıdaki işlevin genişletilmiş bir sürümü de vardır:
d3d_set_projection_ext(xfrom,yfrom,zfrom,xto,yto,zto,xup,yup,zup,angle,aspect,znear,zfar)Bu işlevin genişletilmiş bir versiyonunu da içine alan görüş alanını tanımlayan açıyı, en boy oranını belirtirsiniz. Görünümün yatay ve dikey boyutu ile yakın ve uzak kırpma düzlemleri arasında.
Ek parametreler aşağıdaki gibi çalışır. Kamera pozisyonunu belirttiyseniz, bakacağınız noktaya ve yukarı vektöre baktığınızda, kameranın merceğinin ne kadar genişliğini hala değiştirebilirsiniz. Buna görüş alanı denir. Makul bir değer 40 ila 45 derece arasında bir yerdedir. Ama istersen bunu değiştirebilirsin. Ardından, yatay ve dikey projeksiyon arasındaki en boy oranını belirtebilirsiniz. Normalde, oda veya görünümün görünüm oranıyla aynı şeyi kullanmak istersiniz. 640/480. Son olarak, kırpma düzlemlerini belirtebilirsiniz. Kameraya daha yakın olan nesneler çekilmez. Zfar'dan başka nesneler için de benzer. Bu parametrelerin makul değerlere ayarlanması önemlidir çünkü bunlar aynı zamanda z-karşılaştırmasının kesinliğini de etkiler. Aralığı çok büyük yaparsanız, hassasiyet daha da kötüleşir. Varsayılan 1 ve 32000 kullanırız. Znear 0'dan büyük olmalıdır!

Bazen, 3D olmadığında kullanıldığı gibi geçici bir ortografik projeksiyona ihtiyacınız vardır. Ya da varsayılan perspektif projeksiyonuna geri dönmek istiyorsunuz. Bunun için aşağıdaki işlevleri kullanabilirsiniz:


d3d_set_projection_ortho (x, y, w, h, açı) Odadaki belirtilen alanın, belirtilen açı üzerinde döndürülmüş normal bir ortografik izdüşümünü ayarlar.
d3d_set_projection_perspective (x, y, w, h, açı) Odadaki belirtilen alanın normal perspektif izdüşümünü belirtilen açı üzerinde döndürür.

Bunun için standart bir kullanım, ör. puanı veya diğer yönlerini gösterin. Bunu yapmak için bir ortografik projeksiyon belirledik. Ayrıca, gizli yüzey kaldırmayı geçici olarak kapatmak zorundayız, çünkü mevcut derinlik değerinden bağımsız olarak bilginin çekilmesini istiyoruz. Aşağıdaki örnek, skorla bir bindirmenin nasıl oluşturulacağını gösterir.
{
  draw_set_color(c_black);
  d3d_set_projection_ortho(0,0,room_width,room_height,0);
  d3d_set_hidden(false);
  draw_text(10,10,'Score: ' + string(score));
  d3d_set_hidden(true);
}

No comments:

Post a Comment