14.01.2015 Views

yönet‹m

yönet‹m

yönet‹m

SHOW MORE
SHOW LESS

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

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

Saved successfully!

Ooh no, something went wrong!