当前位置: 首页 > 后端技术 > Java

商品3D展示来袭,HMSCore3D建模服务助力电商发展

时间:2023-04-01 16:25:32 Java

传统电商商品展示采用图文结合,文案介绍商品相关参数,搭配精美图片吸引顾客眼球。但由于产品图文展示存在色差、尺寸差异等原因,消费者可能会对图片与实物不符产生疑虑,消费者需要花费大量精力阅读比较后才能做出购买决定.随着互联网电子商务平台的不断完善,短视频逐渐成为主流的商品展示形式。通过拍摄短视频的形式,对产品进行多方位展示,让消费者在短时间内了解产品的参数和优势,大大提高了消费者的购物速度。但短视频陈列的缺点是陈列时间短,难以与消费者产生互动。3D技术的发展赋予了电商行业最新的产品展示方式。3D模型可以在360°全方位展示产品细节,让消费者更直观地了解产品,增强对产品的信心。消费者还可以通过屏幕与商品进行互动,单指拖动即可在360度查看商品,并可自由放大查看高清细节,从而提高下单概率。然而,目前效果较好的3D建模技术,由于成本高,被开发者望而却步。1、技术门槛高:专业人员加深度相机等专业设备。2.时间成本高:专业人员手动完成模型的渲染和调整。要完成一个简单对象的低精度模型,工作量会在数小时内开始,而高精度模型则需要更长的时间。3、成本高:单件商品专业建模成本高,均价上千元,复杂模型更贵。HMSCore的3D建模服务,方便建模。用户只需使用普通的RGB相机,通过拍摄物体不同角度的图像,自动生成物体的3D几何模型和纹理。比如在电商的实物展示场景中,你可以利用这个能力自动生成你想要展示的商品模型,用于3D展示。用户可以随意放大或缩小商品,查看商品详情,为用户提供差异化??的购买体验。3D对象建模能力由端云协同完成。end-side负责采集RGB图像,并在物体周围拍摄多张图像,得到物体不同角度的图像。拍摄完成后上传云端,实现3D物体建模。云建模的过程和关键技术包括目标检测与分割、特征检测与匹配、稀疏点云计算、密集点云计算、纹理重建等模块。效果展示以面包为例。您只需在面包周围拍摄多张图像,即可获得逼真的面包3D模型。这个功能是如何实现的呢?下面是详细的开发步骤。开发前准备配置集成SDK包。在应用的build.gradle文件中,将3D建模服务的SDK依赖添加到dependencies//3DModelingKitSDKImplementation'com.huawei.hms:modeling3d-object-reconstruct:1.0.0.300'ConfigureAndroidManifest.xml打开主文件夹中的AndroidManifest.xml文件。您可以根据场景和使用需要配置读写手机存储和摄像头的权限。在之前添加开发步骤中使用云端服务的能力需要使用"中的api_key值agconnect-services.json”,在应用初始化时通过api_key或AccessToken设置App认证信息,AccessToken优先级高。这两种方式都可以在应用启动的时候初始化一次,不需要多次设置。(1)通过setAccessToken方法设置AccessToken。ReconstructApplication.getInstance().setAccessToken("你的AccessToken");(2)通过setApiKey方法设置api_key。当您在AppGalleryConnect上注册应用时,会为您的应用分配一个api_key。ReconstructApplication.getInstance().setApiKey("你的api_key");创建一个新的3D对象建模引擎并初始化它,并创建一个新的3D对象建模配置器。//创建一个新的3D对象建模引擎。Modeling3dReconstructEnginemodeling3dReconstructEngine=Modeling3dReconstructEngine.getInstance(context);//创建一个新的3D对象建模配置器。Modeling3dReconstructSettingsetting=newModeling3dReconstructSetting.Factory()//设置工作模式为图片模式。.setReconstructMode(Modeling3dReconstructConstants.ReconstructMode.PICTURE)//设置纹理模式为普通模式或PBR模式。.setTextureMode(Modeling3dReconstructConstants.TextureMode.PBR).create();新建一个上传监听回调,用于处理抓拍对象图片的上传结果。privateModeling3dReconstructUploadListeneruploadListener=newModeling3dReconstructUploadListener(){@OverridepublicvoidonUploadProgress(StringtaskId,doubleprogress,Objectext){//上传进度。}@OverridepublicvoidonResult(StringtaskId,Modeling3dReconstructUploadResultresult,Objectext){//上传成功处理。}@OverridepublicvoidonError(StringtaskId,interrorCode,Stringmessage){//处理上传失败。}};使用3D对象建模配置器初始化任务,为新建的3D对象建模引擎设置上传监听器,上传采集到的图像数据。//使用3D对象建模配置器初始化任务(该接口需要在子线程中调用)。Modeling3dReconstructInitResultmodeling3dReconstructInitResult=modeling3dReconstructEngine.initTask(setting);StringtaskId=modeling3dReconstructInitResult.getTaskId();//设置上传监听。modeling3dReconstructEngine.setReconstructUploadListener(uploadListener);//调用3D建模引擎的上传接口上传采集到的图像数据。modeling3dReconstructEngine.uploadFile(taskId,filePath);查询3D对象建模任务的状态。//查询3D物体建模任务状态需要初始化任务处理类。Modeling3dReconstructTaskUtilsmodeling3dReconstructTaskUtils=Modeling3dReconstructTaskUtils.getInstance(context);//调用查询接口获取3D物体建模任务状态(该接口需要在子线程中调用)。Modeling3dReconstructQueryResultqueryResult=modeling3dReconstructTaskUtils.queryTask(taskId);//获取建模任务状态。intstatus=queryResult.getStatus();创建监听回调,调用预览函数,预览3D模型Modeling3dReconstructPreviewListenerpreviewListener=newModeling3dReconstructPreviewListener(){@OverridepublicvoidonResult(StringtaskId,Objectext){//3D物体建模预览结果。}@OverridepublicvoidonError(StringtaskId,interrorCode,Stringmessage){//预览错误回调函数。}};//预览模型配置。Modeling3dReconstructPreviewConfigconfig=newModeling3dReconstructPreviewConfig.Factory().setTextureMode(Modeling3dReconstructConstants.TextureMode.PBR).create();//预览模型。modeling3dReconstructEngine.previewModelWithConfig(taskId,context,config,previewListener);新建一个下载监听回调,用于处理3D对象建模模型文件的下载结果。privateModeling3dReconstructDownloadListenermodeling3dReconstructDownloadListener=newModeling3dReconstructDownloadListener(){@OverridepublicvoidonDownloadProgress(StringtaskId,doubleprogress,Objectext){//下载进度。}@OverridepublicvoidonResult(StringtaskId,Modeling3dReconstructDownloadResultresult,Objectext){//下载成功。}@OverridepublicvoidonError(StringtaskId,interrorCode,Stringmessage){//处理下载失败。}};新建一个下载配置项,将新的下载监听器传递给新的3D对象建模引擎,下载重建成功的模型文件。//设置下载配置项。Modeling3dReconstructDownloadConfigdownloadConfig=newModeling3dReconstructDownloadConfig.Factory()//配置OBJ或glTF格式。.setModelFormat(Modeling3dReconstructConstants.ModelFormat.OBJ)//配置正常或PBR模式。.setTextureMode(Modeling3dReconstructConstants.TextureMode.PBR).create();//设置下载监听器。modeling3dReconstructEngine.setReconstructDownloadListener(modeling3dReconstructDownloadListener);//调用3D物体建模引擎的下载接口,传入任务id、下载地址和下载配置项,下载模型文件。modeling3dReconstructEngine.downloadModelWithConfig(taskId,savePath,downloadConfig);完成以上步骤后,你就可以在电商应用中实现3D建模能力,你可以用手机快速创建产品的3D模型。有兴趣的开发者可以马上试用!除了产品3D建模和展示,HMSCore电商解决方案还提供AR交互购物能力,可以实现产品试穿功能,为消费者打造虚拟与现实融合的购物体验。相关内容将在下一期详述。敬请期待解说。更多详情>>访问华为开发者联盟官网获取开发指导文档华为移动服务开源仓库地址:GitHub、Gitee关注我们,第一时间了解HMSCore最新技术资讯~