大家小时候在玩玩具的时候一定都幻想过这样的场景:想象自己手里的玩具会动,就像《玩具总动员》里的玩具都有自己的个性,可以自己玩.以前一直以为《玩具总动员》只是童话故事,给玩具赋予灵魂、会动的想法只是天方夜谭。但现在HMSCore3D建模服务让这个幻想变成了现实。原理解释利用HMSCore3D建模服务的骨骼绑定能力,可以让人偶在手机屏幕上动起来。AI算法自动绑定后,自动生成模型的骨骼和蒙皮权重,可通过业界主流引擎一键驱动。除了预设动作,你还可以添加自己的个性化动作捕捉动作,让人偶形象随着屏幕上的节奏翩翩起舞。Demo演示了自动绑定骨骼能力的开发步骤。在开始开发工作之前,您需要配置AppGalleryConnect。同时请确保项目已经集成了HMSCoreSDK,并配置了Maven仓库地址。使用云端服务需要使用“agconnect-services.json”中的api_key值,并在应用初始化时通过api_key或AccessToken设置应用认证信息。AccessToken具有更高的优先级。通过setAccessToken方法设置AccessToken,在应用启动时初始化一次,无需多次设置。ReconstructApplication.getInstance().setAccessToken("你的AccessToken");AccessToken的获取请参考基于OAuth2.0的开放认证客户端方式。通过setApiKey方法设置api_key,应用启动时初始化一次,无需多次设置。ReconstructApplication.getInstance().setApiKey("你的api_key");在AppGalleryConnect上注册应用程序时,将为您的应用程序分配一个api_key。创建一个新的3D对象建模引擎并初始化它,并创建一个新的自动骨骼绑定配置器。//创建一个新的3D对象建模引擎Modeling3dReconstructEnginemodeling3dReconstructEngine=Modeling3dReconstructEngine.getInstance(context);//创建一个新的骨骼绑定皮肤配置设备Modeling3dReconstructSettingsetting=newModeling3dReconstructSetting.Factory()//设置工作模式为图像模式.setReconstructMode(Modeling3dConstReconstructReconstructMode.PICTURE)//设置任务类型.setTaskType(Modeling3dReconstructConstants.TaskType.AUTO_RIGGING)。创造();新建一个上传监听回调,用于处理抓拍图片的上传结果。privateModeling3dReconstructUploadListeneruploadListener=newModeling3dReconstructUploadListener(){@OverridepublicvoidonUploadProgress(StringtaskId,doubleprogress,Objectext){//上传进度}@OverridepublicvoidonResult(StringtaskId,Modeling3dReconstructUploadResultresult,Objectext){//上传成功processed}@OverridepublicvoidonError(StringtaskId,interrorCode,Stringmessage){//上传失败处理}};使用3D对象建模配置器初始化任务,为新建的3D对象建模引擎设置上传监听器,上传采集到的图像数据。//使用3D对象建模配置器初始化任务(该接口需要在子线程中调用)Modeling3dReconstructInitResultmodeling3dReconstructInitResult=modeling3dReconstructEngine.initTask(setting);StringtaskId=modeling3dReconstructInitResult.getTaskId();//设置上传监听器modeling3dReconstructEngine.setReconstructEngine.setRestructuploadListener);//调用3D建模引擎的上传接口上传采集到的图像数据modeling3dReconstructEngine.uploadFile(taskId,filePath);查询自动绑定骨骼任务状态//查询3D物体建模任务状态,需要初始化任务处理类Modeling3dReconstructTaskUtilsmodeling3dReconstructTaskUtils=Modeling3dReconstructTaskUtils.getInstance(context);//调用查询接口获取3D物体建模任务状态(该接口需要在子线程中调用)Modeling3dReconstructQueryResultqueryResult=modeling3dReconstructTaskUtils.queryTask(taskId);//获取建模任务的状态intstatus=queryResult.getStatus();新建一个下载监听回调,用于处理自动骨架绑定模型文件的下载结果ctext){//下载进度}@OverridepublicvoidonResult(StringtaskId,Modeling3dReconstructDownloadResultresult,Objectext){//下载成功处理}@OverridepublicvoidonError(StringtaskId,interrorCode,Stringmessage){//下载失败处理}};新建下载配置项,将新的下载监听器传给新建的3D对象建模引擎,下载骨骼绑定成功的模型文件//设置下载配置项Modeling3dReconstructDownloadConfigdownloadConfig=newModeling3dReconstructDownloadConfig.Factory()//配置OBJ或者glTFformat.setModelFormat(Modeling3dReconstructConstants.ModelFormat.OBJ)//配置普通或PBR模式.setTextureMode(Modeling3dReconstructConstants.TextureMode.PBR).create();//设置下载监听器modeling3dReconstructEngine.setReconstructDownloadListener(modeling3dReconstructDownloadListener(modeling3dReconstruct);DownloadListener//调用3D物体建模引擎的下载接口,传入任务ID、下载地址和下载配置项,下载模型文件modeling3dReconstructEngine.downloadModelWithConfig(taskId,fileSavePath,downloadConfig);更多的应用场景使用骨骼绑定功能,除了可以实现让人偶在手机屏幕上跳舞,还可以帮助开发者做很多其他有趣且强大的功能例如在电子商务领域,利用自动骨骼绑定能力可以驱动图形进行动态展示,从而增加产品的吸引力;教学很有趣;在游戏领域,可以结合骨骼绑定和AR功能,让3D模型进入真实场景。更多详情>>访问华为开发者联盟官网获取开发指导文档华为移动服务开源仓库地址:GitHub、Gitee关注我们,第一时间了解HMSCore最新技术资讯~
