• Buradasın

    LibGDX ile 3D Küre Oluşturma ve Animasyon Eğitimi

    youtube.com/watch?v=1yUorSWJP1I

    Yapay zekadan makale özeti

    • Bu video, bir eğitmen tarafından sunulan 3D grafik programlama eğitim içeriğidir. Eğitmen, Eclipse IDE üzerinde LibGDX kütüphanesi kullanarak üç boyutlu küre oluşturma ve animasyon yapma sürecini adım adım göstermektedir.
    • Video, küre oluşturma için gerekli matematiksel hesaplamaları, parametrik denklemleri ve OpenGL'in üçgenleri çizme özelliğini kullanarak küre oluşturma yöntemini detaylı olarak anlatmaktadır. Eğitim, model builder ve mesh part builder kavramlarını açıklayarak başlayıp, kürenin yüzeyindeki noktaların hesaplanması, dörtgen çizme yöntemi, materyal ekleme ve son olarak kürenin döndürülmesi ve hareket ettirilmesi konularını kapsamaktadır.
    • Eğitimde ayrıca, küre oluşturma sürecinde karşılaşılan teknik sorunlar (float sayıları toplarken oluşan hatalar, üst üste binen yüzeyler gibi) ve bunların çözümleri de gösterilmektedir. Kürenin X ve Z ekseni boyunca sinüs-kosinüs fonksiyonlarıyla hareket ettirilmesi ve dönüşüm metotlarının (translate, rotate, set to translation, set to rotation) kullanımı gibi ileri seviye konular da ele alınmaktadır.
    00:013D Model Oluşturma ve OpenGL
    • Önceki bölümde dik prizma oluşturmak için kendi metodumuzu yazmıştık, ancak LibGDX'in ModelBuilder sınıfında daha etkili bir şekilde benzer işlevleri sağlayan "createBox" gibi metotlar bulunmaktadır.
    • Bu bölümlerde çeşitli 3D objeleri kendi oluşturarak nasıl çalıştıklarını öğrenmeye çalışacağız, bu bilgi hem kullanımımızı kolaylaştırır hem de kendi model oluşturucu programlarımızı yazmamızı sağlar.
    • OpenGL sadece üçgenleri çizebiliyor, bu nedenle 3D modelleri oluştururken de üçgenlerden yola çıkarak oluşturabiliriz.
    02:42Küre Oluşturma
    • Bu bölümde küre oluşturacağız, küre oluşturmak dikdörtgen prizmadan farklıdır çünkü küre için yarıçap ve kaç parçadan oluşturulacağı gibi ek parametreler gereklidir.
    • Dikdörtgen prizmada yüzeyler doğrudan üçgenlerden oluşurken, küre pürüzsüz bir yüzeye sahip olduğu için OpenGL ile doğrudan çizilemez ve yaklaşık olarak ifade edilmelidir.
    • Küre için parametrik ifade kullanacağız, bu ifade yarıçap ve iki açı değeri (teta ve fee) üzerinden x, y ve z koordinatlarını belirler.
    06:37Kürenin Matematiksel İfadesi
    • Küre için iki açı değeri gereklidir: biri kürenin eksenini tarayan açı, diğeri ise farklı eksenler arasındaki açı.
    • Küre yaklaşık olarak ifade edilir çünkü sonsuz sayıda x, y ve z noktaları oluşturulamaz, küreye yakın değerler alacak kadar nokta oluşturulmalıdır.
    • Küre, enlemlerde (ring) ve boylamlarda (segment) parçalara bölünür, bu değerler arttıkça küreye daha yakın bir yaklaşım elde edilir, ancak enlemler ve boylamlar birbirine orantılı değerlerde olmalıdır.
    12:36Dörtgen Çiz Metodu ve Model Oluşturma
    • Dörtgen çiz metodu, model builder part'i kullanarak üçgenler şeklinde çizim yapmaktadır.
    • Metot, model döndüren bir metod olup, model builder'ı başlatarak üçgenler inşa etmesini sağlar.
    • Mesh part builder, modelin çizimini sağlayan bir yapıdır ve set color metodu ile rengi belirlenir.
    13:09Küre Oluşturma İçin Gerekli Değişkenler
    • Küre çizimi için model builder, enlem parça ve boylam parça değerleri gereklidir.
    • Kürede sadece yarıçap değeri yeterlidir ve bu değer metodun dışından alınır.
    • Mesh part builder, class değişkeni olarak tanımlanır ve farklı şekiller için tekrar kullanılabilir.
    19:00Kürenin Matematiksel Temelleri
    • Kürenin noktaları, x = r * cos(teta) * sin(fee), y = r * sin(teta) * sin(fee), z = r * cos(fee) formülleriyle hesaplanır.
    • Teta ve fee açısal değerler, kürenin parçalara bölünmesini belirler.
    • Teta değeri 0'dan 2π'ye, fee değeri ise 0'dan π'ye kadar değişir.
    24:39Kürenin Çizimi İçin Koordinat Sistemi
    • Open GL'deki koordinat sisteminde x ve y eksenleri normal bir çemberin koordinatlarına benzer.
    • Teta açısı, x ve y koordinatlarını belirlerken, fee değeri z ekseni üzerindeki taramayı sağlar.
    • Teta'nın 2π'lik taraması, x ve y değerlerini belirlerken, fee değeri z ekseni üzerindeki konumu belirler.
    26:43Küre Oluşturma İçin Döngüler ve Değişkenler
    • Teta ve fi açısal değerleri sıfırdan başlayabilir ve for döngülerinde kullanılabilir.
    • İki pi (360 derece) değerini temsil etmek için "final float p_iki = (float) (2 * Math.PI);" şeklinde bir class sabiti tanımlanabilir.
    • X, y, z noktaları için for döngüsünden önce yer ayırmak daha verimli olabilir.
    30:51Kürenin Yüzeyinin Oluşturulması
    • Kürenin yüzeyi genellikle dikdörtgenler veya dörtgenlerden oluşur, ancak tepe noktasında özel durumlar oluşabilir.
    • Tepe noktasında üçgenler olması gerekirken, yazılan kodla iki noktası aynı yerde olan dörtgenler oluşabilir.
    • Kürenin yüzeyini çizmek için dört adet noktaya ihtiyaç vardır.
    33:09Delta Değerlerinin Hesaplanması
    • Teta ve fi değerlerinin artış miktarı (delta) enlem ve boylam parçalarından hesaplanabilir.
    • Delta teta değeri "2 * Math.PI / enlemParcası" şeklinde, delta fi değeri ise "Math.PI / boylamParcası" şeklinde hesaplanabilir.
    • Kürenin yüzeyi pürüzsüz olmasa da, bilgisayarda sonsuz nokta çizilemeyeceği için açısal değerler belli aralıklarla alınır.
    35:42Dörtgenlerin Oluşturulması
    • Bir dörtgen çizmek için dört noktaya ihtiyaç vardır ve bunlar tek bir noktadan hesaplanabilir.
    • Mevcut noktanın tetasına delta teta eklenerek bir sonraki nokta, fee değerine delta fee eklenerek yukarıdaki nokta bulunur.
    • Meridyen üzerindeki noktalara da deltalar eklenerek köşegen noktaları bulunabilir ve böylece dörtgen oluşturulur.
    37:03Küre Oluşturma Kodu
    • Delta ve delta fee değerleri kullanılarak for döngüsü içinde theta değeri bir bir arttırılacak ve her döngüde delta teta eklenerek tarama yapılacak.
    • Dış döngü fee değerlerini, iç döngü teta değerlerini tarayarak önce enlem üzerindeki noktaları halletmek için sıralama değiştirilecek.
    • X, y, z koordinatları yerine dört nokta için P1, P2, P3, P4 vektörler kullanılarak daha anlamlı bir kod oluşturulacak.
    40:37Noktaların Sıralaması
    • Dikdörtgen çizim metodunda saat yönünün tersine giden sıralama kullanılıyor çünkü böylece dikdörtgenin öne bakması sağlanıyor.
    • P1 noktası fi değerlerine delta fee eklenmiş hali, P2 noktası orijinal nokta, P3 noktası teta değerine delta teta eklenmiş hali, P4 noktası hem teta hem fee değerlerine delta eklenmiş hali olacak.
    • Bu sıralama ile tek tek dikdörtgenler çizilerek kürenin tamamı oluşturulacak.
    44:30Render Metodu ve Model Instance
    • Render metodunda prizma listesinin yerine tek bir model instance (küre numunesi) kullanılacak.
    • Küre numunesi için model instance oluşturulurken model builder, yarıçap (float), enlem ve boylamda kaç parçaya bölüneceği (int) parametreleri kullanılıyor.
    • Render metodunda model batch başlatıldıktan sonra küre numunesi model batch render metoduna gönderilerek ekrana çiziliyor.
    49:17Kod Hatası ve Çözüm
    • İlk çalıştırma sırasında hiçbir şey görünmedi çünkü dörtgen çizme metodunu çağırmak unutulmuştu.
    • Dörtgen çizme metodunu P1, P2, P3, P4 noktalarıyla çağırmak gerekiyordu.
    • Bu hatayı düzelttikten sonra küre oluşturulması bekleniyor.
    50:34Eclipse Sorunu ve Küre Çizimi
    • Eclipse programı çöküyor ve yeniden başlatılıyor.
    • Küre çizimi yapılıyor ve yarıçap değeri parametre olarak giriliyor.
    • Küre döndürüldüğünde, yüzeyler aynı renk olduğu için sadece kenar çizgilerinden döndüğünü anlayabiliyorsunuz.
    51:48Materyal Ekleme Denemesi
    • Daha önce oluşturulan materyal kullanılarak küreye materyal ekleme denemesi yapılıyor.
    • Materyal eklemek için ışık kaynağı ekleneceği ve bu işlem ileride yapılacak olduğu belirtiliyor.
    • Her bir nokta için rastgele renk oluşturulması tercih ediliyor.
    54:25Kürenin Koordinatları ve Özellikleri
    • Küre, dünyanın tepeden bakıldığında görüldüğü gibi bir yapı olarak ifade ediliyor.
    • Z ekseni dünyanın kutuplardan geçen ekseni temsil ediyor.
    • Enlemler ve boylamlar ayrı şekilde gösteriliyor ve küre tam bir şekilde gözüküyor.
    55:28Kürenin Bölünmesi ve Sorunlar
    • Küre metodunda enlem ve boylam değerleri değiştirilerek kürenin bölünmesi test ediliyor.
    • Farklı değerlerle küre çizildiğinde yanıp sönen noktalar görülüyor, bu üst üste binen iki yüzeyin olduğu anlamına geliyor.
    • Döngülerdeki eşitlik ifadesinin tamamen eşitsizlik olması gerektiği fark ediliyor.
    58:59Kürenin Tamamlanması ve Kalan Sorunlar
    • Düzeltme yapıldıktan sonra yanıp sönen noktalar ortadan kalkıyor.
    • Kürenin bölünmesi için daha fazla değer (64x64) kullanılarak daha düzgün bir görünüm elde ediliyor.
    • Tepe noktalarında üçgen pizza dilimleri oluştuğu ve aradaki şerit boyunca yanıp sönen noktaların hala olduğu belirtiliyor.
    1:01:42Hata Birikimi Sorunu ve Çözümü
    • Kodda fi değerleri ekrana yazdırılarak kontrol ediliyor ve for döngüsünün dışına çıktığında p değerinin de yazdırılması gerekiyor.
    • Float sayıları toplarken virgülden sonraki belli bir kısmı kapsamadığı için açısal değerlerde hatalar birikmeye başlıyor.
    • Hata birikimini önlemek için fi değerini sıfırdan başlatıp parçalar ekleyerek değil, delta fi üzerinden bir çarpanla tanımlamak daha iyi sonuç veriyor.
    1:06:18Daire Çizimi ve Sorun Çözümü
    • Yeni yöntemle daire çizildiğinde tepe noktasındaki titreme sorunu ortadan kalkmış.
    • Küçük sayıda parçaya bölünmüş daireler (3x3, 4x4) da sorunsuz çalışıyor.
    • Her yüzey dörtgen olarak ifade ediliyor ve tepe dairelerindeki dörtgenlerin iki noktası eş bir noktaya indirgeniyor.
    1:10:48Kürenin Döndürülmesi
    • Küre numunesi render metodunun içerisinde dönerek hareket ettirilebilir.
    • Küre numunesinin transform matrisini çağırarak rotate metodu kullanılarak z ekseninde döndürülüyor.
    • Farklı eksendeki dönüş hızları ayarlanarak küre iki farklı eksende farklı hızlarda dönebiliyor.
    1:12:50Kürenin Hareket Ettirilmesi
    • Render metodunun üzerinde float t değeri (zaman) tanımlanarak her render ettiğimizde bu değer artıyor.
    • Küre numunesi x ekseninde kosinüs zaman, y ekseninde sinüs zaman kadar taşınıyor.
    • Sinüs ve kosinüs fonksiyonları eksi bir ile artı bir arasında dolaşan değerler aldığı için küre gidip geliyor.
    1:15:063D Nesne Hareketi ve Dönme Sorunu
    • 3D nesnenin hareketi ve dönme sorunu inceleniyor, değerlerin daha küçük aralıklarla artırılmasıyla daha yavaş değişimi bekleniyor.
    • Sinüs ve kosinüs fonksiyonlarının değerleri eksi bir ile artı bir arasında değiştiği, çarpanı değiştirerek eksi iki f ile artı iki f arasında değişimi sağlanması gerektiği belirtiliyor.
    • Nesnenin dönme ve taşınma hareketi arasındaki ilişki inceleniyor, kameranın lensi ve bakış açısının nesnenin görünümünü etkilediği açıklanıyor.
    1:18:24Hareket Hızı ve Sınırlar
    • Zaman değerinin çarpanı değiştirildiğinde, nesnenin aynı hareketi daha yavaş yapmasına rağmen daha uzağa gitmeye başladığı gözlemleniyor.
    • Zaman değeri artınca veya azalınca sinüs ve kosinüs fonksiyonlarının sonuçlarının eksi bir ile artı bir arasında kalması gerektiği, ancak translate metodunun göreceli olarak değer eklediği için nesne daha uzağa taşınıyor.
    • Set to translation metodunun doğrudan belirtilen konuma gitmesi gerektiği, bu sayede nesnenin sınırların dışına taşmadan hareket etmesi sağlanıyor.
    1:22:36Dönme ve Hareket Birleştirilmesi
    • Nesnenin dönmesi ve hareketi birleştirilmesi için önce set to translation kullanılıp sonra dönme yapılması gerektiği belirtiliyor.
    • Set to rotation metodunun belli bir noktaya göre dönme gerektirdiği, bu nedenle iki adet vektör veya belli bir eksen kullanılması gerektiği açıklanıyor.
    • Ardışık transform operasyonlarının doğru çalışması için set to translation ve set to rotation metodlarının birlikte kullanılmasındaki zorluklar inceleniyor.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor