Bu sayfadaki yazılar
Sayfanın metni
Sayfa 12
Bu ay basit ama iyi görünüşlü bir logo tekniği ile şu günlerde tüm dünyada pek de moda olan "Çift Işıklı Metal Küre Tekniği"ni öğreneceğiz. Adı belki uzun, ama hiç de zor değil. SPOT LOGO TEKNİĞİ:
Önce birinci resimle başlayalım. Tipik olan logo doldurma tekniklerinden biri. Bu yazı dizisinin ilk bölümünde yer alan ve TUNÇ DİNDAŞ'ın anlattığı mermer tekniğine benzese de, hem sonuç hem de uygulama açısından farklı.
Logo doldurma teknikleri genelde çizim programının teknik
ÇİFT IŞIKLI METAL KÜRE TEKNİĞİ Şimdi de ikinci resim. ÇİFT IŞIKLI METAL KÜRE TEKNİĞİ'ni hatırlatayım: "ELITE" oyun firmasının logosundaki ve BITMAP BROTHERS'ın grafikeri MARK COLEMAN'ın bol miktarda kullandığı, daha sonra da cracker gruplardaki grafikerler için moda olan teknik.
Şimdi cam tekniklerini hatırlamanız kolaylık sağlayacak diyerek başlıyoruz. Her şeyden önce renkleri ayarlayalım: Ben en çok kullandığım iki renk olan lacivert ve kahve tonlarını seçtim. Göyeteneklerini kullanırlar. Bu teknik de böyle. "SPOT" tekniği denilmesinin sebebi bu. Kullandığımız fonksiyon ise "SHADE". Bu fonksiyonu Deluxe Paint'in 'Efekt' menüsünde bulabilirsiniz.
Önce renklerimizi ayarlayalım. Ben kahve tonlarını kullandım, ama bu teknik genelde tüm renklerle iyi sonuç verir. Paleti ayarlarken renklerin sıra ile olmasına dikkat edin. Açıktan ya da koyudan başlayarak dizmeniz hiçbir şey fark etmez, ancak elde edilen son görüntü biraz farklı olur.
Şimdi istediğimiz boyutta dolu bir dörtgeni kullanacağımız renklerin ilki ile oluşturalım. Daha sonra sağ tuş ile üstteki daire brush'larından birini klikleyerek brush'ın size'ını isteğimize bağlı olarak ve gerektiği kadar ayarlayalım. Ve bu dairenin rengini ikinci renk yapalım.
Şimdi geldik "SHADE" fonksiyonuna. "F5" tuşu ile ya da pulldown menüden shade fonksiyonunu seçelim ve dairemizi dörtgenin içine basalım. Bu işlemi tekrarladıkça dörtgenimizin rengi hazırladığımız renkler ile boyanmaya başlar. Renkler üst üste binince, bir koyu renge geçildiği için istediğimiz etkiyi yakalayabiliriz. İşimiz bitince, yani
* Renkleri açıktan başlayarak dizdiysek yeterince koyuluk, * Renkler açığa doğru ise, yeterince açıklık elde edene kadar işlemi tekrarladıktan sonra; dörtgenin kenarlarını temizleyelim. Diğer yanda hazır olan logo (ya da harf)'in istediğimiz bölgesini "STENCIL" fonksiyonunu kullanarak bu dörtgen ile dolduralım. Eğer siz de bizim gibi kenarlı harfler (ya da semboller) kullanıyorsanız, kenarları da yine bu dörtgeni kullanarak yapabilirsiniz. Ama kenar doldururken ışığa göre renkleri açıklaştırmak ya da koyulaştırmak gerekebilir. Bunu yaparak, kabartma ya da kazıma etkisini yakalayabilirsiniz.
Tüm alanı doldurup işlemi bitirdikten sonra; son işlem olarak dönüşleri yumuşatarak sonuca ulaşın. Nasıl logo ama? Hemen de yapılıverdi değil mi?
rebildiğim kadarı ile bu iki renk en iyi sonucu veriyor.
Şimdi kürenin boyunu belirleyelim. Alttan gelen ışığın daha az alanı aydınlatacağını düşünerek, bu alanı silerek ayıralım. Şimdi alttaki küçük alanın ışığı direkt alan kısmına ikinci rengin en açık tonu ile tek bir nokta koyalım. Ve ikinci rengin ara tonları ile bu kısımdaki parlamayı yapalım. Cam küre tekniğinde benzer bir uygulama yaptığımızı hatırlayabilirsiniz.
Sırada üstte kalan ve ışığı daha çok alan yüzey kalıyor. Bu kısmın parlamasını ilk rengin en açık tonu ile biraz daha büyük yapalım. Aradaki geçiş tonlarını da aynen cam tekniğinde yaptığımız ön yüzey pikselleri gibi yerleştirelim.
Şimdi yine son iş olarak dönüşleri yumuşatalım. Açık renklere yakın dönüşlerde ara tonları kullanabilirsiniz. Ama özellikle siyah yaptığımız kısımlardaki geçişlerin iyi olması gerekiyor.
Bu tekniği, bir tek rengin tonları ile de uygulayabilirsiniz. Ancak iki ışık kaynağı farklı renklerde olursa, etki daha farklı olur. Yani işin esprisi iki farklı renkte. Yine bu tekniği kullanarak yuvarlak hatlara sahip olan herhangi bir metal cismi yapabilirsiniz.
Bu teknikle biraz daha uğraşın; sonuçta düz hatlara sahip olan metalleri de çizmenin yolunu keşfedeceksiniz. Bu arada "normal metal boyama tekniğini öğretmedin ki" diyenler için ise, biraz önce bahsettiğim tek rengin tonları ile bu tekniği uygulama yolunu tavsiye ederim.
BITMAP BROTHERS'ın MAGIC POCKETS oyununun grafiklerine bir göz atarsanız, bu çift ışığın taş üzerindeki mükemmel uygulamasını fark edersiniz. Ayrıca yine aynı firma, aynı grafikerden çıkma CADAVER ve GODS; PSYGNOSIS ise LEMMINGS'te size çift ışık oyunlarını gösterebilir.
Daha önce anlattığımız tekniklere bu çift ışık olayını uygulayın. Özellikle taş, cam hatta ağaçta bile tek ışık kaynağıyla kıyaslanınca ne kadar çarpıcı sonuçlar alındığını görün.
Gelecek ay tekrar burada buluşmak üzere hoşça kalın.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 13
Hepinize iyi günler! Bu ayki yazımızda, diğer sayfalarda görmüş olduğunuz gibi, uzun bir (diğerlerine göre) örnek C programıyla karşı karşıyayız. Programımız, geçen sayıda vermiş olduğum örneklerin yeni bir versiyonu. Hatırlayacağınız gibi bu örnekler, bir menü oluşturarak disketteki programlarımızı kullanmamızı sağlıyordu. Bu ay da, benzer şekilde çalışan bir örnek geliştirmeyi uygun gördüm. Fakat yeni örneğimizin aynı zamanda da bazı yeni özellikleri bulunuyor.
Programımız karışık görülebilir. Fakat sakın siz de buna aldanıp yazmaktan veya incelemekten vazgeçmeyin. Çünkü böyle programları yazabilmeniz için, öncelikle yazılanları anlayabilmeniz gerekiyor. Programı yazarken elimden geldiğince alt rutinlere bölmeye çalıştım. Böylece her rutini siz de kendi programlarınızda kullanabilir ve daha rahat anlayabilirsiniz.
Yeni bir programı denerken, kesinlikle ilk bakışta satır satır incelemeyin. Listeye bakarken, rutinleri bloklar halinde görmeye ve ayırmaya çalışın. Daha sonra her bloğun ne işe yaradığını öğrenin. Böyle incelediğiniz zaman satırlar karışık gelmez ve programı anlamanız daha kolay olur.
Programda ilk olarak incelenmesi gereken blok, 'main()' bloğudur. Blok içerisinde yapılanlara dikkat edin. Daha sonra kullanılan değişkenlerin tipini, local veya global olduğunu ve ne amaçla kullanıldığını öğrenin. Altrutinleri bulun ve hangi parametrelerle kullanıldığını görün. Bundan sonra programı satır seviyesinde inceleyebilirsiniz.
Bu kadar tavsiyeden sonra, şimdi programımızın kullanılmasına bir göz atalım. Programımız compile edilip çalıştırıldıktan sonra, bir parametre istemektedir. Bu parametre, disketteki programların listesini içeren bir dosyadır. Bu dosyada, menü ismi, programın menüdeki ve disketteki ismi bir kurala göre herhangi bir text editör (en iyisi CED) ile yazılır. Programımız bu dosyadaki listeyi hafızasındaki değişkenlere atayarak saklar. Daha sonra bu liste kullanıcının seçebilmesi için ekrana sıralanır ve mouse ile kontrol edilerek seçilir. Seçilen program disketten yüklenerek çalıştırılır ve bu arada bizim programımız da kendini hafızadan siler. Programımızın yapmış olduğu iş, kısaca bu kadar. Ben bu programı yazarken, daha önce görmüş olduğum 'Selector' adındaki bir utility programından esinlendim. Bu örneği hazırlama nedenlerimin başında, sizlerin de benzer şekilde utility programları yazabileceğinizi göstermektir.
Şimdi programımızın listesine bir göz atalım. Bu arada programımızın adını 'MenuDesign' olarak belirledim. İsterseniz siz de yeni isimler koyabilirsiniz. Ne de olsa programımız bir Public Domain !...
/*...............................................................................*/ /* Programming and Coding by Cenker OZKURT */ /*...............................................................................*/ /*................................................*/ /* include Dosyalari */ /*................................................*/ #include <exec/types.h> #include <exec/memory.h>
#include <graphics/gfxbase.h> #include<intuition/intuitionbase.h> #include <libraries/dos.h>
/*...............................................*/ /* Library yapi değişkenleri */ /* ..............................................*/ struct IntuitionBase *IntuitionBase; struct GfxBase *GfxBase; struct DosBase *DosBase;
struct RastPort *rp; struct Window *window;
/*…………………………………………………………*/ /* Program içerisinde kullandigimiz Global değişkenler */ /*…………………………………………………………*/ char title[80]; charview[30][20]; chardisk[30][30]; char *name[]={ " ",0 }; char *list; int no=0; int fin;
/*……………….……………*/ /* Ana program satirlari */ /*……………………………*/ main(argcargv) int argc; char *argv[];
{ int a; /* local değişken */ if(argc=-l) /* menu listesi kontrol ediliyor */
printf( "Usage : menudesign [list]\n "); return(1); } /*………………….. */ /* library'ler aciliyor */ /*……………………*/
IntuitionBase=OpenLibrary("intuition. library ",0); GfxBase=OpenLibrary("graphics.library",0); DosBase=OpenLibrary("dos.library",0);
/*………………………………………………*/ /* window ve rp değişkenleri belirleniyor */ /* bu değişkenler belirlenmeden */ /* window'u kullanmamız mumkun değil */ /*………………………………………………*/ window=IntuitionBase->ActiveWindow; rp=window->RPort;
SetDrMd(rp,JAMl);
/*……………………………………………..*/ /* Bu satirlardan itibaren kendi hazirladigim */ /* rutinler cagriliyor */ /*……………………………………………..*/ clear(); /* değişkenleri temizler */ load(argv[1]); /* menu liste dosyasini disketten yükler */ scr_clear(); /*window'u siler.-Is32 kütüphanesinde bulunur */ draw_box(); /* window'a kutulari çizer */ search(); /* listedeki isimleri değişkenlere tasir */ menudesign(); /* programın ismini ekrana yazar */ flood(); /* programların isimlerini kutulara yazar */ a=mouse(); /* mouse ile program seçimini bekler */ if(a==0) { /* eger secilmezse cikar */ quit(); /* program cikisi */ scr_clear(); exit(0); }