tag:blogger.com,1999:blog-87813557164983790902024-02-19T05:22:12.178-08:00postNUKAAnonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.comBlogger19125tag:blogger.com,1999:blog-8781355716498379090.post-46498314957181542882012-04-16T00:52:00.002-07:002012-04-16T00:55:00.949-07:00Softimage ICE Ders Notları - 03 - Karda Ayak İzi<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEqpolcH55ImxT9_1rM9OeEWfqzpxGy-jZr7uA1HcCyuutjHCByWmMhbT7r6Sx1BpzNfkCfiZBORUH8wysdVwT1bmwycNfXWfFz44jtmu1BUn673_3BHrR5aSvj9THNLsWOXCZcuIgZrc/s1600/softimage_ice_dersNot_logo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="126" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEqpolcH55ImxT9_1rM9OeEWfqzpxGy-jZr7uA1HcCyuutjHCByWmMhbT7r6Sx1BpzNfkCfiZBORUH8wysdVwT1bmwycNfXWfFz44jtmu1BUn673_3BHrR5aSvj9THNLsWOXCZcuIgZrc/s640/softimage_ice_dersNot_logo.jpg" width="640" /></a></div>
<br />
Merhaba,<br />
Bu derste karda ayak izi simulasyonu yapacağız.<br />
<br />
Şöyle bir sahne ile başlıyoruz.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/FB09UvlqhfM?feature=player_embedded' frameborder='0'></iframe></div>
<br />
Videoda da görüldüğü, gridimizin yoğunluğu biraz fazla. 100 x 100 subdivision değerine sahip bir gridimiz var ki mümkün olduğu kadar ayak izi belli olsun.<br />
<br />
Grid'i seçip ICE Tree/Create/Simulated ICE tree diyoruz. Normal ICE Tree kullanmamamızın sebebi sahnenin animasyon içermesi. Grid'in her karede nasıl bir deformasyona uğrayacağını ancak Simulated ICE Tree kullanarak elde edebiliyoruz.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEginBs6JGvr2zjOEd4nMGkr1AW9K7CEHY7alYxDs0FiPa71PIzVj18cpSdBIc_ujF7guTIz19SIFFzSUmz5j7WA20VXor7HUoEpkChDICfgNjtjGJ9kyco_m_M5JZ2Ox1dr_iDbO1Fe47U/s1600/snow_step01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="418" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEginBs6JGvr2zjOEd4nMGkr1AW9K7CEHY7alYxDs0FiPa71PIzVj18cpSdBIc_ujF7guTIz19SIFFzSUmz5j7WA20VXor7HUoEpkChDICfgNjtjGJ9kyco_m_M5JZ2Ox1dr_iDbO1Fe47U/s640/snow_step01.png" width="640" /></a></div>
Şimdi bize bu animsyonu yapmak için neler lazım ona bakalım.<br />
<br />
<br />
<ol>
<li>Ayağın gridin neresinde olduğunu kontrol etmemiz gerekiyor.</li>
<li>Eğer ayak gridin içinde ise grid'in vertexlerinin ayağın vertexlerine göre kendilerini ayarlamaları gerekiyor.</li>
<li>Ayağa uzak olan vertexlerin kendi pozisyonlarını korumaları gerekiyor.</li>
</ol>
<div>
Ice Tree'nin arama kısmına "test inside geometry" yazıyoruz ve çıkan nodu ICE Tree'ye alıyoruz. Bu node'un geometry kısmına hangi objenin onun içinde olduğunu belirmemiz gerekiyor. Bu yüzden Explorer'dan "Character" objesini alıp. Value outputunu şekildeki gibi bağlıyoruz. </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjInTFe-sHuBF1T6bBbmC23ZMshGoqZ4WJaWzrUsjTXp070Pj6o9Mz6c2y5uxSFPnBy3r_VLViwt_X2C4zAjth7oNUvXdQhZWl_YbcjCzjyxi74zBZmwRlrP189MRfKw48HAnUukcZRbMQ/s1600/snow_step02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="420" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjInTFe-sHuBF1T6bBbmC23ZMshGoqZ4WJaWzrUsjTXp070Pj6o9Mz6c2y5uxSFPnBy3r_VLViwt_X2C4zAjth7oNUvXdQhZWl_YbcjCzjyxi74zBZmwRlrP189MRfKw48HAnUukcZRbMQ/s640/snow_step02.png" width="640" /></a></div>
<div>
<br /></div>
<div>
Şimdi elimizde bir mantıksal çıktı var. "Evet ayak gridin içinde" ve " hayır ayak gridin içinde değil". Bu veri herbir vertex'e ait veri aslında.</div>
<div>
Şimdi şöyle bir mantık kurmamız gerekiyor; </div>
<div>
<ul>
<li>Eğer ayak objesindeki vertex ile grid objesindeki vertex bir noktada <u>kesişiyorsa</u>, ayak objesindeki vertexi takip et. </li>
<li>Eğer ayak objesindeki vertex ile grid objesindeki vertex bir noktada <u>kesişmiyorsa</u>, orjinal pozisyonunu koru.</li>
</ul>
<div>
Bu mantığı da "if" nodu ile yapıyoruz.</div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHZWZW89_jM-6cxTtVxrTIyZh-ld7kc2U0QQC45j8FbaAYQlkTVgkVCkkaAkjIR-pyHFD4Y7CP_-iSrHU8CQ-p_SG7rUCZJvzwrD-9-jADlI7Js7u_X-0sn90dFJup8cxu8YPNhQeClLQ/s1600/snow_step03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="420" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHZWZW89_jM-6cxTtVxrTIyZh-ld7kc2U0QQC45j8FbaAYQlkTVgkVCkkaAkjIR-pyHFD4Y7CP_-iSrHU8CQ-p_SG7rUCZJvzwrD-9-jADlI7Js7u_X-0sn90dFJup8cxu8YPNhQeClLQ/s640/snow_step03.png" width="640" /></a></div>
<div>
<br /></div>
<div>
"Test Inside Geometry" nodu burada koşulu oluşturuyor. Evet ya da Hayır. Buna göre; eğer bu durum doğru ise, "Get Closeset Location on Geometry" nodunun "position" outputundan "ayak" objesinden gelen yeni vertex pozisyonu set ediliyor. </div>
<div>
Eğer bu durum yanlış ise, "Get Point Position" nodu ile vertexin orjinal posizyonu okunuyor. Aslında "If False" input portu boş kalabilirdi. Ama görsel olarak koşul daha rahat okunabildiği için boş bırakmadım.</div>
<div>
<br /></div>
<div>
" Set Point Position " nodu ile de, bu iki değer gride yazdırılıyor.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/heW1m_fX07I/0.jpg" height="266" width="320"><param name="movie" value="http://www.youtube.com/v/heW1m_fX07I?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" />
<param name="bgcolor" value="#FFFFFF" />
<embed width="320" height="266" src="http://www.youtube.com/v/heW1m_fX07I?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" type="application/x-shockwave-flash"></embed></object></div>
<div>
<br /></div>
<div>
Son olarak, grid objesindeki deformasyon biraz kırıklar içeriyor. Bu yüzden smooth deformerı kullanarak bu kırıkları biraz düzeltiyoruz. Smooth deformerını seçtiğimizde kendini modelling stack'inin altına atıyor. Halbuki simulasyonu etkilemsi için "Post-Simulation" stack'inin altında olması gerekli. Bu yüzden kendisini sürükleyip resimdeki gibi "Post-Simulation"ın altına atıyoruz.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMSlIrw99ls7AcU8vOM4phPt_cUMNPHvjOIIJ5UoBLyfcPjbFXaHNIEmO-F7E8c3wcdrVZPVssq_kPJN1B4gQAXWZrx92CEw513pnkqk-JcJ35lhSU0gOYN4h0mJwtLo51hpe5Cq5yh4k/s1600/snow_step04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="420" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMSlIrw99ls7AcU8vOM4phPt_cUMNPHvjOIIJ5UoBLyfcPjbFXaHNIEmO-F7E8c3wcdrVZPVssq_kPJN1B4gQAXWZrx92CEw513pnkqk-JcJ35lhSU0gOYN4h0mJwtLo51hpe5Cq5yh4k/s640/snow_step04.jpg" width="640" /></a></div>
<div>
<br /></div>
<div>
Tekrar görüşmek üzere.</div>
<div>
Emin.</div>Anonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-25468047379035178422012-04-11T02:26:00.004-07:002012-04-11T02:26:50.837-07:00Softimage ICE - Ders Notları - 2 - Basic Deformer<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNk32zmqa4x7V36XMuhqPeMXIZFWy6Aps0F5rk3V108DWx672JGj6T5cBBdbaka1jVtSi-0v6E6FMcgCv58mKQjlN0VqQC8fMkhxvf2zjxyG6Nit-zwxLpBnB_RQYf5WirzulEnhunMAk/s1600/softimage_ice_dersNot_logo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="126" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNk32zmqa4x7V36XMuhqPeMXIZFWy6Aps0F5rk3V108DWx672JGj6T5cBBdbaka1jVtSi-0v6E6FMcgCv58mKQjlN0VqQC8fMkhxvf2zjxyG6Nit-zwxLpBnB_RQYf5WirzulEnhunMAk/s640/softimage_ice_dersNot_logo.jpg" width="640" /></a></div>
<br />
Tekrar Merhaba.<br />
<br />
Geçen derste temel olarak bir ICE Tree'nin nasıl oluşturulduğunu görmüştük. Bu derste ise bu oluşturduğumuz ICE Tree'yi biraz daha geliştirerek bir deformer yapmayı deneyeceğiz. Yapacağımız deformer bir null objesi ile yüzey üzerinde "Bulge" efekti uygulayacak.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3B6RSqVskQp70JkbEZGJcx-pfbmA1j0DDMlTj0W3BUU8ar5pCURlXyXliIU-jqAR2ePv7KW_nNBhlVuxZW6ep7Tgii_EiU8LxP_EGIACOymDrLHfKfPdX8zUtDAwx62bkd-kAPVclIgY/s1600/ICE_bulge_finish.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="390" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3B6RSqVskQp70JkbEZGJcx-pfbmA1j0DDMlTj0W3BUU8ar5pCURlXyXliIU-jqAR2ePv7KW_nNBhlVuxZW6ep7Tgii_EiU8LxP_EGIACOymDrLHfKfPdX8zUtDAwx62bkd-kAPVclIgY/s640/ICE_bulge_finish.png" width="640" /></a></div>
<br />
Öncelikle yapmak istediğimiz deformerı çözümleyelim.<br />
<br />
<br />
<ol>
<li>ICE'ın grid objesinin bütün point( vertex )'lerinin nerede olduğunu bilmesi gerekli.</li>
<li>Obje deformasyona uğradığında pointlerin nerede olduğunu tanımlamamız gerekli.</li>
<li>Bulge deformerının grid objesine nekadar yakın olduğunu ölçmemiz gerekli ki, bu yakınlığa göre grid objesi deforme olabilsin.</li>
</ol>
Şimdi ICE'a geçelim.<br />
<br />
Sol menüden Get/Primitive/Null ve Get/Primitive/Polygon Mesh/Grid adımlarını takip edip, 1 grid bir de null objesi oluşturdur.Gdip objesini oluştururken çıkan menüden Subdivisions U ve V 'yi 50 olarak ayarlıyoruz. Ardından Grid objesi seçiliyken ICE Tree/Create/Ice Tree' seçip Grid objesine ICE Tree özelliği vermiş oluyoruz.<br />
<br />
Şimdi bize grid in üzerindeki pointlerin konumu lazım. Bir önceki derstende hatırlanacağı gibi bu işi yapmak için önce "Get Data" nodunu ICE Tree'ye çağırı daha sonra "Explorer"dan grid objesini sürükleyip ICE Tree'ye bırakmamız ve Grid nodunun out name'ini Get Data nın In Name'ine bağlamamız. Daha sonra Get Data noduna çift tıklayıp ilgili alana "pointPosition" yazmamız gerekiyordu. İşte bu uzun yol. Bunun yerine "Get Point Position" nodunu kullanabiliyoruz.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixy87olxvws5JQXoCgaRELzhlwIIsX8-XFlVy3ClZdRQbGy3XXVUGkCCe-zx_I7Q97a5fiM9Zd9513G8r09OwEzJ-oB-XS8hAy-3SQEVWYLgQ2MWUrvY4sn2XfAj39_SEseL_zHzKrLNM/s1600/GetPointPosition.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="388" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixy87olxvws5JQXoCgaRELzhlwIIsX8-XFlVy3ClZdRQbGy3XXVUGkCCe-zx_I7Q97a5fiM9Zd9513G8r09OwEzJ-oB-XS8hAy-3SQEVWYLgQ2MWUrvY4sn2XfAj39_SEseL_zHzKrLNM/s640/GetPointPosition.png" width="640" /></a></div>
<br />
Bu resimde aynı veriye iki farklı şekilde nasıl ulaşılabileceğimizi gösterdim. Biz alttakini kullanacağız. Ayrıca<br />
"Get Point Position" ve "Set Point Position" nodu arasına "Add" nodu ekliyorum. Böylece yaptığımız deformasyonu araya sıkıştırabileyim.<br />
Şimdi ikinci aşamaya geçiyoruz. Burada ise her bir point'in deforme olduktan sonraki yerlerini tanımlamamız gerekiyor.<br />
3. Aşamada ise Null objesinin herbir point'e olan uzaklığını bulmamız gerekiyor. Aşağıdaki ekran görüntüsüne bakalım.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaE1FpLrxqSTKrXQnueB_Giy2CaL4Ia9tVO30OeszHJXoga55s3ir7FpWwCTBnBOIxAx4YtPPokpQw0fYTh2jfRTj4Sf8jowRI_ZUszhsKnSVZe75pEw50s7eZ0xO95c4DV_GnxSGZmUk/s1600/diger_asamalar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="390" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaE1FpLrxqSTKrXQnueB_Giy2CaL4Ia9tVO30OeszHJXoga55s3ir7FpWwCTBnBOIxAx4YtPPokpQw0fYTh2jfRTj4Sf8jowRI_ZUszhsKnSVZe75pEw50s7eZ0xO95c4DV_GnxSGZmUk/s640/diger_asamalar.png" width="640" /></a></div>
<br />
2. Aşamayı inceleyelim. Get Point Position ile herbir pointin yerini 3D Vector (XYZ) olarak alıyoruz. ve Add noduna bağlıyoruz. Add noduna bağlı olan diğer node ise bir 3D Vector. Yalnız Y değeri 1 olarak görünüyor. Bu demek oluyorki, herbir point Y aksisinde 1 birim yukarı doğru kalkmış.<br />
<br />
3. Aşamayı inceleyelim. "Get Data" nodunu ICE Tree'ye alıyoruz. Üzerine çift tıklayıp Explore/Null/Kinematic/Global/Pos u seçiyoruz. Böylece Null objesinin XYZ koordinat sistemindeki yerini ICE Tree'ye aldık. "Get Distance Between" nodu iki nesnenin arasındaki uzaklığı ölçen bir nod. Yalnız dikkat edilmesi gereken şey, çıktı olarak Scalar(1,316 gibi) bir veri vermesi. Bir "Get Point Position" nodu alıp şekildeki gibi ilgili yerlere bağlıyoruz. Artık Null objesinin gride olan uzaklığı "Get Distance Between" nodunun Result Output portunda hazır.<br />
<br />
Şimdi bu verileri birşekilde birbirine bağlamam gerekiyor ki ICE Tree çalışsın. Ama nasıl. Bakalım.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg32W1W6ZEaJxadVQvVO6JQGF-ld2jreTMxLmQuvp6W2DbC0l1tugSa9h4ffx2rc7l0WEy6pFNENlRqQMK1sdicJ20NoULsRxa9J8FJqPOCP8tjS11zG7CHB2sWGZuASBNLt3prhUJIl0/s1600/multiplyBYscalar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="362" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg32W1W6ZEaJxadVQvVO6JQGF-ld2jreTMxLmQuvp6W2DbC0l1tugSa9h4ffx2rc7l0WEy6pFNENlRqQMK1sdicJ20NoULsRxa9J8FJqPOCP8tjS11zG7CHB2sWGZuASBNLt3prhUJIl0/s640/multiplyBYscalar.png" width="640" /></a></div>
<br />
Multiply by Scalar Nodu : Bu nod Gelen veriyi "factor" portu ile çarpıyor. Yani, grid objesindeki her bir point'in XYZ bilgisi * "Grid"deki herbir point ile Null objesinin arasındaki uzaklık. Tam olarak istediğimiz sonuç bu değil. Bu veriyi filtrelemiz gerekiyor. Yani en uçtaki pointi bir şekilde bu işlemden uzak tutmamız lazım.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgig9hW3_9rqMALftrcswJUjUhKb-t5LD8OT_ffzi8IIDhAkKEn7wEzpEM1iXY3xUC4eMH1ZPeXWjb7X2tQFsVIJjH123pVbgsAAFpjhBiDQ_40V39yA23Vkc9JYTHxBEJbvMGSFKhml4U/s1600/fCurve.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="388" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgig9hW3_9rqMALftrcswJUjUhKb-t5LD8OT_ffzi8IIDhAkKEn7wEzpEM1iXY3xUC4eMH1ZPeXWjb7X2tQFsVIJjH123pVbgsAAFpjhBiDQ_40V39yA23Vkc9JYTHxBEJbvMGSFKhml4U/s640/fCurve.png" width="640" /></a></div>
<br />
Burada fCurve nodu gelen veriyi kontrol ediyor. Herbir point'in XYZ pozisyonunu Null objesine yakınlık derecesine göre 0 ila 1 arasında sayı ile çarpıyor. Dikkat ederseniz. Tam null objesinin üzerine gelen "point" null objesi ile kesişmiş( yani fcurve değeri 0) . Nullden uzaklaştıkça deformasyon azalıyor ( yani fcurve 1 oluyor.). Bu noktada tam olarak istediğimizi elde etmiş değiliz. Bu fcurve değerlerini ters çevirmemiz gerekli ki null objesi bulge işlemini doğru olarak yapabilsin.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnCyDb_GFt-w-ZxPEhyP7CYYeymbUqhVLbk-OpDxppAs3F00FurfjTgSFz-kRNbCYV1f1-uj1buds8Wb-kHL3IvyHb7OBr5NsdScBWPW11_a8yKepunmSNKEgocs9K0Pm75Fkms5xvulI/s1600/invertFcurve.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="370" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnCyDb_GFt-w-ZxPEhyP7CYYeymbUqhVLbk-OpDxppAs3F00FurfjTgSFz-kRNbCYV1f1-uj1buds8Wb-kHL3IvyHb7OBr5NsdScBWPW11_a8yKepunmSNKEgocs9K0Pm75Fkms5xvulI/s640/invertFcurve.png" width="640" /></a></div>
<br />
Null objesini hareket ettirdiğimiz zaman. Garip bir problem ortaya çıkıyor. Bulge işlemi sanki Global Origin (X=0,Y=0,Z=0) a balı gibi.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLbgAgux3HEhq9yU0ZbZUs57hJN61sMV9Bs2kTAJAT7AAFNB7-rrTmM5mb6h3fngB-Ql5mmpirE1puRpVLWehkiUt0OOV3ZW6cfCJ3-0QDY6Y_YxOQM_1J7xRM88ADgO9-LYyjPVnvNpw/s1600/errorWhenMoveTheNull.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="392" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLbgAgux3HEhq9yU0ZbZUs57hJN61sMV9Bs2kTAJAT7AAFNB7-rrTmM5mb6h3fngB-Ql5mmpirE1puRpVLWehkiUt0OOV3ZW6cfCJ3-0QDY6Y_YxOQM_1J7xRM88ADgO9-LYyjPVnvNpw/s640/errorWhenMoveTheNull.png" width="640" /></a></div>
<br />
Bunun nedeni ise, 2. Aşamada Kullandığımız "Get Point Position" nodu. Çünkü bu noddan Y ve Z bilgisi'de geliyor. Filtre kullanmak gerekiyor.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEga7Pu7GxHUJHhTbpY8HBm9M81C86iZiIZCPCNkZs_QE0KhX8kBuIHFrtGs2C8aPfPDIIdmatM4Hip7R_-gwrC1eStWTlzG2NnvvqnbQcgFTK-v6iD0ieM-H6qFurzY4YipwuywKwTfiNo/s1600/3dVectorScalar3dVector.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="388" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEga7Pu7GxHUJHhTbpY8HBm9M81C86iZiIZCPCNkZs_QE0KhX8kBuIHFrtGs2C8aPfPDIIdmatM4Hip7R_-gwrC1eStWTlzG2NnvvqnbQcgFTK-v6iD0ieM-H6qFurzY4YipwuywKwTfiNo/s640/3dVectorScalar3dVector.png" width="640" /></a></div>
<br />
Get Point Position dan gelen XYZ koordinat bilgisi, "3D Vector to Scalar" nodu ile sadece "Y" aksisi vasıtası ile "Scalar to 3D vector" noduna bağlanıyor. Böylece sadece her bir "point"in Y pozisyonu işleme tabii tutuluyor.<br />
<br />
Son olarak fCurve nodu ile oynanarak farklı deformasyon şekilleri oluşturulabilinir.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiooN6Gxpw5ia4eUz0USfBJ-pmsbIlv9RO8fy-yaqOR34zQDCYbm7JOSJCJETbF6PjmTA4NdZskbm3wXhXjdI288n0q4s8MLxsXRQP6zde5g9v8ZX7mphe-AXR-xNcZvreb6j1dQjq067M/s1600/fcurve2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="388" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiooN6Gxpw5ia4eUz0USfBJ-pmsbIlv9RO8fy-yaqOR34zQDCYbm7JOSJCJETbF6PjmTA4NdZskbm3wXhXjdI288n0q4s8MLxsXRQP6zde5g9v8ZX7mphe-AXR-xNcZvreb6j1dQjq067M/s640/fcurve2.png" width="640" /></a></div>
<br />
Emin.Anonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-31490912884042374162012-04-09T03:35:00.001-07:002012-04-09T03:35:05.897-07:00Softimage ICE - Ders Notları - 01<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEqpolcH55ImxT9_1rM9OeEWfqzpxGy-jZr7uA1HcCyuutjHCByWmMhbT7r6Sx1BpzNfkCfiZBORUH8wysdVwT1bmwycNfXWfFz44jtmu1BUn673_3BHrR5aSvj9THNLsWOXCZcuIgZrc/s1600/softimage_ice_dersNot_logo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="123" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEqpolcH55ImxT9_1rM9OeEWfqzpxGy-jZr7uA1HcCyuutjHCByWmMhbT7r6Sx1BpzNfkCfiZBORUH8wysdVwT1bmwycNfXWfFz44jtmu1BUn673_3BHrR5aSvj9THNLsWOXCZcuIgZrc/s640/softimage_ice_dersNot_logo.jpg" width="640" /></a></div>
<br />
Merhaba,<br />
Çok bilinen/kullanılan bir program olmamasına, autodesk'in de bu durumu değiştirmek için en ufak çabası olmamasına rağmen Softimage oldukça güçlü, modern araçlar içermektedir. Bunlardan en yenisi is 7 sürümüyle birlikte lansmanı yapılan ICE eklentisidir. Yine maalesef çok fazla kaynak yok bu konuda, digital tutors ve i3dTutorial gibi eğitim sitelerinin derleri de yetersiz kalıyor maalesef. Oturup deneye yanıla bir şeyler yapmaya bakıyor iş. Tekbaşına da zor oluyor haliyle. Bu yüzden bu başlık altında kendi çalışma notlarımı paylaşmaya karar verdim. Belki konu ile ilgili birileri de katılımcı olur ya da en azından ICE 'a ilgi duyan birilerine de yardımcı olurum/oluruz.<br />
<br />
Başlayalım o halde.<br />
<br />
<b>Softimage ICE</b>, node tabanlı bir vfx arayüzüdür. Birçok açıdan Houdini'ye benzediğini söylenebilir ( ..pek emin değilim ama !? ). ICE ile parçacık animasyonları ( su, ateş vb. ), rigged body, soft body, cloth ve son 3 versiyonu ile birlikte Topology ( procedural modelling ) ve bunlara bağlı animasyonlar da yapılabilmektedir. Hatta yine birkaç sürüm öncesinde eklenmiş olan rigging kısmı da, klasik bone sisteminin yerine geçebilecek araçlar sunmaktadır.<br />
Peki bütün bunlar nasıl yapılır ?<br />
ICE Tree ( node bağlantılarının tümü ) temelde 3 kısıma ayrılır.<br />
<br />
<b>1 - Getters :</b> Veriyi ICE Tree'ye almak için kullandığımız node'lar<br />
<b>2 - Modifiers :</b> Alınan veriyi değiştirmek için kullanılan nodelar.<br />
<b>3 - Setters :</b> Değiştirilen veriyi objeye göndermek için kullanılan node'lar.<br />
<br />
Yani yapılan iş, veriyi alıp, işleyip geri göndermekten başka bir şey değil. Böyle söyleyince kolay görünüyor ama asıl önemli olan şey bu verilerin cinsi ve veriyi bir cinsten başka bir cinse çevirmek. Burada işler biraz karışıyor. Şöyle bir arayüze bakalım.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5c13CWzJjyk-Kf93qpffDjRx71aa26acuz9OxQvwu__r_haM-MRxfqRRUjiXLPmGNtd6bfxvOCsXexqRupqOf3GjnIVhUGtLcpgVrkIY1aeODfoUKQtJqNq0R512aGRMjo0N64YT3_6Y/s1600/arayuz.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="390" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5c13CWzJjyk-Kf93qpffDjRx71aa26acuz9OxQvwu__r_haM-MRxfqRRUjiXLPmGNtd6bfxvOCsXexqRupqOf3GjnIVhUGtLcpgVrkIY1aeODfoUKQtJqNq0R512aGRMjo0N64YT3_6Y/s640/arayuz.jpg" width="640" /></a></div>
<br />
Explorer'dan "sphere" objesini sürükleyip, ICE Tree'ye bırakınca sol üstteki "Get sphere" nodunu elde ediyoruz. Şimdi, objeyi ICE Tree'ye aldık, ama hangi özelliğini kullanacağımızı daha belirtmedik. Bunun için soldan ikinci olan "Get Data" noduna bakalım. Her nodun sol tarafındaki slotlar veri girdisi ( Input ) için, sağ tarafındakiler ise veri çıktısı ( Output ) için kullanılır. "get Data" nodunun Input kısmında "Source" ve "In Name" slotu bulunmakta. Ayrıca get nodu kırmızı durumda. Yani bize eksik birşeyler olduğunu söylüyor.<br />
<br />
"Get Data" noduna çift tıkladığımızda özelliklerine giriyoruz ve buradan hangi "veriyi almak" istediğimizi seçiyoruz. 2 tane opsiyonumuz var, ya ilgili boşluğa o veriyi yazmak ya da "Explore" a tıklayıp çıkan menüden istediğimiz veriyi seçmek.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEispshUWZv_hOy0LrjXnVL_Uojs-VTRCEQKi6hDsJNxcoG7bFD5Fam5GX1m9usJ0SkZihfq-XjC6ezPdTQ856N-qD4CFff4JrUgEHZGqD-nnWgQ4cb79I7UJLr8m-2LucA9XSpS7htRVpI/s1600/explore_full.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="390" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEispshUWZv_hOy0LrjXnVL_Uojs-VTRCEQKi6hDsJNxcoG7bFD5Fam5GX1m9usJ0SkZihfq-XjC6ezPdTQ856N-qD4CFff4JrUgEHZGqD-nnWgQ4cb79I7UJLr8m-2LucA9XSpS7htRVpI/s640/explore_full.jpg" width="640" /></a></div>
<br />
Şimdi Get Data nodu değişti ve Get .pointPosition halini aldı. Ayrıca daha önce siyah olan "Value" Portu sarı rengine dönüştü. Tam da bu noktada Bu renklerin ne anlama geldiği konusuna değinmek istiyorum. Tabiki hepsi değil, ama en azından data çeşitleri ve bunların renk kodlarına değinmek gerekiyor.<br />
<br />
Scalar Data ( Açık yeşil ) : Tek veri taşıyan veri türü. Örneğin XYZ uzayında sadece X aksisi. Bu veri türü virgüllü sayıları da kapsar. ( 1,316 gibi )<br />
3D Vector Data : Bu veri türünde ise 3 tane veri taşınmaktadır. Örneğin, XYZ uzayında bir objeniz var diyelim. Ve bu obje X ekseninde : 2.5 , Y ekseninde : 3,6 Z ekseninde de : -4,5 noktalarında olsun. 3D Vector ile objenizin konumu şu şekilde görünecektir: 2.5,3.6,-4.5.<br />
Boolen Data ( Açık turuncu ) : 1 ya da 0 verisini taşır. Genel de mantıksal durumlarda kullanılır ( TRUE, FALSE ).<br />
Siyah : Input'dan gelen data hangi tür ise outputtan da aynı tür olarak çıkar.<br />
<br />
Şimdi örneğimize geri dönelim. Get .pointPosition nodunun Value çıktısı sarı renkte. Yani sphere objesinin herbir vertex(point)i XYZ aksisinde belirlenmiş olarak kullanılır durumda. "Value" değerini "Add" nodunun "Value1) Inputuna bağlıyoruz ve siyah olan portlar anında sarıya dönüyor. Artık Add nodundaki "Value2" değerine girdiğimiz her değer de "vector data" olmak zorunda.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWVq_acf5cIBdvjXF4oAcBRBDMZCCa2TN2F-S-qKLsRok-ykM_wU59ukW4d1ekSHNVwElhCqr8TkWRiBWwp3hOGhPmsbz0GJYXzn-d4WNHZaSfICLUlcuM2jTSbZJROUpL-YnNfa7DbzE/s1600/3d+vector.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="390" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWVq_acf5cIBdvjXF4oAcBRBDMZCCa2TN2F-S-qKLsRok-ykM_wU59ukW4d1ekSHNVwElhCqr8TkWRiBWwp3hOGhPmsbz0GJYXzn-d4WNHZaSfICLUlcuM2jTSbZJROUpL-YnNfa7DbzE/s640/3d+vector.png" width="640" /></a></div>
Value 2 portuna birşey bağlı olmadığı için, Add noduna çift tıkladığımızda XYZ koordinatlarını ayarlamamız için sliderlar çıkıyor. Bunlarla oynayarak objemizi oluşturan bütün vertexlerin yerlerini aynı anda değiştirebiliriz. Yanlız burada dikkat edilmesi gereken şey, objeyi oje olarak değil bütün vertexleri aynı anda transfor ettiğimiz için yerninden oynatabiliyoruz. Tabii şu anda bu ICE Tree'miz çalışmıyor, çünkü daha birbirine bağlanacak nodelar var.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVLCejgPFLYDIl8sh-oICv0GKqovLTS1OX9PECCiyBd-B33MfwBAFJMrqiNrxpypL9amSgShuzdTTanwRC5c7fM_7KMib8lYP5Go2mWLZWMbx2ySUnSrhy0sLbchlgapqeCoAGgDcPQno/s1600/in_name.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="390" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVLCejgPFLYDIl8sh-oICv0GKqovLTS1OX9PECCiyBd-B33MfwBAFJMrqiNrxpypL9amSgShuzdTTanwRC5c7fM_7KMib8lYP5Go2mWLZWMbx2ySUnSrhy0sLbchlgapqeCoAGgDcPQno/s640/in_name.png" width="640" /></a></div>
Üstteki node dizilişinde Add nodunu Set Data noduna bağlamış olmamıza rağmen, Set Data nodu hala kırmızı. Bunun nedeni hangi veriyi "Set" edeceğini bilememesi.<br />
Bir alttaki node dizilişine baktığımız zaman burada ise "get pointPosition" nodunun out nameinin "Set Data" nodunun "in name" noduna bağlı olduğunu görüyoruz. Ve böylece Seta data nodumuz maviye dönüyor. Ve Set Data nodumuz vertex pozisyonlarını set edeceğini biliyor. Ardından "Set Data" nodunun "Execute" output'unu ICE Tree nodunun "Port1" ine bağlıyoruz.<br />
Böylece ilk ICE Tree'mizi oluşturmuş olduk. Add noduna çift tıklayıp XYZ değerleri ile oynayarak objemizin yerini ICE ile değiştirebiliriz artık.<br />
Biliyorum çok fazla iş yaparak minik bir sonuç elde ettik ancak, böyleceICE'ın çalışma mantığını kavrayabileceğimiz önemli bir adım atmış olduk.<br />
İleride görüşmek dileğiyle.<br />
<br />
Emin<br />
<br />Anonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-63413895945209978122011-12-30T06:23:00.001-08:002011-12-30T06:23:09.902-08:00Clever Octopus 2<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK8IiJe7Y-wVfNMnQnl5t6ZFB5aOyBVOYd3bBCnD2oL_KZW_v7E7PDfiIE-CQQqJI4LSlDH6cVbI3zNwXwQByQrNF4I9Ysq3jBkCTVQHVEWmd3OJY51z1kUy2s6WMqpxmWWxgJ4sd5mOk/s1600/cO02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK8IiJe7Y-wVfNMnQnl5t6ZFB5aOyBVOYd3bBCnD2oL_KZW_v7E7PDfiIE-CQQqJI4LSlDH6cVbI3zNwXwQByQrNF4I9Ysq3jBkCTVQHVEWmd3OJY51z1kUy2s6WMqpxmWWxgJ4sd5mOk/s400/cO02.jpg" width="400" /></a></div>
<br />Anonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-64111488770557764932011-12-30T00:52:00.001-08:002011-12-30T00:52:37.922-08:00Clever Octopus<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbcrZeV0KFcg4E9l6fLkPey-0ussi3groCTmaeI7Tf66892p6D5-Ap5AJW6S35nKf02j3hHQ0s9xxVbDtq117ynnsFEzt5bnl0stBCQuMcj0LSl493NRIumJEpkHUNzRq5VU0euK92p1s/s1600/cO.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbcrZeV0KFcg4E9l6fLkPey-0ussi3groCTmaeI7Tf66892p6D5-Ap5AJW6S35nKf02j3hHQ0s9xxVbDtq117ynnsFEzt5bnl0stBCQuMcj0LSl493NRIumJEpkHUNzRq5VU0euK92p1s/s400/cO.jpg" width="400" /></a></div>
<br />
<div>
Bir Zeki Müren imitasyonu.</div>Anonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-4676540763960630082011-12-28T06:07:00.000-08:002011-12-28T07:13:35.567-08:00<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4Flq86as0CBZ_2GV5EC6XSCSLU2hQe6sF15Rc75paGBlQAWA4HztGJr-RgmgwXFs5qb9HSt1-LdQRhYdX9yK0mCSXwGyrT5j6cXS2qTQFJj4l377-uC3JwpNYhGg0xrcIu6Gfni3ZEts/s1600/m1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="230" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4Flq86as0CBZ_2GV5EC6XSCSLU2hQe6sF15Rc75paGBlQAWA4HztGJr-RgmgwXFs5qb9HSt1-LdQRhYdX9yK0mCSXwGyrT5j6cXS2qTQFJj4l377-uC3JwpNYhGg0xrcIu6Gfni3ZEts/s400/m1.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivKU4PE6dBtDEyyFlFepjSFtGBVsF48C90k3OnJtGAZDYHXIRBPd1WL7d57WhIp5HpnOG2QNF42RYV4uO7GhWEgqSNSzGW0IF-nd2xZVBsPs8o9x10AYHuLy6Ppy9E4RBQcTOSDEU_kao/s1600/m2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivKU4PE6dBtDEyyFlFepjSFtGBVsF48C90k3OnJtGAZDYHXIRBPd1WL7d57WhIp5HpnOG2QNF42RYV4uO7GhWEgqSNSzGW0IF-nd2xZVBsPs8o9x10AYHuLy6Ppy9E4RBQcTOSDEU_kao/s400/m2.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
Mekan ÇalışmalarıAnonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-83333287250346903062011-12-23T06:48:00.000-08:002011-12-23T06:48:08.735-08:00Eskiz<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-uzFsgFBcB5xuyYmJznLWdK5NSY8BSFpYGU7RMEGHKJOcVPjHhCmkBQHPkIPRpziUPwxc05iHMe9r2sAJwzuIru3MlcXcpF6dR1g7Ez2or3w3KZJuWekbf7R2e7begcvV99J_sFY-S6M/s1600/23_12_2011.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-uzFsgFBcB5xuyYmJznLWdK5NSY8BSFpYGU7RMEGHKJOcVPjHhCmkBQHPkIPRpziUPwxc05iHMe9r2sAJwzuIru3MlcXcpF6dR1g7Ez2or3w3KZJuWekbf7R2e7begcvV99J_sFY-S6M/s400/23_12_2011.JPG" width="400" /></a></div>
<br />Anonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-49416625227168806832011-12-21T06:59:00.000-08:002011-12-21T06:59:40.393-08:00Günlük Eskiz<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjud70aBqufYfQRbWBMbu-WsREQVLWUfI2hKtRPMeXJu6DMOSMoK6qHpV5-AJmcEAl-wv2Fqv2nI17UG1vpsNw-8lHF16HkaRg6ImNcLnHW2ng5E3I8ytMLQzI55B6QHm_ZkeDATsooGgg/s1600/21_12_2011.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjud70aBqufYfQRbWBMbu-WsREQVLWUfI2hKtRPMeXJu6DMOSMoK6qHpV5-AJmcEAl-wv2Fqv2nI17UG1vpsNw-8lHF16HkaRg6ImNcLnHW2ng5E3I8ytMLQzI55B6QHm_ZkeDATsooGgg/s400/21_12_2011.JPG" width="400" /></a></div>
Boş durmasınAnonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-81399841485373125012011-08-18T01:51:00.001-07:002011-08-18T07:29:38.109-07:00Atari Salonuna Geri Dönüş<div style="text-align: center;">
<br /></div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOe6ub44otGeAyAdCNMOFN2wK9-ddFoEQiY1XoAzMicgI6RQma9TsZj9cB99tz88opMqH0lgxcc8rYc6F9lwbieAtXDPE_f0gFlrSTqnhQivhwTZFvDRjdb0xhma7XVNOY0lKTW66ovto/s1600/ipac.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbxpg8XftcIQ6Jh0IdThdUbvS7lOAx3QJ3yWZWhTZjD59YpZdxXj-Ls730aRt15sGKrKkJjgAZKcHtB6951Kny-C3w0xuOFMRJZMKkSou3d-xwr00FI9HqP79i5WLt5CTHZsAD3Wpk3AA/s1600/Evo+Right+Centre.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbxpg8XftcIQ6Jh0IdThdUbvS7lOAx3QJ3yWZWhTZjD59YpZdxXj-Ls730aRt15sGKrKkJjgAZKcHtB6951Kny-C3w0xuOFMRJZMKkSou3d-xwr00FI9HqP79i5WLt5CTHZsAD3Wpk3AA/s400/Evo+Right+Centre.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5642121738757124946" /></a>
<br /><div style="text-align: justify;"><span class="Apple-tab-span" style="white-space:pre"> </span>Hatırlarım, ilk okuldan kaçma maceramı ilkokul 5. sınıfta arkadaşım Murat ile atari salonuna giderek yapmıştık. Sene 1993 'tü galiba. O günden üniversiteye girene kadar da aynı salona devam ettik. Hatta ailem bu alışkanlıktan kurtarmak için beni eve commodore 64 almışlardı. Şu an bilgisayarla bu kadar içli dışlı olmamı bu eski atari makinalarına borçlu olduğumu söyleyebilirim rahatlıkla.</div><div style="text-align: justify;">Ne güzel olurdu şöyle bir tanesi evde olsa diye düşünürdük. Gerçekleşmesi pek mümkün değildi tabii ozamanlar. Ama şimdi zamanı geldi.</div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;">Arcade emülatörlerini bilmeyen kalmamıştır heralde. Küçük rom dosyalarını çalıştıran fantastik programlar. Ama bilgisayar klavyesinden oynayınca okadar eğlenceli olmuyor bu oyunlar. O yüzden imkan var ise bunlardan bir tane edinilmeli.</div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;">Yaklaşık iki aydır internetten bakınıyorum. Baya meraklısı varmış bu işin, o yüzden işim biraz daha kolay. İlk başta kendi modelimi kendim çizeyim dedim ki çizdim. Ama daha sonra kabinin kesim sürecinde problem çıkacağı ortaya çıktı. Bizdeki marangozlar koltuk, sandalye, masa vs. ürettiği için bu gibi işlere pek sıcak bakmıyor, sorun çıktığı zaman çözme eğiliminde olmuyorlar. O yüzden internetten teknik çizimleri eksiksiz kabin planları buldum. Hazır modelin üstünden gitmek daha mantıklı şu durumda. <a href="http://www.got2getalife.com/arcade/ELVIS%20cab1_rev001.pdf">Şu</a> adresteki teknik çizimden yararlanmayı düşünüyorum. Elvis's Arcade Cabinet olarak biliniyor ve birçok kabin yapan kişi bu çizimlerden yararlanmış. Sitesine de <a href="http://www.got2getalife.com/">şuranda</a>n ulaşılabilinir.</div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;">Planlar hazır olduğuna göre artık diğer bir konu olan kontrol arabirimine geçebiliriz. Kontrol arayüzü için 2 adet metod var. Aslında 3 tane var ama biri diğerinin farklı bir versiyonu. Emülatörü 2 şekilde kontrol edebiliriz. Bunlardan biri klavye bir diğeri ise joypad. Klavyeden kontrol için klavyeyi söküp içine bazı ayarlamalar yapmak gerekiyor. Ancak 100'den fazla tuşu olan bir aletten bahsediyoruz burada. Elinizde havya (lehim aleti) birsürü kablo ile uğraşırken, işerin kontrolden çıkması çok kolay olabilir. İşte bu yüzden J-Pac adında bir devre kartı geliştirilmiş. Üstünde giriş pinleri var ve direkt olarak butonları buralara bağlayabiliyorsunuz.</div><div style="text-align: justify;"><span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOe6ub44otGeAyAdCNMOFN2wK9-ddFoEQiY1XoAzMicgI6RQma9TsZj9cB99tz88opMqH0lgxcc8rYc6F9lwbieAtXDPE_f0gFlrSTqnhQivhwTZFvDRjdb0xhma7XVNOY0lKTW66ovto/s400/ipac.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5642130564411343634" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 315px; " /></span></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; ">
<br /></span></div><div style="text-align: justify;">Tabii bu parçayı yurtdışından getirmeniz gerekiyor. Fiyatı da kargo masraflarıyla biraz pahalıya maloluyor. </div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;">Ben ise diğer yöntem olan joypad hacking yöntemini kullanmaya karar verdim. Piyasada 10-15 tl gibi bir fiyata playstation joypad'i görünümlü joypadler var. Pek kaliteli değiller ama bize içindeki kontrol devresi gerektiği için bu bir sorun teşkil etmiyor. </div><div style="text-align: justify;"><span class="Apple-style-span" style="color: rgb(0, 0, 238); "><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh69FW-D4bwuP3cw0oWUB6-eu8LeGbQp0etEJLGx3t4lpxcTKxfuWdh50Ces4AlbC24BmV7Rfw32FVgol_TxL1iT0x5C98Z7zmDwdIaa-igwTxPtGIoYCTR7unQjWjwpHwTzhiiHWqlGd8/s400/PC_joystick_PC_joypad.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5642131749614460146" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 218px; " /></span></div><div style="text-align: justify;">İşe başlamadan önce gerekli olan malzemeleri yazayım.</div><div style="text-align: justify;"><ul><li>İnce uçlu havya</li><li>Lehim teli</li><li>Sıcak silikon tabancası</li><li>Bolca ince kablo</li><li>multimetre ( şu elektrik ölçmede kullanılan hesap makinasına benzeyen alet )</li><li>Pense, kargaburun, yankeski, maket bıçağı</li></ul>Şimdi joypadin vidalarını söküyoruz. Ve devre kartını ortaya çıkarıyoruz. Eğer joypadin dualshock özelliği varsa, kartı açtığımızda alt tarafta iki adet motor olduğunu göreceksiniz, bunları kesebilirsiniz. Ayrıca analog joysticklerin şapkalarını da çıkarırsanız daha rahat bir çalışma alanınız olur. Şöyle birşey olacak önünüzde;</div><div style="text-align: justify;"><span class="Apple-style-span" style="color: rgb(0, 0, 238); "><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlUrCF0l0F6zOwKnj9dXJ31h3V8pQqW4U38gyRFnRXimv3iJv355JnBmr1lskNO04jrQvsSnQLxHlplkclSgs4O_iVKtKL7uzd6VNZuI4izb76uunf1R_oAe6tzyAivA4T6kskRlNfasY/s400/control_01.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5642133662083547426" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 282px; " /></span></div><div style="text-align: justify;">Sarı ile işaretlediğim yerlere dikkat edin. Burada bir yuvarlak yüzey var ve bunlar 2'ye bölünmüş. İşaretli olmayan diğer yarısı topraklamayı sağlıyor ve bunların hepsi birbirine bağlı. Böylece lehimleme işi yarıya iniyor. Sadece işaretli olan yerlere lehimleme yapıp bir tane topraklama için lehimleme yapmamız yeterli. Yani 4 tane d-pad için, 4 tane sağ tuş takımı, 4 tane öndeki tuşlar için, 1 tane de topraklama için. Toplamda 13 tane, 24 değil. Yuppi. Bu arada lehimleme yapacağınız alan siyah iletken bir madde ile kaplı. Sivri uçlu birşeyle yavaşça kazırsanız alttaki bakır yüzeye ulaşabilirsiniz. Ama çok bastırmamak lazım, çünkü bakır yüzeyi de yerinden çözebiliriz.</div><div style="text-align: justify;">Sol tarafı lehimledim. Şu şekilde gözüküyor;</div><div style="text-align: justify;"><span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpKp3i-FmAoxkLz-HUfw4QSUtIcf4bsovCSwXJpqnMpKHRSJPiFyZxdx79KisqYymUdS9nyU7aw-ZIWwa_eX9fuRpWuGe0OewKluHm31GQkQf9EmTxgNIbxwXRcPwpzg7htHGGZjvaT6Y/s400/contor_02.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5642136693720989026" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 322px; " /></span></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; ">
<br /></span></div><div style="text-align: justify;">Burada dikkat etmek gereken şey, kesinlikle lehimin, yuvarlağın diğer tarafına kaçmaması. Bir de daha düzgün durması için mavi ile işaretli olan yerlerdeki deliklerden geçirdim kabloları. Size de böyle yapmanızı tavsiye ederim. Ayrıca kırmızı ile işarekleriğim yerlerle lehim yapacağım yerler birbirine bağlantılı. Bu kısımlardan lehimleme işlemini doğru yapıp yapmadığımızı multimetre ile kontrol edebiliyoruz.</div><div style="text-align: justify;"><span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCX8Aannuvtx5dZmL_xDa6NId_Y6k7LXqHdQP8uFiWl6L1FtFdq0oTqoWBHCcCvwkCsOevXwEUU7EOGIsXvu5DSzFvUYUeCLI-BtICocjnmmkklgqvJKCZM0svpOrBxzF9syXc6_Bps98/s400/control_03.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5642138498138363954" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 243px; " /></span></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; ">
<br /></span></div><div style="text-align: justify;">Son olarakta lehimlediğim yerleri ve devrenin altında kalan yerleri sıcak silikon ile silikonladım. Bölyece daha sağlam oldu. Bu arada ön kontrol devresinde bir tane lehimlenmiş yüzey görünüyor. Oraya bir tane daha kablo bağladım daha sonra. Boş olmasına aldırmayın.</div>Anonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-16659874888485758852011-07-18T06:37:00.000-07:002011-07-18T07:01:24.845-07:00%50Olasılıklar üzerine konuşuyorduk arkadaşlarla. Enteresan konu. Şöyle bir düşünceye sahibim.<div>Örneğin; bir piyango bileti aldık. 6 haneli bir sayı var bilette. Ve en son biletin numarası 999999. Bu duruma göre, en genel bilgilerime dayanarak büyük ikramiyenin bize çıkma olasıllığı 1/999999 oluyor değil mi ?</div><div>Olmuyor işte. </div><div>İstatistik bilimi dünyanın en büyük kandırmacasıdır. Çok mekaniktir ve kuantum teoremine taban tabana zıttır. </div><div>Açıklayayım.</div><div>Bikere insan oğlu geleceği bilme yetisine sahip değildir. Ama rahat durmaz kaşınır ve geçmiş verilere, tecrübelere dayanarak bir hesaplama yapar ve buna olasılık der. Ama içinde bulunduğumuz ça olasılıkların çok ötesindedir. Kontrol meraklısı olan kişi bütün olasılıkları hesapladığını düşünür ve bunu matematiksel olarak bir alanda sınırlar. </div><div>Şöyle bir hikaye vardır.</div><div>Zamanın birinde, birbirlerini seven iki kral varmış. Birgün ters düşmüşler ve savaş kararı almışlar. Ama senelerdir dost olduklarından kan dökmeden aralarındaki husumeti çözmeye karar verirler. Zar atacaklardır.</div><div>Birinci kral zarı atar 6 gelir.</div><div>- Hadi bakalım görelim seni, der birinci kral ve ekler, 6 atma ihtimalin 6 'da bir. at da görelim.</div><div>İkinci kral zarı atar ve 6 gelir.</div><div>Tekrar zar atarlar.</div><div>Birinci kral zarı atar ve tekrar 6 gelir.</div><div>- Hah yine altı geldi, der birinci kral. Artık üst üste iki kez 6 atma ihtimalin 36 da 1, der.</div><div>İkinci kral zarı atar ve 6 gelir.</div><div>Tekrar zar atarlar.</div><div>Birinci kral yine 6 atar.</div><div>- Tamam, der. Üst üste üç kez 6 atma ihtimalin 216 'da 1.</div><div>İkinci kral zarı atar. Zar ikiye bölünür ve bir tarafı 6, diğer tarafı 1 olarak masanın üzerine düşer.</div><div><br /></div><div>Karışık oldu belki, ama ifade etmeye çalıştığım şey, eğer ortada istatistiksel bir durum var ise, bu insanın etrafını kontrol etme çabasının bir sonucudur ve zavallı bir durumdur. Kişi geleceği bilemeyeceği için, en iyi ihtimal ile bir durumun gerçekleşme olasılığını %50 olarak öngörebilir. </div><div><br /></div><div><br /></div>Anonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-2443944835675879062009-07-06T05:30:00.000-07:002011-07-18T06:29:00.774-07:00Processing Ders Notları - Temel - Alıştırmalar<img src="file:///C:/Users/biOss/AppData/Local/Temp/moz-screenshot.jpg" alt="" /><span style="font-weight: bold;">Renkli Kareler</span><br /><span style="text-decoration: underline;"><br /></span><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqUJuoiCzzafeNsRYaRMyzMSo2B9EnhXCCJRxFZRpI_45Ch3DiqZ-ir6WvLNiC3GYwNc20QvDnc-5sq0tCRKIwEoUENpp2Ak6IBhH0VyKkgZ0zWfMduv2eCEnTXFX9yoGE2gHcyNW0gPuI/s1600-h/e_01.jpg"><img style="cursor: pointer; width: 379px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqUJuoiCzzafeNsRYaRMyzMSo2B9EnhXCCJRxFZRpI_45Ch3DiqZ-ir6WvLNiC3GYwNc20QvDnc-5sq0tCRKIwEoUENpp2Ak6IBhH0VyKkgZ0zWfMduv2eCEnTXFX9yoGE2gHcyNW0gPuI/s400/e_01.jpg" alt="" id="BLOGGER_PHOTO_ID_5355324373160460402" border="0" /></a><br /></div><span style="text-decoration: underline;"><br /></span>void setup(){<br />size(400,400);<br />background(255);<br />frameRate(30);<br />}<br /><br />void draw(){<br />rectMode(CENTER);<br />strokeWeight(random(1,4));<br />fill(mouseX,mouseX-random(1,255),mouseY);<br />rect(mouseX,mouseY,50,50);<br /><br />}Anonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-41769441468184795842009-07-06T03:25:00.000-07:002011-07-18T06:29:00.774-07:00Processing Ders Notları - Temel 3<span style="font-weight: bold;">Void</span><br />Processing, her modern programlama dili gibi obje tabanlı programlamayı destekler. Bunu kek yapımına benzetebiliriz. Önce gerekli mazemeyi temin edersiniz. Sonra yumurta ile şeker ve yağı çırparsınız. Ardından un ekleyip iyice karıştırıp kakao ilave edersiniz. Ve fırına koyup pişirirsiniz. Burada önemli olan nokta herşeyin bir sırası olmasıdır. Bütün mazemeyi aynı anda kaba koyup karıştırırsak kekimiz pek bir halta benzemez. İşin sırrı gereken mazemeyi doğru zamanda kek hamuruna karıştırmaktır.<br />Programlama yaparken de aynı şey söz konusudur. Önce genel olarak ihtiyacımız olan şeyleri belirleriz, ardından adım adım programa eklemeler yaparız. Void komutu burada devreye girer.<br />Bu derste<br /><br />Void setup(){ }<br />Void draw(){ }<br /><br />komutlarını işleyeceğiz.<br /><br />Daha önce yaptığımız örnek üzerinden gidelim.<br /><br />size(200,200);<br />background(255);<br />stroke(0,255,0);<br />strokeWeight(5);<br />fill(255,0,0);<br />rectMode(CENTER);<br />rect(100,100,50,50);<br /><br />bu kodu parçalara bölüyoruz.<br /><br />void setup(){<br />size(200,200);<br /><br />}<br /><br />void draw(){<br /><br />background(255);<br />stroke(0,255,0);<br />strokeWeight(5);<br />fill(255,0,0);<br />rectMode(CENTER);<br />rect(100,100,50,50);<br /><br />}<br /><br />Programın yeni halini çalıştırdığımız zaman, değişen hiçbirşey olmamış gibi geliyor bize. Halbuki büyük değişiklikler var. Açıklayayım<br /><br />void setup(){<br />size(200,200);<br /><br />}<br /><br /><span style="font-weight: bold;">void setup</span> programımızın genel ayarlarının yapıldığı yer oluyor. Burada ki kodlar bir kez okunur ve birdaha okunmazlar.<br /><br /><br />void draw(){<br /><br />background(255);<br />stroke(0,255,0);<br />strokeWeight(5);<br />fill(255,0,0);<br />rectMode(CENTER);<br />rect(100,100,50,50);<br /><br />}<br /><br /><span style="font-weight: bold;">void draw</span> ile başlayan komut seti ise, şu durumda, program kapatılana kadar sürekli devam edecek komutlarımızı içeriyor. Aslında program çalıştırıldığında sürekli aynı dörtgen sürekli üst üste çiziliyor. Dörtgenin konumu değişmediği için biz onu durağan görüyoruz. Ufak bir değişiklik yaparak processing ile ilk animasyonumuzu yapalım.<br /><br /><br />void setup(){<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwFbWVdjMr4-N7dHByaVJQIzbv1MqAhSGsLBg1RlY3Ct4kLfBa_e6AK-2g1Xtg7OvhuSGbkaATOr-UFSdTRbIQtyK2rr2Yv6YEnhC2yyWTUcsK2H0lSRbMCx3bi6tF6XJiXMaopUXvpIGN/s1600-h/c_2d.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 206px; height: 228px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwFbWVdjMr4-N7dHByaVJQIzbv1MqAhSGsLBg1RlY3Ct4kLfBa_e6AK-2g1Xtg7OvhuSGbkaATOr-UFSdTRbIQtyK2rr2Yv6YEnhC2yyWTUcsK2H0lSRbMCx3bi6tF6XJiXMaopUXvpIGN/s400/c_2d.jpg" alt="" id="BLOGGER_PHOTO_ID_5355299576273402834" border="0" /></a><br />size(200,200);<br /><br /><br />}<br /><br />void draw(){<br /><br />background(255);<br />stroke(0,255,0);<br />strokeWeight(5);<br />fill(255,0,0);<br />rectMode(CENTER);<br /><span style="font-weight: bold;"> </span><span>rect(<span style="font-weight: bold;">mouseX</span>,<span style="font-weight: bold;">mouseY</span>,50,50);</span><br /><br />}<br /><br />Burada mouseX ve mouseY değişkenlerini kullanarak, dörtgenin mouse pointerının o andaki pozisyonunu orta nokta olarak aldık ve 50 x 50 pixellik kutu çizdirdik. Yukarda belirttiğim gibi program çalıştığı sürece bu kutu <span style="font-weight: bold;">void draw()</span> komutu sayesinde sürekli çizildiğinden biz kutuyu mouseun hareket ettirdiğini algıladık.<br /><br />Bu arada <span style="font-weight: bold;">background(255);</span> satırnın void draw(); ın içinde void setup a taşırsak bakın neler oluyor.<br /><br />void setup(){<br />size(200,200);<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA1EtPb_odIkiN1RPhyphenhyphenjLiOPzIIKOefX9mOPWpMuU8mUOJytYzrKV02KzQUVuf2OhdvvFchzsAByDZ1flDdG8ijnqHaIt_cnJ8ptEjnnW1JOJF3mO-6qdr2dIzwP-4V1PYpM8WyMhZglUJ/s1600-h/c_2e.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 206px; height: 228px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA1EtPb_odIkiN1RPhyphenhyphenjLiOPzIIKOefX9mOPWpMuU8mUOJytYzrKV02KzQUVuf2OhdvvFchzsAByDZ1flDdG8ijnqHaIt_cnJ8ptEjnnW1JOJF3mO-6qdr2dIzwP-4V1PYpM8WyMhZglUJ/s400/c_2e.jpg" alt="" id="BLOGGER_PHOTO_ID_5355301716453339042" border="0" /></a><br />background(255);<br /><br />}<br /><br />void draw(){<br /><br />stroke(0,255,0);<br />strokeWeight(5);<br />fill(255,0,0);<br />rectMode(CENTER);<br />rect(mouseX,mouseY,50,50);<br /><br />}<br /><br /><span style="font-weight: bold;"><br /><br />background(255); </span>satırını void setup() ın içine taşıdığımızda artık bu komut bir kez okunacağından kutunun mouse tarafından kontrol edilen pozisyonları ekranda kalıyor ve bu efekt vasıtasıyla ekrana çizim yapılıyormuş gibi bir izlenim oluşuyor.<br /><br />Örnek verelim ;<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm4euWPcKdHhopL-doqM-RQ2Ey8juVMyy5giaiaRZgiAo7abYQbLCclhCOGyq0E4PHpJIJPHnLFfX3KeT98GO5WVuDXv0btO77tezojqNc-4waRWJYGbivmkXHbKWRCu08dWoXUAC_ZJOu/s1600-h/c_2f.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 206px; height: 228px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm4euWPcKdHhopL-doqM-RQ2Ey8juVMyy5giaiaRZgiAo7abYQbLCclhCOGyq0E4PHpJIJPHnLFfX3KeT98GO5WVuDXv0btO77tezojqNc-4waRWJYGbivmkXHbKWRCu08dWoXUAC_ZJOu/s400/c_2f.jpg" alt="" id="BLOGGER_PHOTO_ID_5355302982531725074" border="0" /></a><br />void setup(){<br />size(200,200);<br />background(255);<br /><br />}<br /><br />void draw(){<br /><br /><br />stroke(0);<br />strokeWeight(2);<br />line(mouseX,mouseY,100,100);<br /><br />}<br /><br /><br /><br />--------------------<br /><br /><br /><br /><br />void setup(){<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk9yw0cheOQPSeUfJZ2nvlpG0lmRCsUvmSUE4oFu18k-QPExFcwDyCdlKUXxqXKWQogLgT1iOXOT_Nd9QlxxWlaspEbrVT_vn_F58kaISjoGnniHUkb7W4aEsxNE9ALO23WVx35QSfRrtz/s1600-h/c_2g.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 206px; height: 228px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk9yw0cheOQPSeUfJZ2nvlpG0lmRCsUvmSUE4oFu18k-QPExFcwDyCdlKUXxqXKWQogLgT1iOXOT_Nd9QlxxWlaspEbrVT_vn_F58kaISjoGnniHUkb7W4aEsxNE9ALO23WVx35QSfRrtz/s400/c_2g.jpg" alt="" id="BLOGGER_PHOTO_ID_5355303587203591938" border="0" /></a><br />size(200,200);<br />background(255);<br /><br />}<br /><br />void draw(){<br /><br /><br />stroke(0);<br />strokeWeight(2);<br />line(pmouseX,pmouseY,mouseX,mouseY);<br /><br />}<br /><br />Buradaki pmouseX ve pmouseY komutu mouseun pozisyonunu sürekli güncelliyor ve bu sayede sanki çizgi çiziyormuş gibi bir izlenim ediniyoruz.Anonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-80650461251859328292009-07-06T01:28:00.000-07:002011-07-18T06:29:00.774-07:00Processing Ders Notları - Temel 2<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzN8JdzWCxqBXaEf8Hx-usLguN5neotWyscDMogAQPTUJgPqKbuSCyCkoa31NPT-LQxVxroBAv8qYkj5rLpnMfnNvdoZtf4c3LtAixcZ6SDdnsHjzMeKYvh7nS6IuYCln5RXzDqsywRfuS/s1600-h/c_2a.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 206px; height: 228px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzN8JdzWCxqBXaEf8Hx-usLguN5neotWyscDMogAQPTUJgPqKbuSCyCkoa31NPT-LQxVxroBAv8qYkj5rLpnMfnNvdoZtf4c3LtAixcZ6SDdnsHjzMeKYvh7nS6IuYCln5RXzDqsywRfuS/s400/c_2a.jpg" alt="" id="BLOGGER_PHOTO_ID_5355263079340242162" border="0" /></a><br />Bu noktada programımıza birkaç komut daha ekleyelim.<br /><br />size(200,200);<br />background(255);<br />stroke(0,255,0);<br />strokeWeight(5);<br />fill(255,0,0);<br />rectMode(CENTER);<br />rect(100,100,50,50);<br /><br /><br /><br /><br /><br />Şimdi her satırı açıklayalım.<br /><br />size (200,200 ) ---------200 x 200 pixellik kadraj oluştur.<br />background(255) -------Kadrajı beyaza boya<br /><span style="font-style: italic;">stroke(0,255,0) </span> --------Çizgi rengini saf yeşile ayarla<br />strokeWeight(5) --------Çizgi kalınlığını 5 pixel olarak ayarla<br /><span style="font-style: italic;">fill(255,0,0)</span> -------------Dörtgenin iç rengini saf kırmızı olarak ayarla<br />rectMode(CENTER) ----Dörtgeni orta noktasını baz alarak,<br />rect(100,100,50,50) ----x ve y aksisinde 100 pixel ara vererek 50 x 50 pixellik dörtgen çiz.<br /><br />Burada ilk göze çarpan renk verirken kullanılan sayılar. Neye göre veriyoruz bu sayıları. Açıklayayım.<br />Bu değerler aksi bir durum belirtmediğiniz sürece RGB renk sistemine göre oluşturulur.<br /><span style="font-style: italic;">stroke(0,255,0) ya da</span> <span style="font-style: italic;">fill(255,0,0) </span>de gördüğümüz sayı değerleri,<span style="font-style: italic;"> </span>RGB nin sayı olarak yazılmasından başka bir şey değildir. Biraz daha açalım.<br /><br />R = Kırmızı ( <span style="font-weight: bold;">R</span>ed )<br />G = Yeşil ( <span style="font-weight: bold;">G</span>reen )<br />B = Mavi ( <span style="font-weight: bold;">B</span>lue )<br /><br />R,G,B tek tek 0 - 255 arasında bir değer alabilir. 0 renk yok, 255 ise o renkten mümkün olduğu kadar çok var anlamına gelir. R,G,B ye ayrı ayrı 0 ila 255 arasında bir sayı verilerek 16 milyon dan biraz fazla renk oluşturulabilir. Örnek verelim ;<br /><span style="font-style: italic;"><br />fill(69,54,150) ------- </span>Bu renk mavi renge yakın bir renk olur. Çünkü <span style="font-weight: bold;">B</span> hanesindeki değer diğerlerinden daha yüksek bir değer.<br /><br /><span style="font-style: italic;">fill(200,54,40) ------- </span>Bu renk kırmızı renge yakın bir renk olur. Çünkü <span style="font-weight: bold;">R</span> hanesindeki değer diğerlerinden daha yüksek bir değer.<br /><br />Bu noktada dikkat edilmesi gereken birşey var. Televizyon, monitör gibi ışık kaynaklı görüntüleme aletlerinde ana renkler <span style="font-weight: bold;">kırmızı, yeşil ve mavi</span> dir. Hepimiz televizyonun dibine girip o küçük noktacıklara yakından bakmışızdır. Bu üç nokta bir araya gelip <span style="font-weight: bold;">pixel</span> i oluşturur. Ve yukarda bahsettiğimiz herbir kanal için ( RGB ) bu üç nokta 0 dan 255 e kadar olan değerlerle aydınlatılır. Böylece ekranda renk oluşur. Ancak resim derslerinden hatırladığımız kadarı ile ana renkler kırmızı sarı ve mavidir. Boya ile örneğin turuncu elde etmek istediğim zaman, kırmızı ve sarıyı belirli bir miktarda karıştırmamız gerekir. Ama mönitörde bu rengi elde etmemiz için Kırmızı ve yeşili belirli bir miktarda karıştırmamız gerekir. RGB sisteminde hangi rengi nasıl eldeceğimiz biraz karışık gibi duruyor ama herhangi bir resim işleme programı ( örneğin Adobe Photoshop ) ile bu durumun üstesinden gelebilirsiniz.<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQWvovd_a6Hdie9iRGGYfYpuoAAmwCN1lgDvAohMNcFtQv_WjUSkdU0w5D61DP-n3clHYoy9twNgJuoVbynoJAn757kcUOXQRClwMU3Ntt24kZJDp_wu6X7uDidUjX2JwD0O9uyyVEVaAj/s1600-h/c_2b.jpg"><img style="cursor: pointer; width: 400px; height: 268px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQWvovd_a6Hdie9iRGGYfYpuoAAmwCN1lgDvAohMNcFtQv_WjUSkdU0w5D61DP-n3clHYoy9twNgJuoVbynoJAn757kcUOXQRClwMU3Ntt24kZJDp_wu6X7uDidUjX2JwD0O9uyyVEVaAj/s400/c_2b.jpg" alt="" id="BLOGGER_PHOTO_ID_5355273736379148834" border="0" /></a><br /></div><br /><span style="font-style: italic;">fill(69,54,150)</span><span style="font-style: italic;">;</span><br /><span style="font-style: italic;">stroke(0,255,0);<br /></span><span>vb. renk kodları içeren komutlar</span><span style="font-style: italic;"> ; </span><span style="font-style: italic;"><br /><br /><br />fill(150)</span><span style="font-style: italic;">;<br /></span><span style="font-style: italic;">stroke(100)</span><span>;<br /><br />şeklinde de kısaca da kullanılabilir</span><span>.<br />Bu şekilde gri değeri elde edilir. Uzun yazılımı şöyledir.</span><span style="font-style: italic;"><br /><br /></span><span style="font-style: italic;">fill(150,150,150)</span><span style="font-style: italic;">;<br /></span><span style="font-style: italic;">stroke(100,100,100)</span><span>;<br /><br />Bunun anlamı her kanaldaki renkten , </span><span style="font-style: italic;">fill(150,150,150)</span><span style="font-style: italic;">; </span><span>komutu için, 150 birim renk kullan.</span><span style="font-style: italic;"><br />Buradan yola çıkarak;<br /></span><span style="font-style: italic;">fill(0); ----------- </span><span>hiçbir kanalda ışık olmadığı için <span style="font-weight: bold;">siyah</span></span><span style="font-style: italic;">,<br /></span><span style="font-style: italic;">fill(255); -------- </span><span>her kanal</span>da olabilecek en yüksek değer olduğu için <span style="font-weight: bold;">beyaz</span> dır<br /><br />diyebiliriz. Doğal olarak 0 - 255 arasındaki değerler de gri değerleri olur.<br /><span style="font-style: italic;"><br /></span><span style="font-weight: bold;"><br />RGBA</span><span style="font-style: italic;"><br /></span><span><span style="font-style: italic;">RGB nin yanında bir de Alpha kanalı vardır ki, bu kanal transparanlığı sağlar. Yine diğer kanallardaki gibi <span style="font-weight: bold;">A </span>değeri</span> de 0 - 255 arasındadır. 0 görünmez yani tam transparan, 255 ise tamamen görünürlük için verilen değerdir. Örnek ile açıklayalım;<br /><br />size(200,200);</span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9KqUS0JNAX6iB86_WmBouhOcYfQOPGvHpGvdCA8PD_9cmqLYgbcrGpTjziN81ucHPNXbkk8nsORJIUEdp5Fp1eLJV6CmUxo8NQYrtKszAme4huStGWUav-uZ6jckHiKSlAg2afNX0v1_e/s1600-h/c_2c.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 206px; height: 228px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9KqUS0JNAX6iB86_WmBouhOcYfQOPGvHpGvdCA8PD_9cmqLYgbcrGpTjziN81ucHPNXbkk8nsORJIUEdp5Fp1eLJV6CmUxo8NQYrtKszAme4huStGWUav-uZ6jckHiKSlAg2afNX0v1_e/s400/c_2c.jpg" alt="" id="BLOGGER_PHOTO_ID_5355278137209361874" border="0" /></a><br /><span>background(255);<br />stroke(0,255,0);<br />strokeWeight(5);<br />fill(255,0,0);<br />rectMode(CENTER);<br />rect(100,100,100,50);<br /><span style="color: rgb(153, 153, 153);"></span><br />noStroke();<br /><span style="color: rgb(153, 153, 153);"></span>fill(0,0,255,100);<br />rectMode(CENTER);<br />rect(100,100,50,100);<br /><br /><br />Son paragraftaki yeni değeri açıklayalım;<br /><br /></span><span></span><span>fill(0,0,255,100)---- son hanedeki 100 değeri yaklaşık %35 transparanlık sağlar. (255 / <span style="font-weight: bold;">100</span> )<br /><br /><br />son bir not.<br /><br />Eğer çizdiğiniz şeklin kenarlarında çerçeve olsun istemiyorsanız<br />noStroke();<br /><br />Şekilin içinin boş olmasını istiyorsanız<br />noFill();<br /><br />komutunu kullanmanız gerekir.<br /><br /></span><span><span style="color: rgb(204, 204, 204);"><br /><br /></span></span>Anonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-79439210025985689792009-07-05T23:49:00.000-07:002011-07-18T06:29:00.774-07:00Processing Ders Notları - TemelProcessing de ekrana birşeyler çizmek için birçok komut vardır. Şu ana kadar olan çalışmalarımda karşılaştığım komutlardan bazıları şunlar.<br /><br />rect(0,0,50,50);<br /><br />ellipse(0,0,50,50);<br /><br />line(10,20,60,90);<br /><br />Şimdi bu komutlardan birine yakından bakalım.<br /><br /><span style="font-weight: bold;">rect(0,10,50,60);</span><br />Bu komut şunu söylüyor. Ekranın soldan 0. pixel i ve üstten 50 pixelinden başlayıp, genişliği 50 pixel, yüksekliği 60 pixel olan bir dikdörtgen çiz. Burada unutulmaması gereken; rect(x,y,w,h) dizilimi.<br />x = x eksenindeki yer.<br />y = y eksenindeki yer.<br />w = genişlik ( width ).<br />h = yükseklik ( height ).<br /><br />x,y,w,h sabit bir sayı ( 10, 15, 17 vb. ) olabildiği gibi değişkenlerde olabilir.<br />Örneğin ;<br /><br /><span style="font-weight: bold;">rect(50,50,random(60-90),50);</span><br /><br />Burdaki <span style="font-weight: bold;">w,</span> yani genişlik değerindeki random(60-90) komutu, program her çalıştırıldığında 60 ile 90 arasında rasgele bir sayı üretip <span style="font-weight: bold;">w</span> değerine atar. Kafanız karıştı ise burayı es geçebilirsiniz.<br /><br />Ekrana birşey çizdiğinizde processing sizden neyi baz alıp çizimi gerçekleştireceği bilgisini ister. Eğer belirtmezseniz, çizilen şeyin sol üst köşesini baz alarak çizimi gerçekleştirir. ( c_1a )<br />Örneğin ;<br /><br />size(200,200);<br />rect(100,100,50,50);<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYvmjOsYmo4H1n4wl0eG42Yot4ZyOIH7nrCH9TmXwovTRwegd00MoKbSviJ8DAu9D2BUKvYS9yWfsbO4oPWSCx5W2fkdghcDW_y0m07vGoC-oX3RokSc8e21yPsIeRcY9bc0FWL5UTIgyO/s1600-h/c_1a.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 200px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYvmjOsYmo4H1n4wl0eG42Yot4ZyOIH7nrCH9TmXwovTRwegd00MoKbSviJ8DAu9D2BUKvYS9yWfsbO4oPWSCx5W2fkdghcDW_y0m07vGoC-oX3RokSc8e21yPsIeRcY9bc0FWL5UTIgyO/s400/c_1a.jpg" alt="" id="BLOGGER_PHOTO_ID_5355257784112669634" border="0" /></a>c_1a</div><br />Bu iki satırın anlamı şudur;<br />- 200 x 200 pixellik bir kadraj oluştur.<br />- 200 x 200 pixellik bu kadrajın, x ve y aksisinden 100 pixel ara verip, 50 x 50 pixellik bir<br /> dörtgen çiz.<br /><br />Peki, diyelim belirttiğimiz noktayı çizeceğimiz objenin merkezi olarak almak istiyorsak ne yapacağız. (c_1b) Şöyle;<br /><br />size(200,200);<br />rectMode(CENTER);<br />rect(100,100,50,50);<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-zb7l1hk6bP3yFng1HnOoTBLtOyhyphenhyphenZ2oGscVCC3X8XQoqhV-xXetsETSpjj8qwHJFQHnfP5Kpp46FtreXb-uOjoslHj0xH_ZPIfQt70vfat2jVCmOgSlo9KtYzgz9Lb2e7RTDDG-qHtSc/s1600-h/c_1b.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 200px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-zb7l1hk6bP3yFng1HnOoTBLtOyhyphenhyphenZ2oGscVCC3X8XQoqhV-xXetsETSpjj8qwHJFQHnfP5Kpp46FtreXb-uOjoslHj0xH_ZPIfQt70vfat2jVCmOgSlo9KtYzgz9Lb2e7RTDDG-qHtSc/s400/c_1b.jpg" alt="" id="BLOGGER_PHOTO_ID_5355257272253164098" border="0" /></a></div><div style="text-align: center;">c_1b<br /><br /></div>Bu satır ile x ve y de verilen değerleri merkez noktası olarak aldık ve 50 x 50 pixellik bir dörtgen oluşturmuş olduk. Hemen önemli bir detay vereyim. Processing büyük küçük harf ayrımı yapan bir programlama dili. Yani rectMode(CENTER); yerine rectmode(center) veya varyasyonlarını yazarsak programımız hata verir. Zaten kodu yazarken renkler ile uyarır. Eğer bir kod ( rect, rectMode, size gibi ( sayılar dahil değil bu duruma ) ) siyah renkli ise muhtemelen bir problem vardır. Dikkat etmekte fayda var.Anonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-29343778285629845742009-07-05T22:55:00.000-07:002011-07-18T06:29:00.774-07:00Processing Ders Notları - Girişİlk başlarda çöp kamyonu şöförü olmak istiyordum. Her sabah kocaman bir kamyonun arkasındaki aparatı kaldırıp indiriyordu bu adam. Camdan bakarken gördüğüm kadarıyla önünde birsürü kol, tuş ve bilimum kontrol mekanizması vardı ve çöpçüler çöp konteynırını arabanın arkasına yanaştırıp şöförün mekanizmayı çalıştırmasını bekliyorlardı. Ne güzel bir iş. Çöplerle uğraşıyor ama hiç kirlenmiyor, üstelik o kocaman kamyonla da oynuyor, diye düşünmüştüm.<br />Biraz ayran gönüllüydüm herhalde çocukken. Star Wars çıkmıştı bir arkşam parliamen sinema kulübünde yanlış hatırlamıyorsam. Jedi olamayacağımı biliyordum zira etrafta ne Obi Van Kenobi ne Usta Yoda ne de Dart Vader vardı. Ben de astronot olmaya karar verdim. Bu da kısa sürdü ve eve alınan Commodore 64 ile bilgisayar dünyasına giriş yaptım. Artık tek hedef vardı bilgisayar mühendisliği. 64 ler dergisindeki kodları satır satır kelime kelime yazıp olmayan ingilizce ile anlamaya çalışırdım. Ufak tefek programcıklar da yapmışlığım vardır ama beklediğim o grafiklere bir türlü ulaşmak mümkün olmadı. Sonra yanlış tercihler, ergenlik vs. girdi araya ve programcılık bahsini uzun süre kapadım. Ta ki şu günlere kadar.<br /><br />Processing, özellikle benim gibi, mesela, Windows 'un herhangi bir sistem dosyasını açıp " vay anasını, ne yazmış bu adam buraya, allalla " diyen sayısal zekası biraz kıt bireyler için ( tabii ki evet siz süper zekalı matematik dehaları da unutulmamış ) geliştirilmiş özellikle grafik programlama konusunda birkaç satır kod ile harikalar yaratabileceğiniz bir programlama dilidir.<br />Processing ile çok kısa bir zaman içinde, örneğin, winamp ın visualization ekranında ki gibi grafikler yaratabilirsiniz. Ve en güzel tarafı bu yaratılan görüntülerin interaktif olması. Yani mouse, klavye, webcam, mikrofon gibi ekstra donanımlardan aldığınız veriler ile ekrana çizilen görüntünün değişiyor olması. Tabi ki bu kısımlara ulaşmak processing e ne kadar zaman ayırdığımız ile doğru orantılı. İşte tam bu noktada, bu yazının ve olası ilerideki yazıların gidişatı ile ilgili açıklama yapmakta yarar var. <span style="font-weight: bold;">Ben Processing bilmiyorum.</span> Ama öğrenmeye çalışıyorum. Bu yazıları da kendi kendine birşeyler yapmaya çalışan birinin acı dolu çığlıkları olarak görebilirsiniz. Belki birilerin acısını bastırırım bu şekilde. Bu da birşeydir.<br /><br /><span style="font-weight: bold;">Kaynaklar</span><br /><a style="color: rgb(255, 153, 0);" href="http://www.processing.org">http://www.processing.org</a><br /><a style="color: rgb(255, 153, 0);" href="http://www.learningprocessing.com/">http://www.learningprocessing.com</a>Anonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-52102046586825325022009-04-17T13:04:00.000-07:002011-07-18T06:29:00.775-07:00eri<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5cqP5OxO3a_h_WFMmy3c8gBmWwnOcUVV1-LDcYO2G8cudKBY_yVOxnvqAoCbbCgNTzwSZwrvJDm1BTaPtMMQcz3zb7rrHhHIH0wQUG9-PSH94hd2L5fprs31WBOkDF4DKq-wGIkxFg20b/s1600-h/mogu2.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 276px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5cqP5OxO3a_h_WFMmy3c8gBmWwnOcUVV1-LDcYO2G8cudKBY_yVOxnvqAoCbbCgNTzwSZwrvJDm1BTaPtMMQcz3zb7rrHhHIH0wQUG9-PSH94hd2L5fprs31WBOkDF4DKq-wGIkxFg20b/s400/mogu2.jpg" alt="" id="BLOGGER_PHOTO_ID_5325753983023230658" border="0" /></a>Anonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-28295504603099470092009-04-16T14:49:00.000-07:002011-07-18T06:29:00.775-07:00Gece Çalışması<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoOaQBzFC1TRJl2a1O7oTpwemX55W7UT-ykNFx_ldE9kwxqn8V9vDnXJuxvXjBWdkVE_oDoIkTOuCnU7h7sMeNEoBxERngKMDUPEJrH1jDrWWBSazLPeKrEBA7eMe4kIF-M1CyuQfoAZ6B/s1600-h/portre3_s.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 292px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoOaQBzFC1TRJl2a1O7oTpwemX55W7UT-ykNFx_ldE9kwxqn8V9vDnXJuxvXjBWdkVE_oDoIkTOuCnU7h7sMeNEoBxERngKMDUPEJrH1jDrWWBSazLPeKrEBA7eMe4kIF-M1CyuQfoAZ6B/s400/portre3_s.jpg" alt="" id="BLOGGER_PHOTO_ID_5325410361931956482" border="0" /></a><br /><br /><br />Hadi bakalım.Anonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-45051501538101877602009-04-16T09:23:00.000-07:002011-07-18T06:29:00.775-07:00Kitap : Körlük<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1r3yFtQhCNRVJxs7uc5KDi67UQqp978TyiqBDVsLZJNIsJg7FZgPuZ7qqkL9DrSBHi5a5J7v_cYsC2kgFCm7jjmopa41p4Y84fmjd79GeL-LORFWXOfMhVaSYovR30MvFnx-2WyShi9fj/s1600-h/62342_2.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 222px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1r3yFtQhCNRVJxs7uc5KDi67UQqp978TyiqBDVsLZJNIsJg7FZgPuZ7qqkL9DrSBHi5a5J7v_cYsC2kgFCm7jjmopa41p4Y84fmjd79GeL-LORFWXOfMhVaSYovR30MvFnx-2WyShi9fj/s320/62342_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5325326004511503170" border="0" /></a><br />Son zamanlarda okuduğum en güzel kitaplardan biri. Kırmızı ışıkta arabası ile dururken bir anda kör olan bir adam ve bu adama temas eden herkese körlüğün nezle gibi bulaşmasını konu alıyor. Stephen King havası hakim kitaba. Ama biraz<br />daha edebi bir anlatım ile ele alıyor yazar hikayeyi. Kitaba<br />dair kişisel olarak çok beğendiğim bir başka güzellik ise, isim<br />hafızası eksilerde gezen bir insan olarak söylüyorum, yazarın<br />isim yerine niteleme sıfatları kullanması. Gözyaşı yalayan köpek, doktorun karısı, ilk kör gibi.<br />Okunası, okunduktan sonra düşünülesi bir kitap.<br /><span style="font-style: italic;">Tavsiye ederim efendim.</span><br /><br /><span style="font-style: italic;font-family:times new roman;" >i: Zeki Müren vurgusu</span>Anonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0tag:blogger.com,1999:blog-8781355716498379090.post-52486121694056434932009-04-16T08:11:00.000-07:002011-07-18T06:29:00.775-07:00Isır<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcnQJFI_mu0kLaSfe76CEVvrqY2PiglAJ1SoETqhb70xw6Z5Roj60yF8R9H9yzfMouySh1QSz_-yoYc7HP6eiMJVUw5x5V2WyDqdP05-Wbe0-GkhMz-AWK10GPw3tyE1evTTYfqUdngSE_/s1600-h/dino+copy.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcnQJFI_mu0kLaSfe76CEVvrqY2PiglAJ1SoETqhb70xw6Z5Roj60yF8R9H9yzfMouySh1QSz_-yoYc7HP6eiMJVUw5x5V2WyDqdP05-Wbe0-GkhMz-AWK10GPw3tyE1evTTYfqUdngSE_/s320/dino+copy.jpg" alt="" id="BLOGGER_PHOTO_ID_5325308150913800466" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMd3NBybEiGiHI8ZLCo_Vw5HzgziOPbVx-D4gRhlEY4OWOG-TVLSk_TSVmmTEMid7ZwpUG25aXXepaI_aXIy07aKJiugnfoZqYlKh4lFqRQtvn-ADOXctqNImCQPIi3SsaKjmoQ-UUCnxa/s1600-h/03_3.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMd3NBybEiGiHI8ZLCo_Vw5HzgziOPbVx-D4gRhlEY4OWOG-TVLSk_TSVmmTEMid7ZwpUG25aXXepaI_aXIy07aKJiugnfoZqYlKh4lFqRQtvn-ADOXctqNImCQPIi3SsaKjmoQ-UUCnxa/s320/03_3.jpg" alt="" id="BLOGGER_PHOTO_ID_5325308157572777810" border="0" /></a>En kötü girişim böyle olsun diyerekten ilk girişi aradan çıkarayım. Hadi bakalım.Anonymoushttp://www.blogger.com/profile/14855994250449620862noreply@blogger.com0