材质库服务

材质库SDK说明

简介

材质库目前提供C++端SDK,包括云服务通信模块和用户权限、库管理、材质管理、本地缓存管理等底层功能。用户可以基于材质库SDK的用户接口,使用多种方式(QT,JS),搭建材质库应用界面和业务功能。

功能介绍

  1. 支持网络产品的用户权限认证。

  2. 支持材质库信息和分类信息获取。

  3. 支持材质数据的上传和下载。

  4. 支持云端材质的本地缓存功能。

  5. 支持本地缓存数据的读写与访问。

  6. 支持离线方式集成。

  7. 支持多引擎数据同步:同一个材质对应不同的引擎有不同的版本。

获取SDK

当前请联系"图形平台.显示技术部.云渲染技术部"获取最新的材质库SDK。

SDK接口说明

::: tip 备注


当前SDK持续迭代开发中,接口可能会发生变化,在使用过程中如有疑问可咨询图形平台.显示技术部.云渲染技术部。


:::


CMaterialRequestHandler.h


1、SDK导出类的构造函数

CMaterialRequestHandler(const QString& engineType, const QString& userToken, const bool networkStatus = true);

说明


如果用户需要调用SDK的接口操作材质数据,需要创建此类的对象,通过类对象调用函数如:

CMaterialRequestHandler pHandler = new CMaterialRequestHandler("GGP", "XXXX");
pHandle->GetMaterialProperties(materialId);  

参数

参数名

输入/输出

描述

engineType

@param in

引擎类型(有限枚举)

userToken

@param in

用户token

networkStatus

@param in

网络环境(是否有网)

2、设置用户token;

void SetUserToken(const QString& token)

说明


如果产品在构造函数中设置参数networkStatus为true,则要求用户联网并设置具有身份信息的token才能访问云端材质数据。


参数

参数名

输入/输出

描述

userToken

@param in

用户token

3、获取指定id材质的属性文件(json)

QString GetMaterialProperties(const QString& matId);

说明


通过该接口可以返回本地缓存中的材质属性文件内容。


参数

参数名

输入/输出

描述

matId

@param in

材质id

返回值

@return

属性列表字符串, 找不到时返回空。

4、获取指定id的资源文件路径

QString GetMaterialResourcePath(const QString& resourceId);

说明


通过该接口可以返回本地缓存材质的各种纹理贴图的路径。


参数

参数名

输入/输出

描述

resourceId

@param in

资源id

返回值

@return

获取到的文件资源路径,找不到资源的返回空

5、根据材质id获取对应缩略图本地缓存路径

QString GetThumbnailPath(const QString& matId);

说明


通过该接口可以返回本地缓存中的缩略图路径


参数

参数名

输入/输出

描述

matId

@param in

材质id

返回值

@return

获取到的文件缓存路径,找不到图片的返回空

6、根据材质id判断材质是否缓存到本地

bool IsMaterialInCache(const QString& matId, const QString& engineType, IClientAdapter* pAdapter);

说明


该接口判断材质是否已经缓存到本地,SDK本身不理解下载的材质属性文件,需要用户实现材质解析的回调类


参数

参数名

输入/输出

描述

matId

@param in

材质id

engineType

@param in

引擎类型(有限枚举)

pAdapter

@param in

回调适配类

返回值

@return

已缓存返回true,否则返回false

7、下载材质数据

void DownloadMaterial(const QString& matId, IClientAdapter* pAdapter, int queueType = 0);

说明


该接口为异步调用,下载结果通过回调方法返回


参数

参数名

输入/输出

描述

matId

@param in

材质id

pAdapter

@param in

回调适配类

queueType

@param in

0-默认值 清空之前缩略图下载的队列, 1-新请求的内容排在队尾,2-新内容排在队头

8、根据分类名称获取材质列表

void RequestProductMaterialListByCategory(const QString& catergory, IClientAdapter* pAdapter);

说明


该接口为异步调用,下载结果通过回调方法返回


参数

参数名

输入/输出

描述

catergory

@param in

分类名称

pAdapter

@param in

回调适配类

9、根据材质id列表批量下载材质缩略图

void DownloadProductThumbnailsById(const QString& ids, IClientAdapter* pAdapter, int queueType = 0);

说明


该接口为异步调用,下载结果通过回调方法返回


参数

参数名

输入/输出

描述

ids

@param in

材质id列表(id以分号';'隔开)

queueType

@param in

0-默认值 清空之前缩略图下载的队列, 1-新请求的内容排在队尾,2-新内容排在队头

IViewAdapter.h(回调类)

class IViewAdapter
{
public:
    
	//StatusCode.Normal = 0;  
	//StatusCode.ErrorTimeout = 6000;
	//StatusCode.ErrorPrivilege = 7000;
	//StatusCode.ErrorNotexist = 8000;
	//StatusCode.ErrorNetwork = 9000;

	// Download function
    virtual void onMaterialListLoadProgress(const QString& result) = 0;
    virtual void onMaterialLoadProgress(const QString& result, const float progress) = 0;
    virtual void onThumbnailLoadProgress(const QString& result) = 0;
    
    virtual void onMaterialListLoadError(const QString& result, const int statusCode) = 0;
    virtual void onMaterialLoadError(const QString& result, const int statusCode) = 0;
    virtual void onThumbnailLoadError(const QString& result, const int statusCode) = 0;
    
    //Initialization: Get list
    virtual void onGetLibraryListProgress(const QString& result) {}
    virtual void onGetCategoryListByLibId(const QString& result) {}
      
    // Parse function
    virtual QString ParseJson(const QString& Json) = 0;
    
    //For unit test
    virtual void SetTestCallback(IUnitTestCallback* callback) {}
    virtual IUnitTestCallback* GetTestCallback() = 0;

};