You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Liste 1. 3 boyutlu alanda bir koni oluflturulmas›<br />
setColor(new Image_3D_Color(255, 255, 255));<br />
// A blue light from the left<br />
$light1 = $world->createLight(-300, 0, -300);<br />
$light1->setColor(new Image_3D_Color(100, 100, 255));<br />
// A green light from the upper-right<br />
$light2 = $world->createLight(300, -300, -300);<br />
$light2->setColor(new Image_3D_Color(100, 255, 100));<br />
// Build the cone object<br />
$cone = $world->createObject('cone', array('detail' => 64));<br />
$cone->setColor(new Image_3D_Color(255, 255, 255));<br />
$cone->transform($world->createMatrix\<br />
('scale', array(70, 220, 70)));<br />
$cone->transform($world->createMatrix('rotation',<br />
array(-45, -120, -10)));<br />
$cone->transform($world->createMatrix\<br />
('move', array(-50, -30, 10)));<br />
// Render and save the 2-D image<br />
$world->createRenderer('perspectively');<br />
$world->createDriver('gd');<br />
$world->render(400, 400, 'object.png');<br />
><br />
Koniye üç dönüflüm uygulan›r. Önce,<br />
nesnenin ölçe¤i yükseltilir. Koni<br />
nesnesi, oluflturulurken boyutu atanmayan<br />
tek nesnedir. Temelde 1x1x1 boyutlar›nda<br />
bir alanda oluflturulur ve<br />
boyutlar›n›n yeniden belirlenmesi gerekir.<br />
Sonra, koniyi, ›fl›¤› iyi olarak yakalayabilmesi<br />
için döndürün. Bu, biraz<br />
deneme yan›lma sürecidir. Ard›ndan,<br />
koniyi tafl›yarak görüntünün ortas›na<br />
yerlefltirin.<br />
Komut dosyan›z›n son ad›m›, 3 boyutlu<br />
alan›n 2 boyutluya dönüfltürülmesidir.<br />
Örneklerin tümünde "perspectively"<br />
(perspektif olarak) dönüfltürme<br />
motoru kullanacaks›n›z (di¤er<br />
seçenek, "isometric"dir (eflit ölçekte)).<br />
PNG görüntüsünü oluflturacak<br />
olan gd ç›k›fl sürücüsü seçilir. Görüntünün<br />
boyutunu 400x400 piksel olarak<br />
seçin; görüntü, flu dosya ad› ile kaydedilecektir:<br />
object.png.<br />
Görüntüyü oluflturmak için, komut<br />
dosyas› komut sat›r›ndan çal›flt›r›lmal›-<br />
d›r:<br />
php -f build_cone.php<br />
Oluflturulan görüntü dosyas› afla¤›-<br />
da gösterildi¤i gibi görünmelidir:<br />
fiekil 2. Image_3D paketi kullan›larak<br />
oluflturulmufl 3 boyutlu koni<br />
Ayr›nt›lar›n denetlenmesi<br />
ve gerçekleme (rendering)<br />
süresi<br />
Verdi¤im örne¤in yeterince aç›klay›-<br />
c› oldu¤unu umar›m. Image_3D ile<br />
birlikte gönderilen di¤er yerleflik<br />
nesne tiplerini göstermek için birkaç<br />
ek örnekte de ayn› alan›, ›fl›kland›rmay›<br />
ve gerçeklemeyi kullanacaks›-<br />
n›z.<br />
Devam etmeden önce, ilk komut<br />
dosyan›zla ilgili belirtmemiz gereken<br />
iki nokta var. Koni nesnesini örnekle<br />
desteklerken, ikinci ba¤›ms›z<br />
de¤iflken olarak bir dizilimi [array('detail'<br />
=> 64)] geçirdiniz ; bu dizilim,<br />
koniyi oluflturmak için kullan›-<br />
lan çokgenlerin say›s›n› belirler. Bu<br />
çokgenlerin say›s›n›n az olmas›, görüntünün<br />
daha aç›l› olmas›na neden<br />
olurken, bu say›n›n yüksek olmas›<br />
görüntünün yüzeyini düzgünlefltirir<br />
(bkz. fiekil 3).<br />
fiekil 3. 3 boyutlu konilerde<br />
farkl› ayr›nt›<br />
düzeyleri. Gösterilen<br />
ayr›nt› düzeyleri 8,<br />
16, 32 ve 64'tür<br />
Ayr›nt› düzeyi yükseldikçe, Image_3D'nin<br />
görüntüyü oluflturmas› o<br />
kadar uzun sürer. Konilerin oluflturulmas›<br />
oldukça basittir, bu nedenle<br />
etkisi korkunç de¤ildir. Kürelere ve<br />
daha karmafl›k flekillere geçti¤inizde,<br />
gerçekleme h›z›n›n kolayca denetiminizden<br />
ç›kabilece¤ini göreceksiniz.<br />
Görüntünün nas›l oluflturuldu¤una<br />
iliflkin bilgi sa¤layacak olan Image_3D<br />
nesnesi için yerleflik bir istatistik<br />
yöntemi vard›r. Afla¤›daki sat›-<br />
r› bir önceki komut sat›r›n›n sonuna<br />
koyun.<br />
echo $world->stats();<br />
Komut dosyas› yeniden çal›flt›r›ld›¤›nda,<br />
Liste 2 içindeki ç›k›fl görüntülenmelidir.<br />
Liste 2. Koni nesnesinin oluflturulmas›<br />
için istatistikler<br />
Image 3D<br />
Objects: 1<br />
Lights: 2<br />
Polygons: 130<br />
Points: 67<br />
Bu basit ayr›nt›lar bir yana, komutlar›n›z<br />
daha ayr›nt›l› 3 boyutlu görüntüler<br />
oluflturdukça, komut dosyalar›n›-<br />
z›n yürütülme süresini ölçmek için PE-<br />
AR::Benchmark paketini kullanmay›<br />
düflünebilirsiniz (bkz Kaynaklar).<br />
Ifl›k kaynaklar› ve renk<br />
Renk ya da ›fl›k olmazsa, 3 boyutlu alan›n›zda<br />
nesneleri göremezsiniz. fiimdi<br />
HABER LINUX 53