材质库服务

DEMO示例

场景描述

基于GGP引擎的桌面端三维应用系统,通过集成材质库SDK,实现材质数据从云端下载到本地缓存,并应用材质到三维场景。

调用流程

1.前置条件:

  • 在中台创建应用,获取appkey、appsecret;

  • 获取服务调用token;

  • 开通服务,scope授权通过;


    以上步骤可参考材质库快速启动

2.具体调用步骤


step1:获取SDK


SDK在持续开发中,当前阶段如有材质库对接需求,请联系"图形平台.显示技术部.云渲染技术部"PO,获取最新的材质库SDK相关信息。


step2:SDK配置

  1. 使用Visual Studio创建工程,依赖qt;

  2. 添加SDK头文件的引用(Configuration Properties->c/c++->General->Additional Include Directories);

  3. 添加SDK lib文件的引用(Configuration Properties ->Linker->Additional Library Directories),并将对应的lib文件信息添加到Configuration Properties ->Linker->Additional Dependencies;

  4. 将SDK中bin文件夹下的所有文件全部拷贝到应用程序的exe目录下;

  5. 在需要调用材质库SDK接口的文件中引入头文件#include "GGPMaterialService/GMaterialRequestHandler.h";

step3:设置Token


新建CMaterialRequestHandler类对象,构造函数中设置参数token的值

CMaterialRequestHandler* pHandler = new CMaterialRequestHandler("GGP", token);


step4:下载材质数据

  1. 继承回调类IClientAdapter,实现对应的虚函数。 回调类如:

CClientAdapterImpl;
  1. 新建回调子类对象。

CClientAdapterImpl* pAdapter = new CClientAdapterImpl();
  1. 调用对象pHandler的下载材质接口下载材质数据,(使用已知材质id("8ffe06f3c6bdb526d1bef84a09727ee1c93cfebf")验证。

pHandler->DownloadMaterial(id, pAdapter);

下载结果通过回调类pAapter的对应函数返回,成功调用onMaterialLoadProgress,失败调用onMaterialLoadError.

  1. 成功下载材质后,在"C:\Users\用户名\Documents\Material Cache\文件类型\引擎名"文件夹中会出现材质的属性文件和纹理文件的缓存,如该材质的属性文件的缓存对象为C:\Users\用户名\Documents\Material Cache\JsonFiles\GGP\8ffe06f3c6bdb526d1bef84a09727ee1c93cfebf,纹理文件的缓存对象为C:\Users\用户名\Documents\Material Cache\Textures\GGP\589671ee6782e3c747be000a601db67d、C:\Users\用户名\Documents\Material Cache\Textures\GGP\97da633c3d1d66df100a0feb8c622372

step5:应用材质

  1. 材质下载成功之后,调用对象pHandler获取材质属性的接口得到一个json字符串,接口:

GetMaterialProperties(id);
  1. 解析json字符串,获取到所有纹理资源的resId,然后通过:

pHandler->GetMaterialResourcePath(resId);

得到资源在本地缓存的全路径;

  1. 获得了Json(材质描述文件)和纹理资源文件后,产品根据需求和所依赖的引擎渲染方式,来应用材质数据。

3.结果展示案例


材质库在BIMDeco产品中的实际应用。注:BIMDeco产品同时集成了图形平台Falcon渲染器,材质库本身已经支持Falcon渲染器;因此BIMDeco可以把应用材质数据的场景无缝导入Falcon渲染器,实现更好的效果展示。

  • 未使用材质的效果未使用材质库

  • 使用材质库,应用材质数据使用材质库

  • 使用材质后的效果使用材质库效果

  • 场景导入Falcon渲染器的效果

    Falcon效果