HUAWEI Bilgisayar Grafikleri Kitinin Uygulanması ve Unity’ye Giriş
Herkese merhaba ,Bu medium yazısında, CG Kit’in HUAWEI için önemini, insan yaşamı için ne anlama geldiğini, teknolojik kullanım alanlarını ve onu kullanarak ne yapılacağını, nasıl kullanılacağını ve kod tarafının entegrasyonunu ve genel bilgi olarak ise,UNITY ile beraber nasıl uygulanabilirliğini anlatacağım.
Bilgisayar Grafikleri nedir?
“Bilgisayar grafikleri”, bilgisayarların görselleştirilmesiyle ilgili bilgisayar biliminin dalıdır. Başka bir deyişle, bilgisayarların bir görüntüleme cihazında görüntüleri oluşturması ve değiştirmesi için kod parçacıklarıdır. Görüntüleri oluşturmak, saklamak, değiştirmek ve temsil etmek için yazılım tekniklerinden oluşmaktadır.
Bilgisayar grafikleri neden bu kadar önemli ?
Günümüzde bilgisayar grafiklerinin önemi kendi uygulamalarında yatmaktadır. Vazgeçilmez olan bazı özellikler vardır ve bu, otomotiv, havacılık vb. Birçok alanda bunların hızlı bir şekilde görselleştirilmesine yardımcı olur.
Bilgisayar grafiklerini ortaya çıkmadan önce, tasarımcılar pahalı modelleme ve zaman alan kit yapımı üzerinde çalışıyorlardı. Artık tasarımcılar, bir bilgisayar kullanarak şekillerinin modellerini etkileşimli olarak görüntüleyebilir ve değiştirebilir.
Bilgisayar grafikleri, sanat ve eğlencenin sınırlarını da genişletmiştir. Jurassic Park gibi filmler, bilgisayar grafiklerinde hayal gücünün sınırlarını test eden görüntüler oluşturmak için kullanılmaktadır.
VULKAN API nedir ?
“Vulkan” düşük maliyetli, çapraz platformlu bir 3D grafik ve bilgi işlem API’sidir. Malzemeler, modeller, ışık kullanımı ve post efektleri gibi atom seviyesinde yeteneklere sahip Vulkan API’ye sahiptir.
“Vulkan”, önceki OpenGL’ye göre çeşitli avantajlar sağlamak için diğer API’lerin önüne geçebiliyor. Vulkan belirli bir kapasite altında olan üretimi ile, GPU üzerinde daha fazla kontrol ve daha düşük CPU kullanımı sunmaktadır. Farklı bir deyişle, “DirectX” in kendisine karşı çetin bir rakip olduğu söylenmektedir.
CG KIT MİMARİSİ
Geliştiricilerin minimum iş yükü ile işleme kabiliyetini projelere entegre etme yeteneği, kullanımı kolay atomik işleme yeteneği sağlamakla beraber,
çok iş parçacıklı model yükleme gibi pratik işlevlere sahip 3 boyutlu yerel uygulama geliştiricileri için çok yönlü bir işleme çerçevesi sağlar.
Computer Graphics Kitinin Avantajları
CG Kit’in neler yapabildiğini anlatan tablo yer almaktadır.
Hangi alanlar için kullanılabilir ?
Bilgisayar grafikleri, farklı türdeki nesnelerin ve görüntülerin hareketi, oluşturulması, veri depolanması ile ilgilidir.
Bilgisayar grafiği uygulamalarından bazıları;
- Bilgisayar Sanatı,
- Eğlence,
- Görselleştirme,
- Makine Çizimi,
- Görüntü işleme,
- Grafik Kullanıcı Arayüzü vb.
CG hakkında birkaç örnek resim.
Başlangıç
CG Kitine ana web sayfasına aşağıdaki bağlantıdan ulaşabilirsiniz.
CG Kit için entegrasyon hazırlıkları ve geliştirme süreci için ihtiyaç duyacağınız bazı gereksinimler şunlardır:
Yazılım Gereksinimleri
- Android Studio 3.5 yada sonrası,
- SDK Platform 19 yada sonrası,
- Smartphone: Android 8.0 yada sonrası
- Gradle 4.0.1 yada sonrası
Gerekli Bilgiler
- Android temelleri,
- Android NDK
- Android Yerli APK
Kısıtlamalar
Her Huawei telefon kullanıcısı kiti geliştirmek için kullanabilir, herhangi bir kısıtlama yoktur ancak “Vulkan” versiyonu ve “Android Versiyonu” dikkate alınmalıdır.
Geliştirme Öncesi Adımlar
Uygulama geliştirmeye başlamadan önce, kendi projenize bazı adımları izlemeniz gerekmektedir.
1- “Preparations for Integrating HUAWEI HMS Core” Tıpkı her kit gibi bunlar da uygulamamız gereken önemli kurallardır.
Bilinmesi gereken adımlar aşağıdaki bağlantıdadır;
İhtiyaç duyduğunuz gerekli bilgileri kolayca bulabilirsiniz.
2- 1. adımı uyguladıktan sonra, bunları öğreneceksiniz;
- AppGallery Connect’te Uygulama Oluşturma
- Android Studio Projesi Oluşturma
- İmza Sertifikası Oluşturma
- İmzalama Sertifikası Dijital Parmak İzi Oluşturma
- AppGallery Connect’e parmak izi sertifikası ekleme
- AppGallery Connect’te API Hizmetini Etkinleştirme
- Yapılandırma Ekleme
- Proje imzasını yapılandırma
- Proje senkronizasyonu
3- İlk olarak, örnek kod SDK ‘yı içermemektedir.Böylece SDK’yı indirmeniz ve kendi projenize aktarmanız gerekir.Aksi takdirde projeyi yürütemezsiniz. Elbette bunu yapmak için “HUAWEI Developer” hesabınızla oturum açmanız gerekecek.
İşte ihtiyacınız olan SDK bağlantısı;
İkinci olarak, modeller, küp dosyaları örnek kaynak koduna dahil değildir. Bu nedenle, yasal sorunlar, telif hakkı endişeleri vb. Nedeniyle kendi modellerinizi, küp dosyalarınızı oluşturmanız gerekiyor.
4- Son olarak yukarıdaki “Geliştirme Öncesi Adımlar” adlı bölümde bir android projesinin nasıl oluşturulacağından bahsetmiştim.
Proje oluştururken Native C ++ projesi olarak oluşturulacağına lütfen dikkat ediniz.
Build.gradle dosyanızın böyle olduğundan emin olun.
Minimum “NDK” ve “SDK” sürümünün desteklendiğine dikkat edin. HMS Core versiyonundan versiyona değiştirilebilir, bu versiyonda yukarıdaki gibi güncellenmiştir. en az Android versiyon 8.0 veya üzeri çalıştırılabilir.
SDK’nın entegrasyonu
Hsadatırlarsanız, SDK’nın ne kadar önemli olduğu hakkında sizinle konuşmuştuk.
SDK’yı indirdikten sonra aşağıdaki resmi göreceksiniz.
Bundan sonra yapacağımız 2 adım var;
1- “Include” dosyasını tıkladıktan sonra aşağıdaki gibi bazı farklı klasörler göreceksiniz.
SDK’daki başlık dosyalarını, Android Studio’daki “app \ src \ main \ cpp \ include \ CGRenderingFramework” dizinine kopyalamanız gerekir.
2- İkinci olarak, “libs” klasörünü açtıktan sonra aşağıdaki resimdeki gibi göreceksiniz.
Bu, Android Studio’da tekrar içe aktarmanız gereken kitaplıktır.
SDK paketi içinde yer alanlibs \ arm64-v8a \ libcgkit.so & libs \ armeabi-v7a \ libcgkit.so dosyalarını sırasıyla Android Studio’da libs / arm64-v8a ve / libs / armeabi-v7a’ya kopyalayın.
3-Gerekli bileşenleri içe aktardıktan sonra, Build altındaki Bağlantılı C ++ Projelerini Yenile’ye tıklayınız.
4- Bundan sonra MainApplication.cpp dosyasını açın Kod blogları kırmızıyla vurgulanmamışsa, Bingo !!! bu, konfigürasyonun başarılı olduğu ve projeyi derlediği anlamına gelir.
Son olarak, projeyi GradleFiles ile senkronizasyonu yapmayı unutmayın.
Model Verilerinin Hazırlanması
CG Rendering Framework, özelleştirilmiş modelleri ve malzeme dosyalarını ve OBJ modellerinin, .png dokularının ve SPIR-V gölgelendiricilerinin ayrıştırılmasını destekler.
Kendi özel malzemelerinize sahip olmak için bazı prosedürler vardır:
- Küp haritalar oluşturma
- Altı kare dokusu
- Köşe gölgelendiricisi (set ve bağlama ayarlarına sahip global sabit veri yapısı)
- Piksel gölgelendirici (set ve ciltleme ayarlarına sahip hafif veri yapısı)
- Doku kanalları
Tüm detaylara aşağıdaki bağlantıdan ulaşabilirsiniz.
Uygulama Geliştirme Süreci
Sürece Genel Bakış
Uygulama geliştirme için, Aslında geliştirici olarak kendi dünyanızı hazırlamak için ortam yaratmayı sağlayan bazı “Loading Resources” ihtiyacınız var.
- Kendi SkyBox’ınızı yapmak
- Kamera Örneği Oluşturma
- Bir Scene nesnesi ve modeli oluşturun
- Işık objesi yaratmak
- Hareket Olaylarını Yapılandırma
İşlev İzni ve Kodlama
1. Yazma ve okuma izninizin olması gerekir, bu izin dolaylı olarak verilir. Manifest dosyasına izin ekleyelim.
“WRITE_EXTERNAL_STORAGE” , bir uygulamanın harici depolamaya yazmasına izin verir.
READ_EXTERNAL_STORAGE , bir uygulamanın harici depolamadan okumasına izin verir.
2. Proje düzeyindeki build.gradle dosyasında “Maven repository” adresini yapılandırın.
3. CG SDK’yı uygulama düzeyindeki build.gradle dosyasında yapılandıralım.
4. İhtiyacınız olan tek şey bir örnek nesnesi oluşturmak ve çalıştırmaktır.
BaseApplication nesnesinden türeyen“MainApplication” örneğini oluşturun. Ana işleme döngüsü MainLoop () ‘u başlatın.
Örnek kod aşağıdadır:
5. Fonksiyonlar “MainApplication.cpp”de uygulanır.
Kamera sahnesinde bir “cameraObj” nesnesini başlatmanız, Camera nesnesi mainCamera’yı almanız gerekir,
mainCamera parametrelerini ayarlayın (yansıtma açısı ve türü, hedef konumu ve görüş noktası konumu dahil) vb.
Örnek kod aşağıdadır:
6. Bir “Scene object” oluşturun ve modeli, dokuyu ve daha fazlasını yükleyin.
Örnek kod aşağıdadır:
7. Bir “Skybox” oluşturun, tüm kaynaklarınız için önemlidir, tüm öğeler onun üzerinde yaratılmaktadır.
Örnek kod aşağıdadır.
8. “Light Resources” oluşturun. Böylece ışığın rengini, türünü, konumunu vb. Yerleştirmek ve elde etmek için bir ışık sınıfı kullanılacaktır.
9. “Gesture Events” yapılandırın.
Tek dokunuşlu veya çoklu dokunma eylemlerini izlemek için bir dokunma olayı sınıfı kullanılır. Bunlardan bazıları TOUCH_ACTION_DOWN, TOUCH_ACTION_UP ve daha fazlasıdır.
Unity kullanarak “Loading Resources” Oluşturma
Özellikle “Cubemaps” ve ”modeller” dosyası çok önemlidir ve onlarsız kendi tasarımınızı gerçekleştirmeye devam edemezsiniz. Bu nedenle tüm modellerinizi dilediğiniz gibi oluşturabileceğiniz UNITY’yi sizlerle paylaşmak istiyorum.
Unity, bu konuda size yardımcı olacak ve tüm ihtiyaçlarınızı karşılayacak donanıma sahiptir.
Skybox Yapımı
İlk olarak, Huawei’nin henüz kendi “SkyBox” örneği yok, Bu nedenle, örnek kaynak kodunda piyasaya sürülene kadar kendi gökyüzü kutularınızı hazırlamanız gerekir.
Aşağıdaki web sitesi size kendi skybox’larınızı Unity kullanarak nasıl yapacağınızı sağlar ve daha fazla bilgi verir;
https://docs.unity3d.com/Manual/skyboxes-using.html
Sahne Nesneleri ve Modelleri
Unity, sahne objeleri ve modellerini kullanarak projede ne kadar önemli ve nasıl kullanılacağını detaylı olarak aşağıdaki linkten öğrenebilirsiniz.
https://docs.unity3d.com/Manual/CreatingScenes.html
Kamera Örneği Oluşturma
Kamera Efektleri, özellikle oyunun görünümü ve duyguları için çok önemlidir. Renk düzeltme, çiçeklenme ve film grenleri gibi şeyler oyununuza güzel bir parlaklık katabilir. Unity, kamera efektleri için yerleşik komut dosyalarına sahiptir.
Bu bölümde, bir Unity sahnesinde ana kameranıza kamera efektlerini nasıl ekleyeceğinizi gösterir. Buraya bazı linkler bırakıyorum ve emin olun ki bunu okuduğunuzda zihninizde güzel bilgiler yer edinecektir.
https://docs.unity3d.com/ScriptReference/Camera-main.html
https://docs.unity3d.com/ScriptReference/Camera.html
Aşağıdaki link videosunu izlediğinizde, kamera oyun nesnesinin nasıl kullanılacağı hakkında temel bilgilere sahip olacaksınız.
Işık Nesnesi Oluşturma
“Unity’nin gerçek zamanlı Global Illumination” motoruyla aydınlatmanın nasıl çalıştığı hakkında bahsediliyor.
Bazı aydınlatma teknikleri ve projeniz içerisinde nasıl kuracağınız anlatan bir kısım yer almaktadır.
Aşağıdaki bağlantılarda işleme ve aydınlatma tekniğine, ışık türlerine ve daha fazlasına giriş bulacaksınız.
https://learn.unity.com/tutorial/introduction-to-lighting-and-rendering#5c7f8528edbc2a002053b529
https://docs.unity3d.com/ScriptReference/Light.html
https://docs.unity3d.com/Manual/Lighting.html