Üç boyutlu nesne tanımlamaları

Üç boyutlu nesne tanımlamaları

NeonAdam

Üç boyutlu nesneler poligonlardan oluşur ve bir çok poligon kendi arasında ağ oluşturmuş ve bir nesneyi meydana getirmiştir.

Real Time da bir modeli işlemek için ( bunun algoritmasını biz geliştiriyorsak ) üç boyutlu nesneleri oluşturan poligonları ve poligon tanımlamalarını, standartlarını bilmemiz gerekiyor.

Örneğin üç boyutlu bir modelin tanımlanması için vertexlerin koordinatlarını ve o vertexleri oluşturduğu poligonu belirtmek için de indis kullanıyorlar.

Fakat, bu tanımlamalarda üç boyutlu bir model koordinatlara ve indislere göre hangi sırayla çizilir?

Kısacası üç boyutlu modelleri tanımlama ve bu modelleri oluşturan vertexler, köşeler, yüzeyler ve bu gibi konuları anlatacak iyi bir kaynak gerekiyor...

Konu ile ilgili desteğinizi bekliyorum,

Saygılarımla...

2009-07-02 22:37:57

Cvp

Hunturk

İlkel 3 boyutlu bir model 2d ya da 3d koordinat düzleminde vertex dizileri ile tanımlandıktan sonra 3 boyutlu etki verilmek amacıyla orthogonal görüntüleme tekniği kullanılır. 2d düzlemde nesneleri çizmek nispeten kolaydır. Çizimi yapılacak doğru başlangıç-bitiş noktaları tanımlanarak işleyici fonksiyona gönderilir ve çizim gerçekleştirilir.

Örneğin aşağıdaki OpenGL GLUT program parçacığını fikir vermesi açısından inceleyebilirsiniz. Bu parça önce kullanılan grafik api´ sinin donanıma erişimli alt yordamlarından birkaçını çağırır ve sahneyi hazırlar. " glVertex2f(0.5,0.4); glVertex2f(-0.5,0.4); " ile tanımlanmış yerde bir adet "nokta" gösterir.

[pre]
void gosterim(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,1.0);
glPointSize(4.0);

glBegin(GL_POINTS);
glVertex2f(0.5,0.4);
glVertex2f(-0.5,0.4);
glEnd();
glFlush();
}
[/pre]

Dediğinizi tam anladıysam siz bu tür işlerin nasıl yapıldığını merak ediyorsunuz.

Maalesef Türkçe olarak elle tutulur bir kaynak yok. Amazon.com üzerinden "computer graphics" olarak aratırsanız muhtemelen en iyi ve tanınmış kaynaktan aşağıya doğru bir sıralama yapacaktır.
Bunlardan sonra OpenGL´ ın son sürüm el kitabını (kırmızı kitap) ya da directx ile alakalı en uygun kaynak hangisiyse onu edinmenizde fayda var. Zira çoğunlukla bilgisayar ile 2d/3d her tür olay bu ikisi ile yapılıyor.

2009-07-01 10:53:00

Yanıt

NeonAdam

Tam olarak şöyle anlatayım, bir insan modeli var ve yaklaşık 500.000 poligondan oluşuyor.

Vertexlerin koordinat bilgisi bir dizide saklanıyor.

Durum böyle olunca bir grafik kütüphanesi tarafından ( OpenGL ya da Direct3D tarafından ) verilen poligon dizisi sırasında göre mi ( birinci poligon, sonra ikinci, sonra üçüncüsü mü ) çizilir?

Yani bu çizilme işlemi verilen dizi sırasına göre mi yapılır?

Yanıt için çok teşekkürler,

Saygılarımla...

2009-07-02 22:37:57

Cvp

Hunturk

Mantıklı olanı ilk giren ilk çıkar (first in -> first out (fifo)) gibi ya da yukarıdan aşağıya gibi görünsede , bu çoğunlukla programcının ya da çizime iş gücü ayıran donanımın elinde. Ve donanımın yeteneklerine bağlı olarak değişken bir durum. Örneğin performans artışı için cismin görünmeyen taraflarının hiç hesaplanmaması gerekliliği (occlusion culling, frustum culling, vs.) var. Yani bu öğrenmek istediğiniz şeye tam olarak etkiyen birçok değişken mevcut, bu nedenle nesneleri oluşturan veri matrisleri görüntü olarak hangi sırayla çizilir bilemiyorum. Ki ekrana çizilmesi olayıda birçok tamponlama, shader etkisi üzerine bindikten sonra gerçekleşmekte.

saygılar...

2009-07-03 23:06:31