新技能Get! 手把手教你接入CG Kit


1 初始准備

1.1 CGKit簡介

  CGKit是華為推出的一套高性能渲染框架,提供了渲染所需的原子能力,如材質、模型、燈光以及一些后期特效等。另外提供了高性能渲染組件,如抗鋸齒和基於Vulkan的多線程組件等。除此之外還提供了Smart Cache以及Pre-rotation等擴展能力,並整合了前沿計算機圖形學、計算機視覺和深度學習等最新研究成果。

1.2 官方指導

  華為開發者的主頁如下:
  https://developer.huawei.com/consumer/cn/

  在該頁面有CGKit的鏈接:

在這里插入圖片描述

  點擊該鏈接即可轉到CGKit的主頁,其地址如下:
  https://developer.huawei.com/consumer/cn/hms/huawei-computer-graphics/

  這里會有CGKit的基本介紹,如下:

在這里插入圖片描述

  這里主要關注開發,點擊“查看文檔”,即可轉到如下地址:

  https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/introduction-0000001050197938

  該網頁是進行CGKit開發的官方頁面,有關介紹這里不再重復。

  重點關注以下兩點即可:

在這里插入圖片描述

  其中示例代碼是一套Android Studio工程,含有開發CGKit的框架以及必要的代碼;SDK則是CGKit的核心,包括so文件以及對應頭文件。

  需要注意的是,示例代碼需要做一定的修改才能開發出可運行的應用,主要是以下兩個原因:

  1. SDK是核心模塊,需要注冊華為賬號才能下載,故不包含在示例代碼中,需要下載后放入示例代碼工程中;
  2. 模型等文件有一定版權限制,故不包含在示例代碼中,需要自行下載或制作模型后放入示例代碼工程中。

1.3 開發准備

  1. 基於Kirin芯片的華為手機,目前支持Vulkan1.0版本,系統版本要求Android10以上;
  2. Android Studio,推薦使用最新版本(目前為4.0);
  3. NDK版本20.1.5948944;
  4. API等級29(Android 10)
  5. Build Tools版本29.0.3

2 開發詳細記錄

2.1 新建工程

  使用Android Studio新建工程,這里為了方便不直接新建工程,而以官方示例代碼為例,直接用Android Studio打開即可。

  打開示例代碼后,Android Studio會自動根據gradle進行有關內容的下載,比如該工程所指定的gradle-5.6.4。

  雖然gradle配置了minSdkVersion為27,但是由於CGKit剛剛推出,兼容性問題還有待完善,因此可以改為29,僅在Android 10以上版本運行。

2.2 簽名

  示例代碼中的gradle文件配置了簽名,這里可以刪除,僅作為自己開發驗證使用。當然,參考官方資料進行簽名生成,以及華為應用接入等完整步驟也可以。

2.3 集成SDK

  在前面章節提到的SDK下載部分,將SDK下載下來,如下:

在這里插入圖片描述

  將include目錄拷貝到:
  app\src\main\cpp

  如下:
在這里插入圖片描述

  libs目錄拷貝到app目錄,如下:

在這里插入圖片描述

  接着點擊Build下的Refresh Linked C++ Projects:

在這里插入圖片描述

  則可以打開MainApplication.cpp,查看其中的接口都不再以紅色顯示,說明已經配置好了:

在這里插入圖片描述

2.4 制作天空盒

  根據官方文檔,天空盒應該自己制作,沒有隨示例代碼發布。天空盒有許多參考資料,這里參考:
  https://www.cnblogs.com/alps/p/7112872.html

  該網站也提供了天空盒資源下載,可以作為學習之用。另外提供一個cubemap天空盒示例網站,可在線查看天空盒效果:
https://doc.babylonjs.com/resources/playground_textures#cubetextures

  選擇一個cubemap天空盒下載,然后編輯.cub配置文件內容如下:

width=512
height=512
depth=6
mipmap=1
face=6
channel=4
suffix=.png

  這里width和height要和天空盒第一級mipmap的png圖像大小一致。

  並根據指導將圖片命名,如下:

在這里插入圖片描述

  這些文件都放在env目錄,然后復制到示例工程的cubemap目錄即可。

  這里要注意,目前CGKit僅支持四通道png格式的圖片,請勿使用其他格式。如果png不是四通道,可以使用windows畫圖程序打開,另存為png,則可以轉換成四通道。

2.5 准備模型

  目前CGKit只支持obj格式的模型,且僅從obj中解析點和面,其中的mtl格式材質則被忽略。另外,解析支持法線、貼圖坐標解析及切線計算,但是面僅支持三角形模式,而不會進行多頂點組成的面的自動三角化。

  開源免費的3D模型有許多,這里給一個參考網站:
  https://www.turbosquid.com/Search/3D-Models/free/obj

  對於本教程,這里選了如下的模型:
https://www.turbosquid.com/3d-models/medieval-blacksmith-low-poly-3d-model-1591136

  效果如下:

在這里插入圖片描述

2.5 開發應用

  示例工程已經含有MainApplication.cpp有關代碼,這里僅需要稍作修改即可。

2.5.1 修改模型

  首先在InitScene方法中,修改模型路徑:

  String modelName = "models/black_smith/black_smith.obj";

  接着修改貼圖路徑(將原來的jpg轉為png格式):

  String texAlbedo = "models/black_smith/texture/black_smith.png";

  這里只有一個貼圖,將原來的多余貼圖注釋掉:

  //String texNormal = "models/Avatar/Normal_01.png";
  //String texPbr = "models/Avatar/Pbr_01.png";

  並將這兩個貼圖對應的SetTexture和SetSamplerParam注釋掉。

2.5.2 修改天空盒

  修改CreateSkybox方法中的有關配置,將天空盒所用的立方體模型修改為:

  String modelName = "models/cube/cube.obj";

  這里cube是最簡單的模型,鏈接如下:

  https://gist.github.com/MaikKlein/0b6d6bb58772c13593d0a0add6004c1c

  並注意將MainApplication.h中的環境貼圖設置為:

  String m_envMap = "cubemaps/env/env.cub";

  這里與前面制作天空盒時所用的名稱相同。

2.6 運行驗證

  效果如下:

在這里插入圖片描述

  如果運行出現問題,可以使用adb logcat進行日志查看以分析問題。CGKit也會在安卓標准日志中打印有關信息,且只記錄ERROR級別日志。如果想要對CGKit日志進行過濾,可以使用如下命令:

  adb logcat | grep CGKit

3 FAQ

3.1 模型支持什么格式

  目前CGKit僅支持obj格式的模型,可解析頂點、法線、貼圖坐標及面信息等;但不支持多余3頂點的面自動三角化,也不支持從mtl格式材質文件解析有關配置。

3.2 貼圖支持什么格式

  目前CGKit僅支持四通道png格式圖片解析。

3.3 簽名是什么

  安卓開發可能需要用到簽名,可以參考官方資料制作簽名文件。在平時開發調試時,可以將示例代碼中的簽名配置注釋掉。

3.4 Failed to get hire

  日志打印中可能會發現“Failed to get hire”,這條是打點所用,無需理會。“打點”是指CGKit對自己運行情況進行記錄和上報,不影響渲染等模塊運行。

4 附錄

  已經編譯好的apk,以及編譯的Android Studio工程已經放在百度網盤供下載參考,如下:

  鏈接:https://pan.baidu.com/s/1x8wjYLqZ4CZpVUlo-ZDM1w   提取碼:3j8j

  請注意,CGKit本身需要從官方下載SDK,即so和頭文件,所以這里提供的工程中是不含有該SDK的,請先注冊華為開發者后下載放入即可。該工程已經含有模型、貼圖以及天空盒等必備資源,僅缺少CGKit SDK而已。

原文鏈接:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0201309841885850221&fid=18

原作者:捉不住的鼬鼠


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM