材质库目前提供C++端SDK,包括云服务通信模块和用户权限、库管理、材质管理、本地缓存管理等底层功能。用户可以基于材质库SDK的用户接口,使用多种方式(QT,JS),搭建材质库应用界面和业务功能。
支持网络产品的用户权限认证。
支持材质库信息和分类信息获取。
支持材质数据的上传和下载。
支持云端材质的本地缓存功能。
支持本地缓存数据的读写与访问。
支持离线方式集成。
支持多引擎数据同步:同一个材质对应不同的引擎有不同的版本。
当前请联系"图形平台.显示技术部.云渲染技术部"获取最新的材质库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;
};