基于GGP引擎的桌面端三维应用系统,通过集成材质库SDK,实现材质数据从云端下载到本地缓存,并应用材质到三维场景。
1.前置条件:
在中台创建应用,获取appkey、appsecret;
获取服务调用token;
开通服务,scope授权通过;
以上步骤可参考材质库快速启动
2.具体调用步骤
step1:获取SDK
SDK在持续开发中,当前阶段如有材质库对接需求,请联系"图形平台.显示技术部.云渲染技术部"PO,获取最新的材质库SDK相关信息。
step2:SDK配置
使用Visual Studio创建工程,依赖qt;
添加SDK头文件的引用(Configuration Properties->c/c++->General->Additional Include Directories);
添加SDK lib文件的引用(Configuration Properties ->Linker->Additional Library Directories),并将对应的lib文件信息添加到Configuration Properties ->Linker->Additional Dependencies;
将SDK中bin文件夹下的所有文件全部拷贝到应用程序的exe目录下;
在需要调用材质库SDK接口的文件中引入头文件#include "GGPMaterialService/GMaterialRequestHandler.h";
step3:设置Token
新建CMaterialRequestHandler类对象,构造函数中设置参数token的值
CMaterialRequestHandler* pHandler = new CMaterialRequestHandler("GGP", token);
step4:下载材质数据
继承回调类IClientAdapter,实现对应的虚函数。 回调类如:
CClientAdapterImpl;新建回调子类对象。
CClientAdapterImpl* pAdapter = new CClientAdapterImpl();调用对象pHandler的下载材质接口下载材质数据,(使用已知材质id("8ffe06f3c6bdb526d1bef84a09727ee1c93cfebf")验证。
pHandler->DownloadMaterial(id, pAdapter);下载结果通过回调类pAapter的对应函数返回,成功调用onMaterialLoadProgress,失败调用onMaterialLoadError.
成功下载材质后,在"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:应用材质
材质下载成功之后,调用对象pHandler获取材质属性的接口得到一个json字符串,接口:
GetMaterialProperties(id);解析json字符串,获取到所有纹理资源的resId,然后通过:
pHandler->GetMaterialResourcePath(resId);得到资源在本地缓存的全路径;
获得了Json(材质描述文件)和纹理资源文件后,产品根据需求和所依赖的引擎渲染方式,来应用材质数据。
3.结果展示案例
材质库在BIMDeco产品中的实际应用。注:BIMDeco产品同时集成了图形平台Falcon渲染器,材质库本身已经支持Falcon渲染器;因此BIMDeco可以把应用材质数据的场景无缝导入Falcon渲染器,实现更好的效果展示。
未使用材质的效果
使用材质库,应用材质数据
使用材质后的效果
场景导入Falcon渲染器的效果
