Gönderen Konu: DirectX ışıklandırma sorusu  (Okunma sayısı 6883 defa)

DirectX ışıklandırma sorusu

« : 19.02.2006 01:48:04 »
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/
DirectX expertlerine bir sorum olacak. DirectX'in kendi formatı olan .x dosyaları hakkında epey bir araştırma yaptım ancak sorumun cevabını bulamadım tam olarak. Elimde birçok mesh'in yer aldığı bir sahne var ve tüm meshlere aynı ışıkları atıyorum. Ancak .x dosylarından birinden okunan mesh hiçbir şekilde bu ışıklardan etkilenmiyor, yalnızca ambient'den etkileniyor. Kodu hiç değiştirmeden yerine kendi oluşturduğum başka bir .x dosyası koyduğumda sorun çözülüyor. Problemi yaşadığım dosyayı netten buldum ve çok da önemli değil, projenin bitmiş halinde kullanmiicam. Ancak yine de kafama takılan şey .x dosyasının içersinde yer alan bilgilerden hangisi objeye set ettiğim light'ı etkiliyor? Yani bana sanki bu yaşadığım sorun biraz garip gibi geldi. Mantıklı bir açıklaması olan varsa çok sevinirim, kafamı kurcaladı epeyce (2-3 saat kadar eheh).

P.S: Demo değil, okul projemle uğraşıyorum. Bilginize :)

DirectX ışıklandırma sorusu

« Yanıtla #1 : 19.02.2006 01:52:27 »
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/
Hemen ekliim, o bahsettiğim .x dosyasını zaten temp olarak kullandığım için sildim. Daha sonra kafam takıldı ve olayı araştırmaya başladım. Tekrar bulabilirsem attachliicam buraya, siz de inceleyebilin diye. Ancak gece boyu epey bir site bookmarkladım, hepsini dolaşmam gerekecek bulmak için.

DirectX ışıklandırma sorusu

« Yanıtla #2 : 19.02.2006 02:24:22 »
Hızlı düğmeleri aç

chenmy1

İleti: 184

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
    • http://www.mosengine.inativa.com
Alıntı
Originally posted by skate@Feb 19 2006, 01:52 AM
Hemen ekliim, o bahsettiğim .x dosyasını zaten temp olarak kullandığım için sildim. Daha sonra kafam takıldı ve olayı araştırmaya başladım. Tekrar bulabilirsem attachliicam buraya, siz de inceleyebilin diye. Ancak gece boyu epey bir site bookmarkladım, hepsini dolaşmam gerekecek bulmak için.
[post=5339]Quoted post[/post]
[/b]

valla dx den pek anlamam ama komplo teorileri kurabilirim.

X formatinda Material bilgileri tutuluyor sanirsam emmision i az olan hatta olmiyan bir material kullanmissalar isigi uzerine almiyordur belki ve ya normallerde bir sorun vardir yanlis export edilmistir.

eger digerlerinde calisiyorsa takma derim cunku bazi exporterlar dangalaklik yapiyor benim bildigim saglam bi exporter var 3dsmax plugini kendisi PANDA X Exporter sanirsam ismi ben kendim super taksiyi bir ara TV3d Engine e aktarmaya ugrasmistim ve sorunsuz export etti ve yanilmiyorsam materialleride FX dosyasi olarak kaydedebiliyor gerci ben beceremedim ama..
Algoritmik Geometri^S!P and MEE!ditor 64/4 kb intro tool.

DirectX ışıklandırma sorusu

« Yanıtla #3 : 19.02.2006 03:18:06 »
Hızlı düğmeleri aç

scg

İleti: 214

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
    • http://
Alıntı
yalnızca ambient'den etkileniyor ...

Büyük ihtimal normal vektörleri yok senin .x dosyanda..

Kod: [Seç]

I = Ia * Ka + Id * Kd * (N.L) + specular

gibi bişeyler olması lazım lighting eşitliği..


N de problem olduğu için diffuse terim gidiyo gibi geliyo bana.

şimdi D3DXLoadMeshFromX kullanıyosundur kesin. Eğer bir X file da normal data sı yoksa D3DXLoadMeshFromX ile yaratılan ID3DXMesh objesinin vertex formatında D3DFVF_NORMAL olmaz.

şimdi şunları deneyebilirsin :

 -> Mesh objeni yarattıktan sonra (D3DXLoadMeshFromX (...,&Mesh) ile ) normal datası var mı sorgula . şöyle bişeyler :

Kod: [Seç]
if (!(Mesh->GetFVF() & D3DFVF_NORMAL))
{
   // bu if e girdik , normal yokmus demekki
 
   // Temp bi mesh tanımla
   ID3DXMesh *TempMesh = NULL;

   //Orijinal mesh i clonla
   Mesh->CloneMeshFVF( ... , &TempMesh);

   // Normalleri hesapla
   D3DXComputeNormals(TempMesh);

   Mesh->Release(); // Normalsiz mesh i at gitsin
   Mesh = TempMesh; // Yeni normalli mesh
}


.X exporter ları hiç sağlam değil. Oyun / Demo yazacak kişiler .X dosyalarına fazla takılmasın bence. Ama hızlı prototipleme için iyi baya.

DirectX ışıklandırma sorusu

« Yanıtla #4 : 19.02.2006 12:37: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/
Evet, D3DXLoadMeshFromX kullanıyorum. Aslında alternatifim olduğunu da bilmiyorumdum .x yükletmek için.

Hemen belirtiim, proje okulla ilişkili olduğu için çok da önemsemiyorum. OpenGL'de 3ds dosyalarını okuyabilen bir library kullanıyordum, DirectX'de ise hazır kendi formatı varken onu kullaniim dedim. Kod ile yaratılamayacak komplex modeller kullanabilmek için böyle birşeye ihtiyaç duyuyorum. Yoksa küp, koni, küre v.s. için .x kullanmıyorum elbette ki :)

Bir de vakit sıkıntım var. Ayda 1-2 kere başına oturacak vakit bulabiliyorum tezimin. Her seferinde en son nerde kalmıştık v.s. derken çok yavaş ilerliyorum projede. Ama yakında birşeyler bitirip sizlere de preview atarım.

Yardım için çok teşekkür ederim. Normallerle ilgili olup olmadığını araştırıcam o dosyayı bulur bulmaz.