HarmonyOS 7(API 26)把 Spatial Recon Kit 带到开发者面前,核心是基于 3D Gaussian Splatting(3DGS)的端侧空间重建、渲染和编辑能力。开发者用多角度图像采集真实场景,即可在支持该 Kit 的 HarmonyOS 设备上生成并呈现 3DGS 模型。原文指出,这套能力瞄准传统 3D 建模依赖昂贵硬件、耗时长的痛点,面向旅游、教育、社交等场景提供低门槛、高交互性的空间计算方案。
一、3DGS 能力链路:从重建到滤镜
空间重建:输入多角度图像及相机内参,端侧 AI 自动完成位姿估计与关键帧筛选,快速生成 3DGS 模型。输出支持 PLY 点云和 MP4 运镜视频。
实时渲染:基于 Tiled 3DGS,支持千万级高斯点流畅渲染。通过 LOD 分层、瓦片按需加载、重要性剔除等优化,保证大场景实时交互。
空间编辑:提供显式高斯点编辑,支持主体提取(框选/反选/删除)、刚体变换、缩放、3D 包围盒估计,让重建结果可二次创作。
风格滤镜:内置复古、漫画、黑白、颜色编辑四类风格化滤镜,一键为 3D 渲染画面添加艺术效果。
二、典型落地场景
旅游:景区空间预览,游客出发前沉浸式预览景点、规划游览路线。
教育:立体知识模型,生物标本、地理地貌等三维可视化,学生可从任意角度观察。
文物保护:数字化存档,为古建筑、文物建立高精度数字孪生,用于远程展览、修复参考和学术研究。
社交:3D 空间分享,用户通过 Remy 等应用拍摄并分享 3D 空间照片。
终端交互:3DGS 空间影像壁纸,将重建模型设为锁屏/桌面壁纸,随设备倾斜产生视差。艺术家先创作视觉母版,经图生视频与 3DGS 重建,让静态艺术图变为随视角变化的空间壁纸。
三、关键 API 与调用路径
原文给出 C++ 侧重建接口和 ArkTS 侧渲染接口。
C++ 侧重重建:HMS_SpatialRecon_IsSupport 检查设备支持;HMS_SpatialRecon_CreateSession 创建会话;HMS_SpatialRecon_PushFrame / HMS_SpatialRecon_PushARFrame 输入图像数据帧;HMS_SpatialRecon_StartSession 启动重建;HMS_SpatialRecon_SaveResultToFile 保存结果。
ArkTS 侧渲染:spatialRender.GSPlugin.loadGSNode 加载 3DGS 模型节点;rf.createEffect 创建风格化滤镜效果。
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
- );
- });
- }
复制代码
四、适配与避坑要点
硬件要求:空间重建算力要求高,当前仅保证麒麟 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 仅支持中国境内(不含港澳台),暂不支持模拟器。
工具与验证:推荐 DevEco Studio;由于不支持模拟器,必须使用 AGC 远程真机调试或本地连接符合芯片要求的真机(麒麟 9020 及以上)。DFX 方面,通过 HMS_SpatialRecon_GetProgress 查询重建进度,在 UI 展示进度条;关注错误码 SPATIAL_RECON_STATUS_DEVICE_NOT_SUPPORT,在低端机型做好降级提示,如引导用户前往专业建模平台;同时监控热事件,保证长时间重建任务的体验稳定性。
五、小结
HarmonyOS 正在构建从“感知空间”到“理解空间”再到“创造空间”的技术栈:理解 → 重建 → 渲染 → 编辑 → 协同 → 分享。Spatial Recon Kit 把 3DGS 端侧重建、渲染、编辑和滤镜串成完整链路,开发者可以围绕旅游、教育、社交、终端壁纸等场景接入。完整 API 文档见:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/spatial-recon-introduction |