乐趣区

关于android:如何给玩偶建模并让它跳个舞

大家小时候在玩玩具时必定都空想过这样的场景:设想着本人手上的玩具能动起来,就像《玩具总动员》里的玩具们一样有本人的性情,可能和本人一起游玩。以前我也始终认为玩具总动员只是童话,让玩具领有灵魂,可能动起来的想法只是空想。但现在 HMS Core 3D 建模服务让这一空想变成了事实。

原理解释

应用 HMS Core 3D 建模服务骨骼绑定能力就能让玩偶在手机屏幕上动起来,开发者只须要用一般手机拍摄二足人形物体的多张图像,建设动态的 3D 模型,通过云侧 AI 主动绑定算法后,主动生成模型的骨骼和蒙皮权重,通过业界支流引擎即可一键驱动。除了预置的动作还能退出本人动捕的个性化动作,让玩偶形象在屏幕上跟着节奏跳舞。

Demo 演示

主动骨骼绑定能力开发步骤

在开始开发工作之前,须要先配置 AppGallery Connect,同时请确保工程曾经集成 HMS Core SDK 并且曾经配置 Maven 仓地址。

  1. 应用云侧服务的能力,须要应用“agconnect-services.json”里的 api_key 值,在利用初始化时通过 api_key 或者 AccessToken 来设置利用鉴权信息,AccessToken 的优先级较高。

通过 setAccessToken 办法设置 AccessToken,在利用启动时初始化设置一次即可,无需屡次设置。

ReconstructApplication.getInstance().setAccessToken("your AccessToken");

获取 Access Token 可参见基于 OAuth 2.0 凋谢鉴权客户端模式。

通过 setApiKey 办法设置 api_key,在利用启动时初始化设置一次即可,无需屡次设置。

ReconstructApplication.getInstance().setApiKey("your api_key");

当在 AppGallery Connect 上注册利用时,会给您的利用调配 api_key。

  1. 新建 3D 物体建模引擎并初始化,新建主动骨骼绑定配置器。
// 新建 3D 物体建模引擎 
Modeling3dReconstructEngine modeling3dReconstructEngine = Modeling3dReconstructEngine.getInstance(context); 
// 新建骨骼绑定蒙皮配置器 
Modeling3dReconstructSetting setting = new Modeling3dReconstructSetting.Factory() 
    // 设置工作模式为图片模式 
    .setReconstructMode(Modeling3dReconstructConstants.ReconstructMode.PICTURE) 
    // 设置工作类型 
    .setTaskType(Modeling3dReconstructConstants.TaskType.AUTO_RIGGING) 
    .create();
  1. 新建上传监听器回调,用于解决拍摄的物体图片上传后果
private Modeling3dReconstructUploadListener uploadListener = new Modeling3dReconstructUploadListener() { 
    @Override 
    public void onUploadProgress(String taskId, double progress, Object ext) {// 上传进度} 
    @Override 
    public void onResult(String taskId, Modeling3dReconstructUploadResult result, Object ext) {// 上传胜利解决} 
    @Override 
    public void onError(String taskId, int errorCode, String message) {// 上传失败解决} 
};
  1. 应用 3D 物体建模配置器初始化工作,并且给新建的 3D 物体建模引擎设置上传监听器,上传采集的图片数据。
// 应用 3D 物体建模配置器初始化工作(该接口须要在子线程中调用)Modeling3dReconstructInitResult modeling3dReconstructInitResult = modeling3dReconstructEngine.initTask(setting); 
String taskId = modeling3dReconstructInitResult.getTaskId(); 
// 设置上传监听器 
modeling3dReconstructEngine.setReconstructUploadListener(uploadListener); 
// 调用 3D 建模引擎的上传接口,上传采集的图片数据 
modeling3dReconstructEngine.uploadFile(taskId, filePath);
  1. 查问主动骨骼绑定工作状态
// 查问 3D 物体建模工作状态须要初始化工作解决类 
Modeling3dReconstructTaskUtils modeling3dReconstructTaskUtils = Modeling3dReconstructTaskUtils.getInstance(context); 
// 调用查问接口获取 3D 物体建模工作状态(该接口须要在子线程中调用)Modeling3dReconstructQueryResult queryResult = modeling3dReconstructTaskUtils.queryTask(taskId); 
// 获取建模工作状态 
int status = queryResult.getStatus();
  1. 新建下载监听器回调,用于解决主动骨骼绑定模型文件的下载后果
private Modeling3dReconstructDownloadListener modeling3dReconstructDownloadListener = new Modeling3dReconstructDownloadListener() { 
    @Override 
    public void onDownloadProgress(String taskId, double progress, Object ext) {// 下载进度}     
    @Override 
    public void onResult(String taskId, Modeling3dReconstructDownloadResult result, Object ext) {// 下载胜利解决} 
    @Override 
    public void onError(String taskId, int errorCode, String message) {// 下载失败解决} 
};
  1. 新建的下载配置项并将新建的下载监听器传入新建的 3D 物体建模引擎,下载骨骼绑定胜利的模型文件
// 设置下载配置项 
Modeling3dReconstructDownloadConfig downloadConfig = new Modeling3dReconstructDownloadConfig.Factory() 
    // 配置 OBJ 或 glTF 格局 
    .setModelFormat(Modeling3dReconstructConstants.ModelFormat.OBJ) 
    // 配置一般或 PBR 模式 
    .setTextureMode(Modeling3dReconstructConstants.TextureMode.PBR) 
    .create(); 
// 设置下载监听器 
modeling3dReconstructEngine.setReconstructDownloadListener(modeling3dReconstructDownloadListener); 
// 调用 3D 物体建模引擎的下载接口,传入工作 ID,下载地址和下载配置项,下载模型文件 
modeling3dReconstructEngine.downloadModelWithConfig(taskId, fileSavePath, downloadConfig);

更多利用场景

应用骨骼绑定性能,除了能够实现让玩偶在手机屏幕上跳舞,还能够帮忙开发者做很多其余乏味又弱小的性能。如电商畛域,应用主动骨骼绑定能力能够驱动手办进行动静展现,从而减少产品的吸引力;在教育领域,能够将骨骼绑定和音频性能联合,让孩子手中的玩偶跳舞讲故事,寓教于乐;在游戏畛域,能够将骨骼绑定和 AR 性能联合,让 3D 模型走入实在场景中。

理解更多详情 >>

拜访华为开发者联盟官网
获取开发领导文档
华为挪动服务开源仓库地址:GitHub、Gitee

关注咱们,第一工夫理解 HMS Core 最新技术资讯~

退出移动版