Sayfalar

30 Eylül 2011 Cuma

flash player 11 rc sürümü çıkmış meğer :)

          Daha önceden belirttiğim üzere Adobe, Molehill teknolojisi çerçevesinde şekillendirdiği Flash Player 11'in artık 6 Eylül 2011 tarihinden itibaren Release Candicate yani düzgün olarak çalışma potansiyeline sahip en dengeli sürümünü kullanıcılara Adobe Labs'de sunulmuş bulunmakta.

          Away3D Broomstick'in en güncel sürümünü indirdiğim zaman karşılaştığım o saçma sapan hatanın ( bakınız lütfen sağdaki resime ) nedeni ise de bu güncellemeymiş. Hataya da şöyle kısaca değinmem gerekirse; Sahneye yerleştirdiğim taşıt gitmesi gereken yönün aksi istikamette ilerlemekteyken tekerlekler de dönmesigerektiği eksenden de ayrı bir eksende dönmekteydiler :)

          Away3D'nin forumuna yazdığım zaman hatanın nedeninin Adobe'un Flash Player'ın RC sürümünde yaptığı sahne ayarlarındaki değişiklikten ötürü olduğunu öğrendim. Hal böyle olunca da benim de RC sürümüne geçiş yapmam gerekliydi ki halihazırda BETA sürümüne devam etmekteydim ne yazık ki :)

          Şimdi ise RC sürümüne geçmiş olmanın verdiği mutlulukla Away3D ile çalışmaya devam ediyorum. Teşekürler Away3D ve Adobe :)

           Bu arada aklıma gelmişken söyleyeyim FP11 BETA sürümünü kullanırken pek çok sitede Flash Player'ın çökmesine şahit oldum zira hâlâ problemli olduğu kısımlar mevcuttu. Ancak RC için o kadar birşey diyemeyeceğim zira daha yeni kurmuş olduğum için ne kadar hata vardır veya ne kadarı giderilmiştir bilemeyeceğim ancak tahminim şu yönde ki hataların çoğu giderilmiştir. Sonuçta o artık bir Release Candicate :) Ha diyorsanız ki ben Flash Player 11'i sevmedim ve kaldırmak istiyorum, sağolsun Adobe Labs onun için de küçük bir programcık hazırlamış. İndirmek için Flash Player 11'in indirme kısmının en altındaki kısma göz atınız lutfen :)

          Aşağıda ise en sonki projeme ait güncel birkaç resim mevcut. Renklere aldırış etmeyiniz zira halihazırda kaplamaları yerleştirmedim daha tam olarak ancak kısaca projeye değinmek gerekirse tahmin edebileceğiniz üzere küçük bir araba yarışı:
  • Renk seçimi
  • Seçilen rengin mat veya metalik olması
  • Plakaya kullanıcı adı yazılması :)
  • Ve fiziki ortamın nispeten ayarlandığı bir harita ancak kaplamalar daha yerleşmedi ama olsun o kadar :)


22 Eylül 2011 Perşembe

ve away3d 4.0 Alpha başlar.

  Çok Önemli Not - En Yenisi :) Bu yazıda bahsettiğim proje Flash Player 11 BETA sürümüne uygundur. Adobe Labs Flash Player 11'in Release Candicate sürümünde yapılan değişiklikler projenin çalışmamasına neden olacaktır. Yani en güncel sürümüyle şu andaki proje açılmayacaktır malesef. En yakın tarihte güncel haline uygun bir versiyonunu düzenleyip yükleyeceğim.

Yakın tarihte çıkmış bulunan Away3d'nin son sürümü olan Broomstick kod adlı sürüme ve Adobe'un geliştirmiş olduğu "Molehill" teknolojisine "flash, kaderi ve diğerleri... bir geri dönüş hikayesi..." ve "ve yeni bir dönemin başlangıcı: Away3D 4.0 Alpha – “Broomstick" adlı yazılarımda değinmiştim.O dönem KPSS denen illet yüzünden çok fazla ilgilenemdiğim bu alana şimdilerde yeniden dönüş yaptım ve iki gün önce ilk projemi yapmış bulunmaktayım. Bu projede herhangi bir amaç gütmedim. :) maksat Away3D'nin ve FP11'in kapasitesini sınamaktı. FP10 iken hayli sıkıntılı anlar yaşadığım aşikardı ancak artık şunu rahatlıkla söyleyebilirim ki çok yakında 3D'nin eksik olmadığı bir internet ortamı bizi bekliyor olacak gerek Molehill ile gerekse de WebGL ile :)
"Bump" veya "Normal" adı verilen bir kabartma tekniği.
Şimdi projeme değinecek olursam yukarıdaki boşluk benim çalışmama ait. ( Olur da açılmazsa veya FP11 kurmamış olanlar için de fikir vermesi açısından birkaç tanıtıcı resim ekledim ) Malesef ki dışarıdan çağırdığım diğer dosyalarla birlikte yükleyebileceğim bir sunucum olmadığı için Google Sites'e yükledim ancak gelin görün ki sebebini anlamadığım halde projeyi hantal bir şekilde oynatmakta. Eğer ki açılacak olursa sol üst köşedeki durum panelinde göreceğiniz RAM değerlerinin üçte biri oranında düşük bir miktarı kullanmakta aslında en azından kendi bilgisayarım adına böyle ama burada neden böyle davrandığından emin değilim. Kendi HTML dosyasından projeyi açtığım zaman tam performansıyla çalışmakta. Ancak o HTML dosyasını açmama da Google sağolsun izin vermiyor. Bu yüzden projeyi bende sıkıştırıp sunucuya yükledim. İsteyenin indirip bir de öyle görebilmesi için. İndirdikten sonra da projeyi Flash Player 11'in kurulu olduğu tarayıcıdan açmayı deneyeyiniz. Zira Default Player olarak 11 yerleşmiyor bilgisayarınıza, önceki sürüm neyse o kalmaya devam ediyor. O yüzden SWF dosyasının yerine HTML dosyasını açmaya çalışmayınız. İndirmek içinse tıklayınız :)
Sahneye yerleştirilmiş nesnelerin ve ışıkların ayar menüsü
Şimdi "Vay arkadaş sen demedin mi bu performanslı bir sürüm! Neden böyle hantal çalışıyor?" kısmını böylece hallettiğimizi düşünüyorum; keşke rahatlıkla projelerimi yükleyebileceğim bir alanım olsaydı diyerek devam ediyorum :)
Normal Texture özelliği
Projeyi yaparken ilk defa Flex kullanmış olamanın getirdiği eksikliği içimde bol bol hissettim ancak ne kadar da kullanışlı olduğunu görünce ayrı bi sevdim :) Bu proje dahilinde eklemek istediğim Component'ları eklemekte hayli sıkıntı yaşadım ama sonra öğrendim ki bu Component'lar meğer Flash Professional'ın kendi özelliğiymiş ve Flex içinde barındırmıyormuş dolaylı olarak da bir şekilde kullanmak istediğimiz componentları çağırmamız gerekteymiş. Bunun için şöyle bir yöntem izleniliyor ki çok da hoşuma gitti;
  • Flash Professional'da bir çalışma açıp içine istediğimiz componentları yerleştiriyoruz. 
  • Componentların sahnede olmasının bir önemi yok yeter ki kütüphanemize yerleşmiş bulunsun.
  • Çalışmamızın "Publish Settings" kısmında "Flash" çıktısını seçiyoruz 
  • Flash Ayar Sekmesinde "Export to SWC" seçeneğini onaylıyoruz ve Publish ediyoruz.
  • Projemizisi kaydettiğimiz yerde bulunan "projeadi.swc" dosyamıza gözümüz gibi bakıyoruz sonra da :)
Şimdi yaptığımız bu SWC dosyası ne işe yarar diyecek olursak şöyle kısaca artık onun bir harici component kütüphanesi olduğunu söyleyebiliriz. İçerisinde ise bizim Flash projesine dahil etmiş olduğumuz componentları barındırdığını bilmemiz yeterli. Kod kısmında ise bu componentların ihtiyaç duyduğu tüm diğer kütüphanelerin de ekli olduğunu göreceksiniz.

17 Mayıs 2011 Salı

bir matematik gizemi: asal sayılar

      Geçenlerde Tubitak'ın sitesinde bilgi yarışması gördüm ve merak edip açtım. Karşıma çıkan soruları merakla incelemeye başladım haliyle. Ancak daha ilk soru kafamda onlarca soru işareti oluşturmaya yetmişti ne yazık ki :) Şöyle ki; 2.000.000'dan sonraki ilk asal sayıyı soruyordu sorunun bir kısmında ki takıldığım nokta da orası oldu. Asal sayı bildiğim düz mantıkla 1'den ve kendisinden başka herhangi bir sayıya bölünmeyen sayı olmalıydı. Hal böyle olunca bu sayı için o kadar işlem yapılamazdı. Bunun bir yöntemi, bir formülü olmalıydı ve o sırada yanımda bulunan matematikçi arkadaşa danıştım. Ancak o da tam emin olamadı bu durum konusunda. Bunun üzerine internette araştırmalar yaptım ve karşıma üzerinde çaba sarfedildiği her halinden belli olan çeşitli formüller ve algoritmalar çıktı ancak bu da iş görmez nitelikteydi. İnsan eliyle bu formülleri uygulayıp denemek oldukça zahmetli olacaktı ve ben de ufak bir hilye başvurdum; bilgisayara :)

      Tercihim c++'dan yana oldu, haliyle derleyicim de favorim olan code::blocks oldu. İlk seferinde düz mantıkla ilerledim ve sayıları kendisine kadarki olan sayılara bölmekle yetindim:

bool asalKontrolDuzMantik(int gelen)
{
    int sayi = 2;
    if(gelen<2)
        return false;
    for(; sayi < gelen; sayi ++)
        if(gelen%sayi== 0)
            return false;
    return true;
}

      Haliyle iş görmez bir fonksiyon değildi ancak hantal olduğu inkar dilemezdi zira main'de fonsiyonumu 1'den 500.000'e kadar çağırdığımda oldukça vakit alıyordu yapılan işlemin süreci. Çünkü bir asal sayıya denk geldiğinde işlem o sayıya gelene kadarki süreç zarfında sürekli bölünüyor ancak bir sonuç elde edilemiyordu. Eğer ki hızlı işlem yapmanın önemli olduğu bir proje üzerinde çalışılıyorsa bu bir sorun teşkil etmekte bizim için. Bu sorunu gidermek için asal sayıların genel mantığı üzerinde internette yaptığım araştırmalar sonucunda sis perdesi biraz daha aralandı. Şöyle ki;
      Bir sayı için; kendisinin karekökü bir dönüm noktasıdır. Eğer ki sayı asal sayı ( 53 = 53 x 1 ) veya bir asal sayının karesi değilse ( 49 = 7 x 7 ) o zaman bu sayı kareköküne kadarki gelecek olduğumuz süreç içersinde bir sayıya elbette ki bölünecektir ( 51 = 3 x 17, 12 = 2 x 2 x 3 ). Asal sayının karesi olan sayımız ( 49 ) ise kareköküne ( 7 ) bölüneceği için o sıraya gelene kadarki sayılar onun için bir anlam ifade etmeyecektir.  Karekökünden sonra gelecek olan sayılar ise karekökünden önce gelecek olan sayıların yanıması olmaktan öteye gidemeyecektir. Bu noktadan sonra ikinci kez aynı sayılarla işleme tabi tutmuş olmaktan başka birşey yapmış olmayacağız.  
      Örneğin asal olmayan aşağıdaki sayılar için;
  • 132 ( 132 = 11 x 12 ) sayısının karekökü yaklaşık 11,48'dir.
  • 391 ( 391 = 17 x 23 ) sayısının karekökü 19,77'dir.
  • 8633 ( 8633 = 89 x 97 ) sayısının karekökü 92,91'dir.
Bu sayılar kareköklerine gelene kadarki bir sayıya muhakkak bölünecektir.
      Tamam ama bu noktada şu düşünülemez miydi; bu sayılar kendisine kadar döndürülse ne değişecekti ki? yine bölen bir sayıya denk geldiğinde bölünecek ve işlemden çıkacaktı ve karekökünün hesaplanmasının derdine düşülmeyecekti! Aslında bu sorunun yanıtı "Evet" olacaktır. Evet çünkü bu sayılar ha kendisine ha kareköküne kadarki olan sayı kez döndürülsün yine o sayıya ulaşınca işlemden çıkacaktı ANCAK; önemli olan nokta asal sayılarda yer alıyor. Asal olmayan sayılar için değişen birşey yok onlar yine bölünmeye devam edecekti ancak asal sayılar için düz mantıkla ilerlemiş olsaydık, özellikle de 2.000.003 asal sayısını düşünecek olursak, kendisine gelene kadar for döngüsüne tabi tuttuğumuz zaman bilgisayar aşırı vakit kaybettiriyor bize. Ancak kareköküne, 1414,21 sayısına, kadarki işleme bakılacak olunursa işlem fark edilir derecede hızlanıyor.

      Aşağıdaki fonksiyon incelenecek olunursa bu fonksiyonun karekök kullanılarak nasıl iyileştirildiği görülmektedir. Girilen sayı kareköküne kadar kendisine bölünmektedir.

bool asalKontrolKarekoklu(int gelen)
{
    int sayi = 2;
    if(gelen<2)
        return false;
    for(; sayi <= sqrt(gelen); sayi ++)
        if(gelen%sayi== 0)
            return false;
    return true;
}

      Ancak bu fonksiyonumuz halihazırda yine de hantaldır diyebiliriz. Tam manasıyla bir iyileştirme yapabilmek için karekök ( sqrt() ) fonksiyonunun for döngüsünün dışarısına çıkarılması lazımdır. Zira her for döngüsünde bir karekök hesaplanması yerine bir kez döngü başında hesaplanması ve bu sayının kullanılması daha mantıklı olacaktır. Yani;

bool asalKontrolIyilestirilmis(int gelen)
{
    int son,sayi = 2;
    if(gelen<2)
        return false;
    son=sqrt(gelen);
    for(; sayi <= son; sayi ++)
        if(gelen%sayi== 0)
            return false;
    return true;
}

son değişkeni bir kere karekökü hesaplayıp for döngüsüne kendisini sokmakta ve bu şekilde işleme devam etmektedir. Şimdi ise bu üç fonksiyonun işlem sürelerinin bir karşılaştırmasını göstereyim hemen:

      Örnekten de anlaşılacağı üzere kareköklü ve iyileştirilmiş fonksiyonumuz hayli fark atmış bulunmakta. İlk fonksiyon yaklaşık olarak 3 dakikalık bir süre harcadıktan sonra işlemini tamamlamaktadır. 
     Bu süreci hesaplamak için kullandığım main fonksiyonu ise;

int main(){
    clock_t bas1, bas2, bas3, son1, son2, son3;
    int k,sonuc1,sonuc2,sonuc3;
    k=sonuc1=sonuc2=sonuc3=0;

    bas1 = clock();
    for (int i=0;i<3;i++)
    {
        if(i==1)
        {
            son1 = clock();
            bas2= clock();
        }
        else if(i==2)
        {
            son2 = clock();
            bas3= clock();
        }
        for(k=0;k<500000;k++)
        {
            if(i==0)
            {
                if(asalKontrolDuzMantik(k))
                    sonuc1++;
            }
            else if(i==1)
            {
                if(asalKontrolKarekoklu(k))
                    sonuc2++;
            }
            else if(i==2)
            {
                if(asalKontrolIyilestirilmis(k))
                    sonuc3++;
            }
        }
    }
    
    son3 = clock();    
    cout<<"1. Toplam Asal Sayisi: "<<sonuc1<<" , Toplam Sure: "<<(son1-bas1)/CLOCKS_PER_SEC<<endl;
    cout<<"2. Toplam Asal Sayisi: "<<sonuc2<<" , Toplam Sure: "<<(son2-bas2)/CLOCKS_PER_SEC<<endl;
    cout<<"3. Toplam Asal Sayisi: "<<sonuc3<<" , Toplam Sure: "<<(son3-bas3)/CLOCKS_PER_SEC<<endl;
    
    getchar();
    return 0;
}


Bu arada unutmuşum Tubitak'ın sorusunu; 2.000.000'dan sonraki ilk asal sayı 2.000.003'müş. Yazmış olduğum bu küçük programcık sayesinde buldum. :) Bu blog adresini aynı soruyu araştırarak bulan arkadaşlara yardımcı olmuş da olalım o zaman :)

9 Mayıs 2011 Pazartesi

onlar, bunlar, şunlar...

Sonunda bir adet vimeo hesabı almış olmakla birlikte ilk iş yaptığım çalışmaların tanıtım videolarını internete koymak oldu. Hazır yeri gelmişken de blogda paylaşayım dedim :)

Aurmented Reality Uygulamalarım:




Ogre3D + Hydrax Uygulamam:


3DsMax Çalışmalarım:


4 Mayıs 2011 Çarşamba

flash, kaderi ve diğerleri... bir geri dönüş hikayesi...

        Değişimi farketmişsinizdir, artan bir ivmeyle gelişen bir teknoloji mevcut özellikle de sanal dünyada. Artık kişisel bilgisayarlarımızda kullandığımız programlar yavaş yavaş web ortamına geçmeye başladı. İlk önce ofis programlarımız geçti, daha sonrasında çizim programları internet ortamına geçti.Bu kaçınılmaz bir olaydı. Yavaş yavaş oyunlar da web ortamına geçmeye başladı. Özellikle Unity, Flash ve HTML5 sayesinde. Bu süreç zarfında ise kimi programlar dönemin vazgeçilmezi oldu, kimi kütüphaneler yenilendi ve kimileri de küllerinden yeniden doğdu. Bu seferki yazımda Flash'ın en sonki gelişmelerinden ve bu zamana kadarki geçirdiği mücadelelerden bahsetmeye çalışacağım.

        Flash'ı benimsemeye başladığım dönemler olan benim lise dönemlerimde hep kendi kendime neden flash'ın 3boyut desteği yok derdim veya o sıralar firma sahibi olan Macromedia'nın neden böyle işlere el atmadığını merak ederdim ve birgün el atmaları umuduyla beklerdim.
Adobe'un Macromedia'yı satın aldıktan sonraki çıkardığı ilk Flash versiyonu olan CS3 ile birlikte gelen yeni Action Script dili olan AS3 artık bu yeniliklere gebeydi. CS4 sürümüyle gelen Flash ise 3D'ye kodlarla değil de direkt olarak müdahale edebilecek kapasiteye erişmişti. Artık kendi araç çubuklarıyla da 3D destekli nesneler yapılabilmekteydi. Hal böyle olunca Web ortamında 3D teknolojisi daha da gelişti, görselleşti ve gerçek hayata yakın olmaya başladı. Ancak halihazırda performans açısından oldukça sıkıntılı durumlar yaşatmaktaydı kullanıcılara. İşte bu noktada bir tarafta Microsoft Silverlight'ı geliştirmeye devam ederken diğer tarafta da HTML5 devreye girmesiyle kafalarda şu soru türemeye ve giderek de yayılmaya başlamıştı; acaba Flash'ın sonu mu gelmekteytdi? Hepsine genel olarak bakınca ortalama aynı işlevi yapan diller mevcuttu piyasada. Web ortamında hem HTML5 hem de AS3 paint uygulaması kullandım ki ikisi de oldukça başarılıydı. Silverlight da pek çok özelliği açısından Flash'ın kapasitesine sahip ama bence Silverlight halihazırda Flash ile yarıştırılmamalı, onlar farklı kulvarların adamı. HTML5 ise benim gözümde daha ziyade AS3'e rakip olabilecek bir seviyede.


       Yaklaşık bir ay kadar önce Firefox4'ü kurdum. Ana sayfasında Web'o'Wonder dünyasını keşfetmemi söyleyen bir link bulunmaktaydı ki uzunca bir süre gerek duymamıştım keşfetmeye :) Bir gün aklıma esti ve açtım. Karşıma çıkan güzellikler beni resmen büyülemişti zira artık web ortamı sadece metinsel görsel içeriklerin sunulduğu interaktif bir ortam olmaktan çıkmaya, hatta daha ötesine gitmeye başladı. Bu gelişmeyi sağlayan HTML5'di ancak temelinde ise yeni bir kütüphane mevcut: "WebGL"

        Peki WebGL'de bu kadar abartılacak ne var derseniz, hemen anlatalım. WebGL Khronos'un çıkardığı ve geliştirdiği OpenGL'in web için piyasaya sürülmüş halidir. Peki OpenGL nedir? O ise başlı başına incelenmesi gereken bir konu ancak kısaca OpenGL her platforda desteği bulunan açık kaynak kodlu bir grafik kütüphanesidir.

Çizimleri, özellikle de üç boyutlu olanları kolaylaştırmak OpenGL'in temel görevidir dersek yanlış olmayacaktır. Microsoft'un DirectX'ine alternatif nitelikte bir kütüphanedir. Halihazırda açık kaynak kodlu olduğu için ücretsiz dağıtılmaktadır. Bu hem gelişmeyi hızlandırmakta hem de maddi açıdan sıkıntı yaratmakta kaçınılmaz olarak. Bugün pek çok oyun beraberinde OpenGL desteğiyle de gelmektedir ki açık kaynak kodlu olan Ogre3D ile yapılan oyunlar ve uygulamalar hangi kütüphaneyi seçmek istediğini kullanıcıya sorar.
Şimdi OpenGL hakkında genel bi kanıya sahip olduğumuza göre WebGL'in de bunun web ortamı için hazırlanmış sürümü olduğunu söylemek yanlış olmaz. Zira Java Script kodlarıyla artık pek çok üç boyut projesine el atabilecek seviyeye ulaşmıştır HTML. Dikkat edilebilecek bir diğer husus olarak da OpenGL'in performansıdır zira OpenGL direkt olarak donanıma erişebilen bir kütüphanedir. Bu noktadan yola çıkarak WebGL'in de daha tam olarak kullanmasam da donanımlara eriştiği söyleyebilirim çünkü örneklerindeki performans oldukça tatmin edici bir seviyedeydi. HTML5 açısından bakınca olay kaba hatlarıyla bu şekilde.
 
   ( Örnek WebGL uygulamalarını resimlere tıklayarak veya Khronos deposuna gidip inceleyerek ne demek istediğimi daha iyi anlayacağınızı düşünüyorum. )

          Tam da Flash performans açısından sıkıntılar çekerken yaşanan bu gelişme bir anda dikkatleri çekti ve eleştiriler artırmaya başladı; Flash ne durumdaydı? Şahsi görüşüm olarak söylemem gerekirse bu gelişmeler daha pek çok kişi için bilindik değil, bilinen şey ise Flash'ın yıllardır süregelen varlığı. Ben daha ortaokul yıllarımdayken vardı Flash uygulamaları. Hal böyleyken Adobe'un bu potansiyeli yok sayacağını ve pes edeceğini düşünmek de oldukça mantıksızdı bu tartışma için. Halihazırdaki 3D kütüphanelerinden olan Away3D, Papervision3D vb. kütüphanelerin ya kendi kodlarını yeniden düzenlemesi gerekirdi ya da Adobe'un kullanıcı dostu bir gelişmeyle geri dönmesi ki her ikisi birden oldu. Hem Adobe Labs'da " Molehill " adlı teknolojisini geliştirirken buna uyumlu sürümü olan Flash Player'ın 11'i geliştirdi hem de 3D kütüphaneleri uygun yeni sürümlerini piyasaya sürdüler.
         Peki bu Molehill adlı teknoloji nedir derseniz; Adobe'un kendi uygulamalarındaki performans zayıflığını gidermek için çıkardığı teknolojidir diyebiliriz. Adobe'un sitesinde yapılan açıklamaya göre Flash Platformuna sahip uygulamalar için hızlandırıcı bir teknolojiymiş.Örnek açıklama olarak da şunu; normal bir Adobe Flash Player 10.1, Z boyutunun derinliğindeki binlerce üçgeni yaklaşık olarak 30Hz'de hesaplayabilirken yeni geliştirilmiş bu teknolojiyle yüzbinlerce üçgeni HD çözünürlükte tam ekran modda ve 60Hz. civarında hesaplayabileceğini söylüyorlar. Bu da beraberinde daha karışık ve zor ortamların yaratılabileceğini de göstermiş oluyor teknik olarak. Peki bu gerçekte nasıl? Tek kelimeyle " muhteşem " en azından şimdilik, ki daha da geliştiği zaman görün siz bu teknolojiyi. :)

        Bir önceki yazımda ise Away3D'nin bu teknoloji ışığında geliştirmiş olduğu en son kütüphane olan Away3D Alpha 4.0 "Broomstick"den bahsettim. Bir sonraki yazımda ise umarım ki bu kütüphaneleri kullanıp yapacağım çalışmaları paylaşacağım :)

        Örnek uygulamaları görmek için aşağıdaki resimlere tıklayınız. Denemeden geçmeyin zira araba çok kaliteli bir örnek olmuş. Araba uygulamasının "High" versiyonunu çalıştırarak aşağıdaki örnek resimleri elde ettim. Tebrikler tüm bu gelişmeleri yaratanlar :) 









2 Mayıs 2011 Pazartesi

ve yeni bir dönemin başlangıcı: Away3D 4.0 Alpha – “Broomstick”



    KPSS sağolsun güncel gelişmeleri takip edemiyordum. Dün merak edip de Away3D'nin neler yaptığına baktığımda bu şaşırtıcı gelişmeyi gördüm. Meğer Away3D "Broomstick" kod adlı 4. sürümünü biz kullanıcıların hizmetine sürmüş. Yazık bana ki bu gelişmeleri birebir takip edememişim :( Bunun heyecanıyla hemen kütüphaneyi indirdim ve sitesinde verilen örnekleri denmeye çalıştım, ne gelişmeler olduğunu görebilmek için. Ancak tahmin ettiğim gibi de benim bilgisayarda çalışmadı. Sitesindeki yazıları okuduğumda Adobe'un Flash Player 11'i çıkardığından bahsediyordu. Kendi kendime  "Adobe ne ara yeni sürümünü çıkardı ki Flash Player'ının, onu da göremedik? O kadar mı gelişmelerden uzağım?"  " diye paralanırken, yeni sürüm daha Adobe Labs'da yer almakta olduğunu gördüm :)

Performans Açısından Oldukça Başarılı Bir Çalışma
    Adobe Flash Player Incubator kod adlı 11. Flash Player versiyonuyla Away3D'nin güncel sürümü olan 4.0'ın projelerini çalıştırabilmekteydim artık. Hevesle örnekleri denedim ve bu büyüye kendimi kaptırdım bir anda. Gayet başarılı örneklerdi bu seferkiler, ha önceki sürümler için laf ettiğim sanılmasın. Artık Away3D kendi kalitesini ve farkını giderek ortaya koymakta olduğunu en azından bana göstermiş oldu. Performans açısından zorlandığım veya projelerimin hantallaştığı zamanlar olmuştu ama bu örnekler bana oldukça yenilikçi bir sürümün geldiğini göstermiş oldu. Özellikle su olayına ve karakter modellemelerine ait projelerı oldukça başarılı buldum.

Kafa Modelinin UV Kaplama Malzemeleri


    Kafa modelinde 17684 adet üçgen yüzey bulunmakta ve benim bilgisayarım ( 4GB 800mHz Kingston RAM, 2.7 Athlon X2 5000+ işlemci, Shapphire 3870 512MB, 256bit ekran kartı ) için toplamda en fazla 62MB RAM harcadığını gördüm ki beni hiç yormadı.

    Aşağıdaki resimlerde ise diğer hazır projelerin çalıştırılması sonucunda aldığım resimler mevcut. Bu resimlerdeki durumu gösteren pencereler incelendiğinde de gelişimi göreceksiniz.

    Su projesi'ni Ogre3D'nin okyanus projesinde görmüştüm ancak onun Flash'a uyarlanmasına daha biraz daha yol vardır diye düşünürken 4.0 sürümünde bunun sandığımdan daha da erken gerçekleştiğini görmüş oldum ki mutluluk vericiydi böylesine kaliteli ve sorunsuz bir su projesini çalıştırmak.

    Kazların oluşan proje için de verilen bilgi penceresinde yaklaşık olarak 190.000 polygon ifadesi yer almasına karşın maksimum 38MB'lık RAM harcadığını gördüm.

    Sizi bilmem ama bu gelişmeler beni oldukça heyecanlandırdı ancak halihazırda KPSS'denen illet yüzünden bu projelere el atamıyorum daha doğrusu atmak istemiyorum zira insan kendini kaptırabiliyor :)



8 Ocak 2011 Cumartesi

Arttırılmış Gerçeklik Çalışması 04 - Kod Adı: Beyto V1

Yeni Marker
     Bu yeni projemi "Kod Adı: Beyto" adlı arttırılmış gerçeklik projemin gelişmiş versiyonu olarak huzurlarınıza sunuyorum :)

     Bu seferki uygulamda dikkat edilmesi gereken temel husus markerımı değiştirmemdir. Bundan önceki üç uygulamada da aynı markerı kullanmışken bu seferki uygulamda farklılık olsun diye yeni bir marker kullandım. Bu yüzden bu projenin çalışması için ya yeni markerın çıktısını almalısınız ya da çizmelisiniz ancak çıktısını almanızı öneririm.

     Uygulamaya ulaşmak için tıklayınız. Uygulama web ortamında çalışırken bazen aksaklıklar yapabilmekte veya zorlanabilmektedir. Eğer ki butonlar olması gerektiği gibi davranmakta zorlanırsa uygulamayı indirmenizi öneririm. 
Eski Marker
     Uygulamayı çalıştırmak için bilgisayarınızda Flash Player 10'un kurulu olduğuna emin olunuz. Eğer kurulu değilse eklenti olarak kurulmuş bir tarayıcıyla birlikte açmayı deneyiniz.

     Temel düzeyde arttırılmış gerçeklik uygulamarının çalışması için yerine getirilmesi gereken kuralları yeniden hatırlamak isterseniz önceki yazılarıma göz atabilirsiniz veya "Arttırılmış Gerçeklik Çalışması 01" adlı yazıya göz atabilirsiniz.

8 Aralık 2010 Çarşamba

Arttırılmış Gerçeklik Çalışması 03 - Kod Adı: Beyto

   Sanal Gerçeklik uygulamalarımdan en yeni ve en eğlendiğim çalışmama geldi sıra. Bu çalışmamda ev arkadaşım Beytullah KILIÇ kendi şiirlerinden bir tanesi olan "Zakkum Tadında Teselli"yi okuyarak bana yardım etmiş bulundu :)

   Zamanında dediğim gibi "Birisi çıkıp ders kitabınızdaki konuyu size anlatacak" işte o güne adım adım yaklaşıyorum :)
 
   Şimdi kısaca çalışmamdan bahsedeyim; öncelikle bu bir deneme çalışması olduğu için tam verimli bir sonuç elde edemediğimi söylemem gerekir zira Beytullah'ın çekimini yaptığım webcam'in çözünürlüğü pek iç açıcı değildi. Üstelik ses kaydı da yapmadığı için MP3 player'ımın ses kaydını kullanmak zorunda kaldım. Bunları eş zamanlı hale getirip birleştirdikten sonra arkaplanı temizlemek zorunda kaldım ki en çok sıkıntı yaşadığım kısım burası oldu zira profesyonel stüdyolardaki gibi ekipmana sahip değilim. Ben de isterdim bir adet yeşil ekranımın olmasını ama olsun evimin duvarı da işimi gördü :D

Yine Aynı Markerı Kullandım.
   Diğer bir sıkıntı yaşatan nokta ise Flash'ın bu videodaki sesi kabullenememesiydi ki sanırım bunun nedeni benim videoyu çevirirken "stereo" ses kullanmamdan dolayıydı. zira "mono" yapınca videodaki sesi sorunsuz kabul etti. Hal böyle olunca iş benim için daha kolay tabi. "mono"yu kabul etmeseydi harici ses dosyası yüklemek zorunda kalacaktım ki bu da senkron problemlerini beraberinde getiriyordu ve hiç çekilmiyor.. şansıma bu problemi de mono yardımıyla atlatmış oldum. Belki de daha farklı bir sorun vardı temelinde ama olsun, malum bilgisayar bu hiç belli olmaz bazen sağı solu :)

   Dediğim gibi bu daha ilk aşaması sadece ve deneme amaçlı bir proje. Bir sonraki versiyonunda daha iyi çekilmiş bir video ve daha iyi bir ses kaydı ile gelmeyi planlıyoruz. Ayrıca fondaki telefon sesine aldanmayın bir daha sil baştan kayıt yapmak istemediğimiz için bu şekilde devam ettik :) artık bu küçük detayları da mazur görün lütfen :) Projenin çalışması için yine yandaki marker'ın çıktısını almanız veya da çizimini yapmanız gerekmektedir. Konu ile ilgili önceki yazılarımı okursanız daha detaylı bilgi edinebilirsiniz:

    Arttırılmış Gerçeklik Çalışması 02
    Arttırılmış Gerçeklik Çalışması 01
  
Projeye ulaşmak için tıklayınız. İyi eğlenceler, kolay gelsin :)

3 Aralık 2010 Cuma

AS2 Calışmaları 02 - Kodlarla Çizim

 Ayşen Hoca'nın derste gösterdiği bir örneğin nasıl olabileceğini düşündükten sonra bu örneği geliştirdim. Bir noktası haricinde hepsi kolay ama o noktayı bulmam benim için zahmetli olmuştu. O da çokgen çizim kısmıydı. Bunu teoride yapsam da kodlara dökemiyordum ama sonunda biraz da deneme yanılmayla olayı çözdüm.


this.createEmptyMovieClip("sekil_mc",this.getNextHighestDepth());
sekil_mc.createEmptyMovieClip("ciz_mc",this.getNextHighestDepth());


ilk önce kodlar yardımıyla sekil_mc adlı bir movieClip oluşturdum, daha sonrasında bu yeni oluşturduğum movieClip içerisine de kodlar aracılığıyla ciz_mc adlı bir movieClip oluşturdum. Şimdi neden böyle iki movieClip tercih ettiğimin sorusuna da tercih meselesi desem çok da abes kaçmaz sanırım zira tek bir moveiClip'de de toplanabilirdi olaylar ancak ben ilk movieClip'de temel fonksiyonları yönetirken (position, rotation, alpha, scale gibi) ikinsi yani ciz_mc'de ise çizilecek olan çokgeni yönetmiş oldum. Zaten menüdeki bu kaydırma çubuklarından köşe haricindeki tüm değişkenler sekil_mc'nün o andaki özelliklerini değiştirmeyi amaçlamakta. Köşe değişkeni de ciz_mc'nin köşe sayısını belirlemede işe yaramakta.

for (i=0; i<kose+1; i++)
{
        sekil_mc.ciz_mc.lineTo(
               xbas-r*Math.sin((i*derece)*(Math.PI/180)),
               ybas+r*Math.cos((i*derece)*(Math.PI/180))
        );
}

Yukarıdaki kod satırında görüleceği üzere şekil_mc'nin içerisindeki ciz_mc'de  belirlenen köşe sayısı kadar döngü kurulması söyleniyor.xbas pozisyonu ile ybas pozisyonunda bulunan şekilden r yarıçapı kadar uzak mesafedeki konuma geçip çizime başlanıyor. X'in sinüs değeri Y'nin de cosinüs değerini tercih etmişim. Çok da bi fark yok açıkcası başlangıç yönünün değişmesinden başka. Ancak hem X hem de Y için aynı değerler kullanılmamalıdır yani X için sin ve Y için sin veya X için cos ve Y için cos birliktelikleri tercih edilmemelidir zira istenmeyen sonuçlar meydana gelir bu durumda. Dairesel bir hareket için konumlardan birinin zıt trigonometrik özelliklere sahip olması gerekir ( sin-cos veya cos-sin gibi ). Derece değişkeni de 360/kose'nin matematiksel sonucuna eşittir yani o kadarlık bir dereceyle hareket etmesi sağlanmaktadır.

Denemek için tıklayınız.

2 Aralık 2010 Perşembe

AS2 Calışmaları 01 - Paint Örneği

Geçen sene sınav vakitlerinde aklıma gelen bir fikir sonucunda ortaya çıkan paint projesi:

Paint benzeri uygulamamla yaptığım örnek çizimim
 Daha bitirmediğim için şu andaki haliyle tanıtımını yapayım dedim. Yukarıdan aşağıya sırayla;
  • 1. Buton: Kare Fırça
  • 2. Buton: Daire Fırça
  • 3. Buton: Eğik Fırça
  • 4. Buton: Şekil Çizme Aracı
  • 5. Buton ve 6. Buton şimdilik çalışmıyor ama dışarıdan resim çağırma amaçlı hazırlamıştım.
  • Alt menü de çizim araçlarının RGB cinsinden rengini ayarlamakta kullanılıyor. 
  • Fırçanın büyüklüğünü ayarlamak için klavyeden " + " ve " - " tuşlarını kullanınız. Benim klavyem numeric pad sahibi olduğu için hiç laptop aklıma gelmedi. O yüzden biraz daha zahmetli olacak numeric pad sahibi olmayanlar için :(
AS2 kullanarak yapmıştım ve malesef ki pixeller ile çalışmayı bilmediğim için o sıralar olay bir nesneyi duplicate ederek ekrana yapıştırmaktan ibaret. Duplicate etme süresine göre farenin hızına yetişemeyebilir boyama işlemi. Bu yüzdenfareyi çok hızlı kullanmanızı önermem :) Olay kısaca böyle.. İyi denemeler :)
 
Uygulamaya erişmek için tıklayınız.