乐趣区

关于android:新技能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 目录拷贝到:
  appsrcmaincpp

  如下:

  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/MaikK…

  并留神将 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

原作者:捉不住的鼬鼠

退出移动版