本原创文章帖发布在华为开发者联盟社区,欢迎开发者前往访问评论交流,更多与该内容相关讨论,请点击原帖查看:

HarmonyOS 7(API 26)新特性解读 _ Spatial Recon Kit 3DGS端侧重建:手机拍摄即建模,分钟级生成高精3D场景

Spatial Recon Kit 基于 3D Gaussian Splatting(3DGS)提供端侧空间重建、渲染和编辑能力。开发者可通过多角度图像采集真实场景,并在支持 Spatial Recon Kit 的 HarmonyOS 设备上完成 3DGS 模型重建与呈现。该特性解决了传统3D建模依赖昂贵硬件、耗时长的痛点,为旅游、教育、社交等领域提供了低门槛、高交互性的空间计算解决方案。

特性描述

Spatial Recon Kit 围绕3DGS构建了从数据输入到最终呈现的完整链路:

  • 空间重建:支持输入多角度图像及相机内参,利用端侧AI自动进行位姿估计与关键帧筛选,快速生成3DGS模型。输出格式支持 PLY 点云及 MP4 运镜视频。

  • 实时渲染:基于 Tiled 3DGS 技术,支持千万级高斯点的流畅渲染。通过 LOD 分层、瓦片按需加载及重要性剔除等优化手段,确保大场景下的实时交互体验。

  • 空间编辑:提供显式高斯点的编辑能力,支持主体提取(框选/反选/删除)、刚体变换、缩放及3D包围盒估计,使重建结果具备可二次创作性。

  • 风格滤镜:内置复古、漫画、黑白、颜色编辑等四类风格化滤镜,可一键为3D渲染画面赋予艺术效果。

典型应用场景

  • 旅游——景区空间预览:游客出发前沉浸式预览景点,规划游览路线。3DGS将景区还原为可漫游的空间模型,足不出户即可"走进"目的地。

  • 教育——立体知识模型:生物标本、地理地貌等三维可视化,让知识可触摸。学生可从任意角度观察立体模型,比平面图片获得更直观的空间认知。

  • 文物保护——数字化存档:为古建筑、文物建立高精度数字孪生,永久保存。3DGS重建的高精度模型可用于远程展览、修复参考和学术研究。

  • 社交——3D空间分享:将真实空间重建为3D模型分享给好友,开启空间社交新范式。用户可通过Remy等应用拍摄并分享3D空间照片,让社交内容从二维走向三维。

  • 终端交互——3DGS空间影像壁纸:将3DGS重建的空间模型设置为锁屏/桌面壁纸,随设备倾斜产生视差效果,让静止画面呈现空间深度感,打造沉浸式视觉体验。艺术家先创作视觉母版,经图生视频与3DGS重建,让静态艺术图变为能随视角变化的空间壁纸——艺术定风格,技术赋空间,融合更出彩。

对比传统3D建模方案

维度

传统3D建模

HarmonyOS 3DGS

数据采集

激光雷达/结构光/专业相机

普通手机拍摄

建模方式

人工建模/扫描仪点云

AI自动重建

耗时

数小时到数周

分钟级

渲染方式

光栅化/光线追踪

Gaussian Splatting

可编辑性

高(人工构建)

高(显式高斯点,支持空间编辑)

设备门槛

高

低(端侧运行)

技术实现指南

关键 API/接口

  •  C++ 侧(重建):

  1. HMS_SpatialRecon_IsSupport: 检查设备支持情况。

  2. HMS_SpatialRecon_CreateSession: 创建重建会话。

  3. HMS_SpatialRecon_PushFrame / HMS_SpatialRecon_PushARFrame: 输入图像数据帧。

  4. HMS_SpatialRecon_StartSession: 启动重建任务。

  5. HMS_SpatialRecon_SaveResultToFile: 保存重建结果。

  • ArkTS 侧(渲染):

  1. spatialRender.GSPlugin.loadGSNode: 加载3DGS模型节点。

  2. rf.createEffect: 创建风格化滤镜效果。

适配指导/注意事项

  • 硬件要求:空间重建对算力要求较高,当前仅保证在麒麟 9020/9030S/9030/9030 Pro 及后续旗舰芯片上的体验。开发前务必调用 HMS_SpatialRecon_IsSupport 进行检查。

  • 数据输入规范:图像尺寸严格限制为 1080px × 1440px,其他尺寸结果未定义。图像格式为 RGB。需提供相机内参(focalX, focalY, principalX, principalY)及7维位姿(四元数+平移)。

  • 性能与热管理:建议订阅 COMMON_EVENT_THERMAL_LEVEL_CHANGED 公共事件,设备过热时自动调用 HMS_SpatialRecon_PauseSession 暂停重建,避免卡顿或损坏硬件。根据应用前后台状态调用 HMS_SpatialRecon_SetRunningMode,帮助系统合理分配资源。

  • 会话互斥:同一时刻仅支持一个 Session 进行重建或保存 MP4,禁止并发操作。

  • 地域限制:Spatial Recon Kit 仅支持中国境内(不含港澳台),暂不支持模拟器。

代码示例

  • C++:创建会话并启动重建

#include "spatial/spatial_recon_interface.h"

// 1. 检查支持情况
HMS_SpatialReconStatus ret = HMS_SpatialRecon_IsSupport(SPATIAL_RECON_MODEL_TYPE_GS);
if (ret != SPATIAL_RECON_STATUS_SUCCESS) {
    // 处理不支持的情况
    return;
}

// 2. 创建会话
HMS_SpatialRecon_Session* session = nullptr;
const char* workPath = "/data/storage/el1/base/spatial_recon_files/";
ret = HMS_SpatialRecon_CreateSession(SPATIAL_RECON_MODEL_TYPE_GS, workPath, &session);

// 3. 输入数据帧(示例:自定义数据帧)
HMS_SpatialRecon_DataFrame frame;
frame.imageWidth = 1080;
frame.imageHeight = 1440;
frame.format = SPATIAL_RECON_IMAGEDATA_FORMAT_RGB;
// ... 填充 frame.focalX, frame.imageData 等 ...
HMS_SpatialRecon_PushFrame(session, &frame);

// 4. 注册回调并启动
auto onFinished = (HMS_SpatialReconStatus status, void* data) {
// 重建完成处理
// ... 组装对应的保存时需要的配置,开发者可以根据需要保存为PLY(点云)或运镜视频文件(MP4)。
  HMS_SpatialRecon_ModelWriteInfo info = {};
    info.modelFormat = SPATIAL_RECON_OUTPUT_FORMAT_MP4;
    // 保存重建结果到文件
    HMS_SpatialReconStatus ret = HMS_SpatialRecon_SaveResultToFile(session, &info, NULL);
};
HMS_SpatialRecon_RegisterNGCallbackFunc(session, onFinished, nullptr);
HMS_SpatialRecon_StartSession(session, nullptr);

// 5. 销毁会话
HMS_SpatialRecon_DestroySession(session);
  • ArkTS:加载并渲染3DGS模型
import { spatialRender } from '@kit.SpatialReconKit';
import { Scene, RenderContext } from '@kit.ArkGraphics3D';

let renderContext: RenderContext | null = Scene.getDefaultRenderContext();
if (renderContext != null) {
    renderContext.loadPlugin(spatialRender.GSPlugin.PLUGIN_ID);
    Scene.load().then(async (scene: Scene) => {
        let uri = "OhosRawFile://assets/gltf/model.glb";
        let gsNode: spatialRender.GSNode = await spatialRender.GSPlugin.loadGSNode(scene, { uri, offset: 0 }, scene.root);
    });
}

工具与验证

开发工具:推荐使用 DevEco Studio 进行开发。由于 Spatial Recon Kit 暂不支持模拟器,必须使用 AGC 远程真机调试 或本地连接符合芯片要求的真机(麒麟9020及以上)进行调试。

DFX 设计:通过 HMS_SpatialRecon_GetProgress 查询重建进度,以便在 UI 层展示进度条。关注错误码 SPATIAL_RECON_STATUS_DEVICE_NOT_SUPPORT,在低端机型上做好降级提示(如引导用户前往专业建模平台)。监控热事件,确保长时间重建任务下的用户体验稳定性。

HarmonyOS 正在构建一个从"感知空间"到"理解空间"再到"创造空间"的完整技术栈: 理解 → 重建 → 渲染 → 编辑 → 协同 → 分享 每一步,都有开放的能力等待开发者接入。

我们诚邀你加入 HarmonyOS 空间计算生态:

  • 用 3DGS 为你的应用注入空间感知能力

  • 用空间编辑为用户打开二次创作的想象空间

  • 用多端协同让空间体验在设备间自由流转

接入指南与完整API文档:文档中心

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐