14.01.2015 Views

yönet‹m

yönet‹m

yönet‹m

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!