Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Liste 7. 3D Studio Max dosyas› örne¤i<br />
$obj = $world->createObject('3ds', 'Image_3D.3ds');<br />
$obj->setColor(new Image_3D_Color(255, 255, 255));<br />
$obj->transform($world->createMatrix('Rotation', array(110, 40, 0)));<br />
$obj->transform($world->createMatrix('Scale', array(7, 7, 7)));<br />
Liste 8. Küre nesnelerinden birlefltirilmifl bir kübün oluflturulmas›<br />
for ($x=0; $x < 5; $x++) {<br />
for ($y=0; $y < 5; $y++) {<br />
for ($z=0; $z < 5; $z++) {<br />
$sphere = $world->createObject('sphere',<br />
array('r' => 25, 'detail' => 4));<br />
$sphere->setColor(new Image_3D_Color(255, 255, 255));<br />
$sphere->transform($world->createMatrix('Move',<br />
array($x * 75, $y * 75, $z * 75)));<br />
$sphere->transform($world->createMatrix('Rotation',<br />
array(45, 30, 15)));<br />
}<br />
}<br />
}<br />
$world->transform($world->createMatrix('Move', array(-225, -100, 0)));<br />
Gördü¤ünüz gibi, nesnenin oluflturulmas›<br />
için, 3D Studio Max dosyas›n›n<br />
bulunmas› yeterli. Image_3D kuruluflu<br />
ile biraz ilgilendiyseniz, PEAR paketindeki<br />
baz› örnekleri görmüfl olabilirsiniz.<br />
Yukar›daki listede içe aktar›lan<br />
Image_3D.3ds dosyas› bu örneklerden<br />
al›nm›flt›r. Sonuçta ortaya ç›kan görüntü<br />
afla¤›da gösterilmifltir:<br />
fiekil 10. Image_3D paketi ile içe aktar›lm›fl<br />
ve gerçeklenmifl 3D Studio Max dosyas›.<br />
Elbette, bu sefer iflimiz kolayd›,<br />
çünkü yukar›daki dosyada içe aktar›lan<br />
3D Studio Max dosyas› 200 KB'den<br />
küçüktü ve oldukça basit bir dosyayd›.<br />
Daha büyük dosyalar›n aç›lmas› sunucunuzu<br />
ya da PHP'yi kolayca durma<br />
noktas›na getirebilir.<br />
Tek bir alanda birden çok<br />
nesnenin birlefltirilmesi<br />
fiimdiye dek, tek bir 3 boyutlu alandaki<br />
nesneleri teker teker gördük. Ama,<br />
burada durmam›z gerekiyor. Liste 8<br />
içinde, ayn› alanda 100'den fazla nesnenin<br />
nas›l birlefltirilece¤inin bir örne-<br />
¤i yer al›r.<br />
Daha önce de oldu¤u gibi, bu kod<br />
Liste 1 içindeki, $cone nesnesini tan›mlayan<br />
sat›rlar›n yerine geçer.<br />
Liste 8, $x, $y ve $z'yi 0-4'ten art›ran<br />
üç döngü tan›mlar. Orta döngü<br />
içinde, tek bir küre nesnesi yarat›l›r.<br />
Bir move dönüfltürmesi kullanarak, her<br />
bir yeni küre, bafllang›ç noktas›na göre<br />
X, Y ve Z yönlerinde konumland›r›l›r.<br />
Tafl›nd›ktan sonra, her bir küre bafllang›ç<br />
noktas›n›n çevresinde döndürülür.<br />
Kürelerin her biri yarat›ld›ktan ve<br />
üç döngünün tümü de tamamland›ktan<br />
sonra, $world nesnesinin bütünü, görüntünün<br />
s›n›rlar› içinde kürelerin ortalanaca¤›<br />
biçimde kayd›r›l›r.<br />
Bu örnekte 125 kürenin oluflturuldu¤una<br />
dikkat edin. Detail ayar› 4 de-<br />
¤erinde olan tek bir bir küre oluflturmakta<br />
zorland›ysan›z, 124 tane daha<br />
küre oluflturman›n ne kadar güç olabilece¤ini<br />
tahmin edebilirsiniz. Detail de-<br />
¤eri 4 ya da 5 oldu¤unda nesne gerçekten<br />
çok güzel görünür, ama herfleyin<br />
düzgün olarak çal›flt›¤›ndan emin<br />
oluncaya dek, bu ayar› 1 ya da 2'ye<br />
çekmeniz ak›ll›ca olur.<br />
fiekil 11 içinde gösterilen sonuçta<br />
ortaya ç›kan görüntünün sadece küpler<br />
ve konilerden çok daha heyecan verici<br />
oldu¤unu kabul edersiniz.<br />
fiekil 11. Küp flekilli bir<br />
matris yaratmak için<br />
düzenlenen 125 küre.<br />
Özel biçimler ve yüzeyler<br />
Image_3D içinde daha özel nesnelerin<br />
oluflturulmas›na olanak tan›yan iki<br />
nesne vard›r: çokgenler ve efllemler<br />
Çokgenlerin oluflturulmas›<br />
3 boyutlu bir biçimin çok boyutlu koordinatlarda<br />
tasarlanabilece¤ini varsayarsak,<br />
bu koordinatlar› bir araya getirerek<br />
3 boyutlu bir nesnenin kenarlar›n› oluflturabilirsiniz.<br />
Dikkatli bir hesaplamayla,<br />
noktalar ve çokgenler kullanarak s›f›rdan<br />
küpler, koniler ya da küreler oluflturabilirsiniz.<br />
Ama bu nesneleri oluflturman›n<br />
daha kolay yollar› da vard›r.<br />
Bunun yerine, üçüncü boyutu, yani<br />
derinli¤i olan üç noktal› bir y›ld›z olufltural›m.<br />
Y›ld›z›n bir ön, bir de arka yüzü<br />
olacakt›r, sonuçta bunlar, d›fl kenarlar›<br />
tan›mlayan ayn› koordinat noktalar›na<br />
sahip olacakt›r. Alt› noktaya gerek<br />
vard›r -- üçü y›ld›z›n noktalar› için, üçü<br />
de kenarlar› belirlemek için kullan›l›r.<br />
‹flleri kolaylaflt›rmak için, Z=0 koordinatlar›nda<br />
yatan noktalar ön yüzünüz<br />
olsun. Arka yüz, ön yüze göre sabit bir<br />
uzakl›kta, 60 de¤er ötede olacakt›r.<br />
Böylece, tüm d›fl noktalar ayn› X ve Y<br />
koordinatlar›na sahip olacakt›r, ama Z<br />
koordinat› 60 olarak de¤ifltirilecektir.<br />
Üç kenar, y›ld›z›n her bir d›fl noktas›n›<br />
birlefltirecek biçimde efllenir.<br />
Liste 9'un ço¤unlu¤u, bu nesnenin<br />
oluflturulmas› için birbirine ba¤lanmas›<br />
gereken noktalar›n yerlefltirilmesiyle<br />
ilgilidir. Afla¤›daki foreach döngüleri,<br />
sonuçta ortaya ç›kacak olan çokgen<br />
nesnesini oluflturmakta kullan›lacak<br />
olan Image_3D_Point nesnelerini oluflturmak<br />
için kullan›l›r.<br />
Son sat›r $world nesnesinin bütününü<br />
döndürür, böylece y›ld›z›n kenar›n›<br />
görebilirsiniz. Alan› döndürmezseniz,<br />
y›ld›z›n ön yüzünü yaln›zca iki boyutlu<br />
olarak görürsünüz.<br />
Liste 9, fiekil 12 içinde gösterilen<br />
görüntüyü oluflturur.<br />
fiekil 12. Image_3D<br />
paketi kullan›larak<br />
oluflturulmufl özel bir<br />
çokgen.<br />
3 boyutlu<br />
yüzeylerin efllenmesi<br />
S›radaki iki örnekte ilginç baz› flekiller<br />
oluflturulur, ama biraz Calculus bilgisi<br />
56 HABER LINUX