Flash ve Papervision3D ile 3D Animasyon
Engin Yöyen Tarih: 3/01/2008 Yorum: 0 adet
Okunma : 360 Tutanlar: Bu yazıyı 1 kişi tuttu.
Flash içerisinde 3D animasyon geçen yıla kadar hemen hemen hayal sayılıyordu. Her ne kadar 3D başlığı altında animasyonlar yapılsada biz bunların gerçek anlamda 2 li koordinat sisteminin dışına çıkmadığını biliyorduk. Flash takipçileri mutlaka papervison3D hakkında birşeyler duymuşlardır.Papervision3D flash için 3D moturu hazırlıyor. Papervison 3D sınıfını aşağıdaki adresten indirebilirsiniz. Bu makalede çok detaya girmeden nasıl kullanabileceğinizi anlatmaya çalışağım.

Not: Uygulamanın çalışan haline bu adresten ulaşabilirsiniz
//Bizim için gerekli olan sınıflar import ediyoruz
import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.*;
import org.papervision3d.materials.*;
//Yeni bir MovieClip oluşturuyoruz
var holder:MovieClip = new MovieClip();
//Movieclibi koordinatlarını sahnenin ortasına gelecek şekilde yerleştiriyoruz.
holder.x = stage.stageWidth / 2;
holder.y = stage.stageHeight / 2;
//Movie Clibi display liste ekliyoruz.
addChild(holder);
//Yeni bir sahne(scene) oluşturuyoruz.Ve arguman olarak holder movieclibin gönderiyoruz.
//holder movie clibimiz sahneye tutacak diyebiliriz
var scene:Scene3D = new Scene3D(holder);
//yenibir camera oluşturuyoruz.Bu arada eğer herhangi bir kameranız yoksa ekrandaki hiç bir
//şeyi göremezsiniz
var camera:Camera3D = new Camera3D();
//kütüphanemizde yer alan air logosunu yeni bir bitmap material olarak
//kullanıyoruz.Tabii ki kütüphanedeki logunun linkage ID vermenzi gerekiyor.
var imageMat:BitmapAssetMaterial = new BitmapAssetMaterial("air");
//burada materyalimizi iki yönlü olmasını saglıyoruz
//Default olarak bu true geliyor.yani materyalin sadece tek tarafı görükücektir.
imageMat.oneSide = false;
//Materyalimizin smooth özelliğini devrey sokuyuruz
//be şekilde bozulmaları engelliyebiliriz.
imageMat.smooth = true;
//Burada bir çember oluşturduğumuzu düşünün.Çemberin radyanını 820 olarak ayarlıyoruz
var radius:Number =820;
//Buradaki "angle" bizim açımız, okuldan hatırlarsak bir dairenin açısının
//360 derecedir.Ama biliyoruzki flash derece kavramı ile çalışmıyor
// " Math.PI * 2 " iki yarı dairenin birleşmesi demek yani bir tam daire
//yani Math.PI = 180 derecedir. bizim bunu 8 bölmemizin sebebi ise
// ekrana 8adet logo eklemek istememiz.Bu sayede her bir logu arasındaki ölçü eşit olacaktır
var angle:Number = (Math.PI * 2) / 8;
//İkinci açımız ise mouse her hareket ettiğinde değişecek olan açı
var angleX:Number=0;
//Burada for loop kullanarak logo sayısını arttırıyoruz.
for (var i:Number=0; i<8; i++) {
//Burada her loop ta yeni bir plane oluşturuyoruz
//plane verilen ilk parametre imageMat materyalimiz
//İkinci ve üçünçü parametremiz materyalimizin x ve y koordinatları
//Dördüncü ve beşimiz materyalimiz ise resmin üzerindeki denetim noktaları
//Numara arttıkça materyal üzerinde çizilen üçgen sayısı artacaktır.Bu çgen sayısı
//Materyalin nekadar iyi gözükeceğini belirliyor
//Tabii üçgen sayısı artıkça performans düşecektir
var plane:Plane = new Plane(imageMat, 304, 264, 10, 10);
//Materyalimizi tutan plane ait x ve y koordinatları
// x koordinatı ayarlıyoruz.Buradaki sin ve cos açıklamalrını başka bir makalede değineceğim
//Sadece birşeye değinmek istiyorum
//eğer bu animasyonu 2d oalrak yapmak isteseydik "z" koordinatına değil y koordinatına
// Math.sin in açısını vericektik.
plane.x = Math.cos(i * angle) * radius;
// z koordinatını ayarlıyoruz
plane.z = Math.sin(i * angle) * radius;
//Plane donme açısını burada hesaplıyoruz/
plane.rotationY = (-i * angle) * (180/Math.PI) + 270;
//Flashtaki display list mantığıyla papervisiondaki liste mantığı aynı
//oluşturduğumuz plane leri sahnenin içine koyuyoruz.
scene.addChild(plane);
}
//on enter frame eventini ayarlıyoruz.Sahneyi girer girmez çalışacak olan fonksiyonu belirliyoruz
this.addEventListener(Event.ENTER_FRAME,run);
function run(e:Event):void {
//Buradaki angle X cameranın hareketınde kameranın nerde yer alcagını belirliyor
angleX += (this.mouseX - 200) * 0.001;
//cameranın x posizyonunu ayarlıyoruz
camera.x = Math.cos(angleX) * 1000;
//camera nın z pozisyonunu ayarlıyoruz
camera.z = Math.sin(angleX) * 1000;
//burada camerayı render ediyoruz
scene.renderCamera(camera);
}
Papervision 3D Sınıfı http://papervision3d.googlecode.com/files/Papervision3D15.zip
Google Code sayfası http://code.google.com/p/papervision3d/downloads/list
Papervision3D web sitesi http://papervision3d.org/
Papervison3D Blog http://blog.papervision3d.org
Papervison3D Wiki http://wiki.papervision3d.org/index.php?title=Main_Page
Kaynak Dosyalar Kolay Gelsin
İçeriğe kayıtlı yorum bulunmuyor. İlk yorumu siz buradan ekleyebilirsiniz.
Makale
Ders
Etkinlikler
Eğitim
Akbank exi26 Şipşak: Gençler için Fotoğraf Yarışması
Akbank exi26 Şipşak: Gençler için Fotoğraf Yarışması
Akbank Gençlik Bankacılığı exi26 tarafından düzenlenen fotoğraf yarışmasına dijital fotoğraf makinelerinizle çektiğiniz fotoğraflarla katılabilirsiniz...
Kategori:
Eğitim
MMIstanbul Adobe UG
ColdFusion, Flex, AIR, Flash , PDF, Dreamweaver, Fireworks, Photoshop, Illustrator, INdesign, Connect, Premiere, Soundbooth, Contribute, Lightroom, InCopy, JRun, LiveCycle, Acrobat, AfteEffects, Resmi Adobe Kullanıcı Grubu.
Kimler Burada? 
Son 1 dakika içinde MMIstanbul' da 251 (0 kayıtlı, 251 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:
MMIstanbul Blog'undan
Ne Nedir Kampanyası Başlıyor!
Selam arkadaşlar, MMIstanbul içeriğinin gelişmesine katkıda bulunmak isteyen arkadaşlarımıza söyle bir önerimiz var. Sizleri çok fazla yo ...
Çok Merak Edenler için; MMIstanbul Geliştirme Ekibi ve Çalışma Ortamımız
MMIstanbul Online Seminerlerine Nasıl Katılabilirim?
Bazı Akıl - Fikirleriniz Olabilir
MMIstanbul' u Nasıl Desteklerim?


