Önceki başlık :: Sonraki başlık |
Yazar |
Mesaj |
someuser
Kayıt: Apr 18, 2005 Mesajlar: 22
|
Tarih: Mon Dec 05, 2005 1:08 pm Mesaj konusu: directx te kamera ve nesne posizyonu |
|
|
arkadaşlar directx te küçük bir uyugulama var. kameranın posizyonu, açısı, rotasyonu ne olursa olsu ekranın tam ortasına bir quad çizdirmek istiyorum. bunu en pratik şekilde nasıl yapabilirim. matrix mi kullanmak lazım? quad ın ilk posizyon değerlerini dosyadan yükledikten sonra kameraya göre kendini güncellemesi lazım. Bunu bir hud gibi ya da bir silahın ekranın ortasındaki hedef işareti olarak ta düşünebilirsiniz.
teşekkürler |
|
Başa dön |
|
|
DG
Kayıt: Mar 06, 2004 Mesajlar: 351 Nereden: Eskişehir
|
Tarih: Mon Dec 05, 2005 1:12 pm Mesaj konusu: |
|
|
"ID3DXSprite" diye bir yapı var. İstediğin şekilde ekrana sprite basmak için (z-sıralı bile olabilir) kullanabilirsin. Kameradan bağımsız, ekran uzayında hareket edebilirsin. Güzel bir arabirim, işini fazlasıyla görür. |
|
Başa dön |
|
|
devreci
Kayıt: Mar 04, 2005 Mesajlar: 256
|
Tarih: Mon Dec 05, 2005 1:16 pm Mesaj konusu: |
|
|
mesela diğer bi yöntem matrix'i indendity olarak ayarla ve konumu
_41, _42, _43, e yaz sonra çizdir |
|
Başa dön |
|
|
DG
Kayıt: Mar 06, 2004 Mesajlar: 351 Nereden: Eskişehir
|
Tarih: Mon Dec 05, 2005 1:42 pm Mesaj konusu: |
|
|
devreci demiş ki: |
mesela diğer bi yöntem matrix'i indendity olarak ayarla ve konumu
_41, _42, _43, e yaz sonra çizdir |
Bu hangi matris için? Local-World matrisi için ise bu yöntem yemez. Çünkü sadece translation yapıyorsun. Yani kameranın belirtilen quad'a düz bakmasını bırak, görüntü piramiti içinde bile olmayabilir. Sprite arabirimi kullanılmayacaksa ters dönüşümlerle çarpmak gerek. ( a . projeksiyon' .kamera') Tabii projeksiyondan çıkmak için bir derinlik değeri uydurmak gerek. Bunu far plane'in önünde olmayacak şekilde ayarlamak lazım.
Veya da quad'ı kameranın önünde yaratıp gerisini akış hattına bırakmak lazım. |
|
Başa dön |
|
|
devreci
Kayıt: Mar 04, 2005 Mesajlar: 256
|
Tarih: Mon Dec 05, 2005 1:48 pm Mesaj konusu: |
|
|
Alıntı: |
Bunu bir hud gibi ya da bir silahın ekranın ortasındaki hedef işareti olarak ta düşünebilirsiniz. |
hocam buna göre cevap verdim mesela söyle
[1 0 0 0
0 1 0 0
0 0 1 0
0 0 1 1 ]
yapıp settranform (world) derse (z _43 e dörtgen biraz ileride olsun diye 1.0 verdik çünkü gözle bitişik olursa çizilmez, projection near plane yüzünden ) |
|
Başa dön |
|
|
someuser
Kayıt: Apr 18, 2005 Mesajlar: 22
|
Tarih: Mon Dec 05, 2005 1:56 pm Mesaj konusu: |
|
|
D3DXMatrixIdentity(&m);
m._41 = pozisyon.x;
m._42 = pozisyon.y;
m._43 = pozisyon.z;
kamera->SetTransform(D3DTS_WORLD, &m);
ancak quad bu ayarlamadan etkilenmiyor. kamera dönüşünde kayboluyor.
class yapısını quada göre yaptıgım için sprite a geçmem şu an mümkün değil. bu nedenle başka şekilde halletmem gerekiyor. |
|
Başa dön |
|
|
DG
Kayıt: Mar 06, 2004 Mesajlar: 351 Nereden: Eskişehir
|
Tarih: Mon Dec 05, 2005 1:58 pm Mesaj konusu: |
|
|
devreci demiş ki: |
Alıntı: |
Bunu bir hud gibi ya da bir silahın ekranın ortasındaki hedef işareti olarak ta düşünebilirsiniz. |
hocam buna göre cevap verdim mesela söyle
[1 0 0 0
0 1 0 0
0 0 1 0
0 0 1 1 ]
yapıp settranform (world) derse (z _43 e dörtgen biraz ileride olsun diye 1.0 verdik çünkü gözle bitişik olursa çizilmez, projection near plane yüzünden ) |
Anlıyorum da, senin yazdıkların dünya kordinat sisteminde (->SetTransform(D3DTS_WORLD, ...))
Dünya uzayında sprite'ın kordinatlarını bulmak için vertexleri (VERTEXi . SeninMatris . Tersi(Kamera) ) gibi bir dönüşüme sokmak zorundasın ki tekrar kamera dönüşümü uygulandığında tam kameranın karşısına gelsin. |
|
Başa dön |
|
|
devreci
Kayıt: Mar 04, 2005 Mesajlar: 256
|
Tarih: Mon Dec 05, 2005 1:59 pm Mesaj konusu: |
|
|
abi indendity yaptıkdan sonra 41=0; 42=0; 43=1.0; veya daha fazla yap
pozisyonu koymuşun sen |
|
Başa dön |
|
|
someuser
Kayıt: Apr 18, 2005 Mesajlar: 22
|
Tarih: Mon Dec 05, 2005 2:03 pm Mesaj konusu: |
|
|
ha pardon hocam haklısın. düzelttim orayı. ancak farkeden bi şey olmadı. |
|
Başa dön |
|
|
devreci
Kayıt: Mar 04, 2005 Mesajlar: 256
|
Tarih: Mon Dec 05, 2005 2:04 pm Mesaj konusu: |
|
|
@DG : abi sripte'yi bilmem üçgenlere göre konuşuyorum |
|
Başa dön |
|
|
DG
Kayıt: Mar 06, 2004 Mesajlar: 351 Nereden: Eskişehir
|
Tarih: Mon Dec 05, 2005 2:23 pm Mesaj konusu: |
|
|
Eskiden (2B çağında) ekrandaki animasyonlu görüntülere sprite derlerdi. Bunların alt alta, üst üste animasyonlarından oluşurdu oyun. Şimdi ise ekran uzayında konuşlandırılmış quadlara sprite deniyor. Yani ne olduğu farketmez: üçgen, çizgi, nokta, dörtgen.
@devreci:
Senin yaptığın dönüşümle sadece açık kırmızıyı elde edersin (->SetTransform(D3DTS_WORLD, SeninMatris) )
Quad'ı kameranın önüne çekmek için SeninMatris * Tersi(Kamera) dönüştürmek gerek (koyu kırmızı)
------------------------------------
Figür çizimim berbat |
|
Başa dön |
|
|
devreci
Kayıt: Mar 04, 2005 Mesajlar: 256
|
Tarih: Mon Dec 05, 2005 2:26 pm Mesaj konusu: |
|
|
tamam hocam int cafede inadınıza kod yazıyorum |
|
Başa dön |
|
|
devreci
Kayıt: Mar 04, 2005 Mesajlar: 256
|
|
Başa dön |
|
|
devreci
Kayıt: Mar 04, 2005 Mesajlar: 256
|
|
Başa dön |
|
|
devreci
Kayıt: Mar 04, 2005 Mesajlar: 256
|
Tarih: Mon Dec 05, 2005 3:23 pm Mesaj konusu: |
|
|
Bu arada aynı şeyden mi bahsediyoruz ? |
|
Başa dön |
|
|
|