Gönderen Konu: Problem  (Okunma sayısı 9732 defa)

Problem

« : 09.06.2010 21:24:53 »
Hızlı düğmeleri aç

paradox

İleti: 134

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
Fps oyunlarında merminin duvarda iz bırakması şeklinde birşey yapıcam.
Merminin çarptığı koordinatlar ve normali var elimde..
Bu noktaları quad yada plane mesh'ine rotasyon vermek için nası kullanabilirm?
mesh'in yüzeye paralel olmasını istiyorum yani.

Not:Aslında bu tür şeylerle uğraşmayı yapamasamda seviyorum..buna fazla uğraşma zamanım olmadı ve çarpışma , normalller falan derken baydım birazda:D
Nighlorda msn'den yardımcı olmuştu sağolsun ama fazla üzerinde duramamıştım gene..
« Son Düzenleme: 09.06.2010 21:34:09 Gönderen: paradox »

Problem

« Yanıtla #1 : 09.06.2010 21:54:31 »
Hızlı düğmeleri aç

paradox

İleti: 134

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
şimdi aklıma bi yöntem geldi.
mermi duvara çarptı..o anda quad meşinin pozisyonun facen normalinin doğrultusunda bi yere yerleştiricez..dağa sonra bu iki nokta arasında atan2f(x1-x2,z1-z2) ile y rotasyonu hallolur..X rotasyonu için biey düşünmedim henüz:D

Problem

« Yanıtla #2 : 10.06.2010 03:24:56 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
paradox, genellikle iz mesh'de değil texture'da kalır. olayı mesh ile çözmek istediğine emin misin? ben de daha önce böyle birşey yapmadığım için tahmin yürütebiliyorum. normalde ekran kartının hafızasında tekrar eden bir texture yalnızca tek kopya olarak durur ve her yerde onu kullanırsın. benim aklıma gelen duvara kurşun çarpınca eğer daha önce o yüzeye bir kurşun çarpmamışsa texture'ın bir kopyasını çıkarıp o yüzeye unique olarak vermek ve texture koordinatları üzerinde çarpma noktasına bir kurşun deliği eklemek. eğer çok fazla texture kopyası çıkar ve çok hafıza harcanır endişesi oluşursa sanırım bunun çözümü de ya kurşun deliklerinin bir timer ile bir süre sonra yok edilmesi (kopya texture'ın ekran kartı hafızasından silinip, orjinal texture'a dönülmesi) ya da haritada belli bir alandaki textureların bu şekilde hafızada tutulmaları, bir noktadan çok uzaklaşıldığında otomatik olarak textureların resetlenmeleri.
 
ben olsam önce kısa bir araştırma yapardım ama araştırma yapmasam aklıma gelen yöntemler bunlar olurdu.
 
not: ID Software'ın Tech 5 engine'i ile ilgili birşeyler okurken tüm haritanın 1000000x1000000 pixellik tek bir texture olmasından falan bahsediliyordu. Avantaj olarak da ayak izleri, kurşun delikleri v.b. şeylerin artık sonsuza dek kalabileceği, sonuç olarak tiled texture mantığı birşeyin kalmadığından bahsediliyordu. tabii texture'ın tamamı hafızada tutulmuyor, stream loading yapılıyor. Ama yine de yukarıda yazdıklarımda etkili olan "hmmm" dedirten bir durum da Tech 5 engine'dir.

Problem

« Yanıtla #3 : 10.06.2010 11:37:21 »
Hızlı düğmeleri aç

endo

İleti: 687

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.moldibi.com
@paradox: ben pek 3d olaylarıyla ilgililenmiyorum ancak, daha geçen gün şansa tam senin bahsettiğin şeyin nasıl yapıldığını anlatan bir dokümana rastladım, pm'den mailini gönderirsen sana göndereyim.
- endo of glance -

Problem

« Yanıtla #4 : 10.06.2010 12:05:33 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Abi sen illa da kurşun delikleri içe göçmüş gibi görünsün diyorsan texture haricinde parallax mapping kullanabilirsin. Ancak bence kesinlikle mesh'i editlemek doğru yol değil. Meshi editlemek daha güçlü silahlarla duvarı gerçekten parçalaya parçalaya diğer odaya geçme durumu kadar abartılacaksa gerekli bence. Böyle bir oyun seneler önce piyasaya çıkmıştı, herkes de "yuh!" demişti hatırlıyorum. Bence şu anda yapmak istediğin için texture üzerinde oynaşma + kolay olsun diyorsan bump mapping, kaliteli olsun diyorsan parallax mapping senin işini çözer.

Problem

« Yanıtla #5 : 10.06.2010 13:52:45 »
Hızlı düğmeleri aç

paradox

İleti: 134

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
endo , teşşekürler.



skate ,abi sanırım yanlış anlaşılma olmuş..Resim üzerinde anlatayım olayı..





1 : Duvar

2: mermi kaplamalı quad meshi

3 : aynı meshin  paralaxlı versiyonu

Yani duvar meshi gene aynı..olaylar texture verilmiş quad  ile alakalı..
Sorunda işte o quadı yüzeye paralel yapıştırmak..

Problem

« Yanıtla #6 : 10.06.2010 15:03:15 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
sorunun yanıtı trigonometrik hesaplarla çözülür ancak ben sana daha basit bir yöntem tavsiye edeceğim. bu yöntem duvarların 90 derecelik kenarlara sahip dikdörtgen ya da kare gibi quadlardan oluştuğu durumda işe yarar ki genel olarak böyle kullandığını varsayıyorum. kurşunun çarptığı quad'ın koordinatlarını kullanarak interpolasyon ile kurşunu istediğin yere yerleştirebilirsin. interpolasyonun sonucunda elde edeceğin quad her zaman bu quad ile paralel, hatta aynı düzlemde çıkacaktır.
 
işin daha genel çözümü ise quad'ın world coordinate system'e göre hangi üç açıyla durduğunu belirleyip quad'ı da böyle rotate etmektir elbette ki. formülünü soruyorsan ezbere bilemeyeceğim, zaten böyle şeyleri plain trigonometri ile değil matrislerle çözüyorlar genellikle. ben hala trigonometriden ilerleyenlerdenim, sen daha iyi bir tutorial bulursun artık :)

Problem

« Yanıtla #7 : 11.06.2010 00:26:05 »
Hızlı düğmeleri aç

devreci

İleti: 75

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
    • http://www.devreci.com
merminin değdiği koordinat "K" desek değdiği üçgennin normaline "N" desek

quadın normali Q=(0,0,1)

vector3d  W=cross(N,Q);
if(W==zero)  indentitymatrix(); else
 
vector3d  B=cross(N,W);
vector3d  C=cross(B,W);
vector3d  A=cross(B,C);

MATRix  
[ A.x ,  A.y ,  A.z , 0
  B.x ,  B.y ,  B.z ,  0
  C.x ,  C.y ,  C.z , 0
  K.x ,  K.y ,  K.z  , 1  ]  / determinant  quadı bu matrixle çarp

eğer yamuk olursa a b c bunların yerlerini değiştir yada inverse matrix al

tabi birde sorun duvarın tam kenarına mermi gelirse o zaman quadı tam uygun yerden kesmen gerekir yoksa çirkin durur mesela quake 2 de böyle bi sorun vardı
« Son Düzenleme: 11.06.2010 01:10:07 Gönderen: devreci »

Problem

« Yanıtla #8 : 11.06.2010 03:23:26 »
Hızlı düğmeleri aç

paradox

İleti: 134

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
Anlamadığım olay quadın neyini matrixle çarpıcam?.Bu tamamen worldmatrix tipi bişey heralde..yani rotasyonu için değil sadece, pozisyonda dahil?..
« Son Düzenleme: 11.06.2010 05:29:40 Gönderen: paradox »

Problem

« Yanıtla #9 : 12.06.2010 19:26:58 »
Hızlı düğmeleri aç

devreci

İleti: 75

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
    • http://www.devreci.com
Alıntı yapılan: paradox;23039
Anlamadığım olay quadın neyini matrixle çarpıcam?.Bu tamamen worldmatrix tipi bişey heralde..yani rotasyonu için değil sadece, pozisyonda dahil?..


dostum quadın 4 tane vectorü yokmu işte onları döndürüyorsun directxde fonksiyon vardı d3dxvector3dtransform(); gibi  yada woldtransformmatrix olarakta yapabilirsin sen shaderlemi yapacaksın shaderle yapacaksan rotationa ihtiyacın olmaz ben tam olarak anlamadım sen hangi yöntemle yapacaksın
internette hiç örnek yokmu ?  bulursan bizimlede palylaş iyi çalışmalar

Problem

« Yanıtla #10 : 12.06.2010 22:26:56 »
Hızlı düğmeleri aç

paradox

İleti: 134

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
shaderla yapmıcam..o resimdeki shader'i quad'ı göstermek için dedim skate'ye..duvarla işim yok diye..birde quad dediğim benim 3dsmaxden yaptığım plane objesi..onu mesh olarak yüklüyom..Terrain uzerinde kutunun eğim alması gibi genel bişey olsun istoydum..tutorial bulamadım.Nası arıyacağımıda bilmiyom:D
endo'da göndermedi dökümanı..
Öyle aklıma geldi uğraşayım dedim..Olmuyo ama bi türlü.:).

Problem

« Yanıtla #11 : 12.06.2010 22:46:21 »
Hızlı düğmeleri aç

paradox

İleti: 134

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
Yaptığım programı yükledim buraya..Tam olarak ne yapmaya çalıştığım anlaşılsın..
Bu özelliğide yeni buldum dosya ekleme olayı güzelmiş..Keşke önceden bilseyim:D

normallerin 1,0,0 , 0,1,0 .... gibi değerlerinde bi sorun yok ..
ama  0.3,0,-0.7 vs..tipinde değerler alınca olmuyo..
skatenin düşündüğü tarzda oldu yani..kutu şeklinde materila ateş edince oluyo anca..
Bu arada sahnedeki mesh komplex mesh.Yani olucaksa komple haritaya uygulansın demiştim.::confused:
« Son Düzenleme: 24.06.2010 06:00:54 Gönderen: paradox »

Problem

« Yanıtla #12 : 13.06.2010 21:16:55 »
Hızlı düğmeleri aç

paradox

İleti: 134

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
sorunu hallettim..düzeldi.:^_^