扫描采集、重建引擎与业务平台的分层结构示意
ORANGEZH / 交付案例

3D扫描建模开发

手机扫描端、C++ 重建引擎、Python 模型处理与 Java + Vue 业务平台串成一条链路,8 个仓库,覆盖 2024 至 2026 年。

约 7 分钟读完 5 条买家问答 关键事实可核验

项目概览

项目背景

这是一条 3D 扫描重建的技术链路,横跨 8 个代码仓库,最后提交时间从 2024 年 6 月到 2026 年 5 月。链路从手机扫描端开始:Swift 负责 iOS 扫描,C++ 负责重建引擎,Python 负责模型处理,Java 加 Vue 组成业务平台(其中业务后端有 494 个 Java 文件,仓库内另有 101 篇 md 文档),JavaScript 做 H5 侧。整体是「端侧采集、服务端重建」的分工。

客户当时的状态

三维重建这件事有两个绕不开的矛盾。第一是耗时和体积:重建得越精细,耗时越长、模型越大,下游越难用;粗糙一点快,但做不了展示。第二是分工:手机上算力有限,全部放端侧做不现实;全部放服务端,又要解决采集质量不可控的问题——拍得歪、漏拍、光照不对,传上去重建出来就是个残模型。这两件事不定清楚,链路做出来也不能稳定产出可用的模型。还有一层是交付口径:模型最终给谁用、用来做什么,如果一开始没问清楚,重建参数就没有依据,做完了也难说是对是错。

我们的做法与取舍

第一个取舍是把采集与重建切开,端侧只管拍好,算力集中在服务端。端侧采集门槛低、覆盖广,重建这类重计算放在可控的服务端环境里,便于迭代算法而不必等 App 发版。

第二个取舍是在重建之后加一道模型处理环节,而不是把引擎的输出直接丢给下游。贴图、减面、格式转换这些事单独做,下游拿到的才是能直接用的模型。

第三个取舍是接受「精度与体积要按用途取舍」这个前提,不做一套参数打天下。展示用途和后续加工用途对模型的要求不同,参数要能按场景调。

系统怎么承载这条链路

链路分三段:扫描端负责采集与初步校验,重建引擎负责从采集数据生成模型,业务平台负责模型管理、处理与分发,H5 侧提供轻量入口。平台这一层是多语言拼起来的——Java 承载业务,Vue 承载界面,C++ 与 Python 在重建与处理环节各自负责擅长的部分。

交付状态与边界

代码处于维护状态,最近一次提交在 2026 年 5 月,最早可追溯到 2024 年 6 月。边界说明:我们能控制的是软件链路的稳定性,控制不了用户拍摄姿势与环境光线,采集质量差会直接反映在重建结果上;重建效果依赖具体设备与场景,我们不做「任何条件下都能还原」的承诺;扫描设备本身如果是专用硬件,其选型与采购不在开发范围内。

项目信息

客户

某三维扫描重建项目

项目周期

未披露

技术栈

Swift(iOS 扫描端)/ C++(重建引擎)/ Python(模型处理)/ Java + Vue(业务平台)/ JavaScript(H5)

服务类型

3D 扫描重建与建模平台

CHALLENGES

客户当时面对的现实

01

重建精度与耗时、模型体积互相牵制,参数不能一套打天下

02

手机端采集质量受姿势、距离与光照影响,差数据重建出来就是残模型

03

端侧算力有限与重计算需求之间存在分工问题

04

引擎输出不能直接给下游用,中间还需要贴图、减面与格式转换

CAPABILITIES

我们交付的能力

重建这件事的矛盾在「耗时」和「体积」之间

端侧采集

Swift 实现的 iOS 扫描端负责采集与初步校验,把算力集中在服务端,算法迭代不必等 App 发版。

重建引擎

C++ 重建引擎从采集数据生成三维模型,作为链路中计算最重的一环独立演进。

模型处理

Python 负责贴图、模型优化与格式转换,让平台输出的是下游能直接使用的模型。

业务平台

Java 加 Vue 组成业务平台(后端 494 个 Java 文件,仓库内另有 101 篇 md 文档),承载模型管理与分发。

SCOPE

交付范围

以下范围按本项目实际交付内容与边界整理,不属于这次范围的部分一并列出。

已交付

  • iOS 扫描端(Swift)
  • 三维重建引擎(C++)
  • 模型处理环节(Python)
  • 业务平台(Java 后端 + Vue 前端)
  • H5 侧轻量入口(JavaScript)

不在本次范围

  • 扫描采集质量本身:姿势与光照由使用者环境决定,软件只能引导不能完全消除
  • 专用扫描硬件的选型与采购:如涉及专用设备,硬件侧不在开发范围内
  • 下游行业应用:平台负责产出可用模型,具体行业用途由贵方业务决定

ARCHITECTURE

分层技术架构

公开口径归纳为三层:采集层是 iOS 扫描端;重建与处理层由 C++ 引擎与 Python 处理组成;平台层用 Java 加 Vue 承载模型管理与分发。

FLOW 01

采集层

iOS 扫描端(Swift) 采集引导与初步校验

在端侧把数据采好,重计算不放在端上

FLOW 02

重建与处理层

C++ 重建引擎 Python 模型处理 贴图与格式转换

从采集数据生成下游可直接使用的模型

FLOW 03

平台层

Java 后端 Vue 前端 H5 入口(JavaScript) 模型管理与分发

承载业务与模型管理,提供多入口访问

DELIVERY

交付过程

分阶段推进,每个阶段都有可验收的产出,客户在早期就能看到实际效果。

阶段一

采集方式与用途确认

确定扫描端形态与模型的最终用途,框定精度与体积目标。

阶段二

扫描端与重建引擎

iOS 扫描端落地,C++ 重建引擎打通采集到模型的链路。

阶段三

模型处理与平台

Python 完成模型处理,业务平台承载模型管理与分发。

阶段四

多语言链路联调

端侧、引擎、处理与平台四段联调,H5 侧补充轻量入口。

FACTS

可核验的交付事实

以下内容来自本项目实际交付物;未经验证的指标不予展示。

8个仓库

覆盖扫描端、重建引擎、模型处理与业务平台

494个 Java 文件

业务平台后端规模

101篇文档

业务平台仓库内的 md 文档数

TRANSFER

这套做法适不适合你

案例的用处不是证明"我们做过",而是让你判断"在我们这种条件下能不能做成"。下面三句是我们对这一单的判断,写下来供你对照自己的情况。

适合什么情况

适合以手机或设备采集三维数据、需要重建并交付可用模型的项目。

什么情况下别照搬

若采集环境可控且模型用途单一,不必做多语言分工与多档参数;若要接入专用扫描硬件,需先确认硬件输出格式。

如果要试,第一步做什么

先确认采集方式与模型用途,再定重建链路的技术分工。

RELATED SERVICES

相关服务

从实际业务问题出发,查看对应服务的适用场景、交付物与不含项;具体范围仍需单独确认。

FAQ

常见问题

以下是同类项目沟通中出现频率最高的问题,答案就是我们实际的做法。

重建为什么不能全放在手机上做?
手机上算力有限,重计算放在端侧既慢又受机型限制。我们把采集与重建切开:端侧只管拍好,重建放在可控的服务端环境,算法迭代也不必等 App 发版。
模型精度能保证吗?
不能给这种承诺。精度由采集数据质量、场景与参数共同决定,我们能做的是把链路做稳、把参数做成可按用途调,扫描姿势与环境光线不在软件可控范围内。
为什么重建完还要加一道模型处理?
因为引擎输出不等于下游能用的模型。贴图、减面、格式转换这些事单独做,下游拿到的才是能直接用的东西。这一步不做,每次都要在下游临时处理。
这套平台用了哪些语言?
Swift 做 iOS 扫描端,C++ 做重建引擎,Python 做模型处理,Java 加 Vue 做业务平台,JavaScript 做 H5。不同环节用各自擅长的语言,不强行统一。
做扫描重建类项目第一步做什么?
先确认采集方式和目标用途。用手机还是专用设备、模型是用于展示还是后续加工,这两件事直接决定技术方案,定错了后面全部返工。

本页最后更新:2026年9月24日

下一步

聊聊你的扫描重建链路

从采集方式、重建算力分工到模型用途,一起确认第一期的技术边界。

商务联系人卢刚
商务联系人微信二维码 微信扫码加商务联系人,
发需求文档或截图都行。