HUAWEI Bilgisayar Grafikleri Kitinin Uygulanması ve Unity’ye Giriş

Cenk Türker
Huawei Developers - Türkiye
8 min readOct 5, 2020

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 Resim-1

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.

Bilgisayar Grafikleri Resim-2

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 IP

“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.

Architecture of CG Kit

Computer Graphics Kitinin Avantajları

CG Kit’in neler yapabildiğini anlatan tablo yer almaktadır.

CG Kit’in yetenekleri

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.

Gölge Efekti Oluşturma
Oyun oluşturma

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.

Desteklenen Cihazlar

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ı;

https://developer.huawei.com/consumer/en/doc/development/HMSCore-Library/sdk-download-0000001050441521

İ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.

build dependencies of CMake in the /app/build.gradle file.
NDK ABI filter

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.

Libs klasör içi

Bu, Android Studio’da tekrar içe aktarmanız gereken kitaplıktır.

.so uzantılı kütüphane

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.

https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/demo-data-process-0000001050200023

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

SkyBox oluşturma

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.

Sample of Scene objects

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

Kamera Örneği

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.

Sample of Lighting and Rendering

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

Zaman ayırdığınız ve anlayışınız için teşekkür ederim. Bir sonraki medyum makalemde görüşmek dileğiyle hoşçakalın…

--

--