Unity 3D 在工业 AI 视觉检测与 MES 系统中的应用架构
面向汽车座椅等复杂产品的AI质量检测需求,提出Unity 3D + AI视觉 + 后端API + MES的完整架构:3D模型展示缺陷位置、旋转缩放交互、WebSocket实时联动、AI坐标映射与模型轻量化,打造从检测到追溯的3D智能质量检测工作站。
Unity 3D 在工业 AI 视觉检测与 MES 系统中的应用架构
一、项目背景
随着工业视觉、人工智能和数字孪生技术的发展,传统的二维检测软件已经逐渐无法满足复杂产品的检测需求。尤其是汽车座椅、内饰件、家电、家具等产品,除了需要显示 AI 检测结果,还需要让操作人员能够从不同角度查看产品、定位缺陷、人工确认和修正检测结果。
例如座椅检测系统中,系统可以通过多个工业相机采集座椅图像,AI 识别出 Backrest 01、Cushion 02 等缺陷,然后在 3D 座椅模型上显示对应的位置,同时允许操作人员旋转、缩放和查看产品。
这种系统非常适合采用 Unity 3D + AI视觉 + 后端API + MES 构建。
二、Unity 3D 在工业系统中的定位
Unity 本身并不是一个 MES,也不是一个 AI 视觉软件,它更适合作为工业 3D 交互与数字孪生前端。
整体架构可以设计为:
工业相机 → 图像采集系统 → OpenCV / YOLO / AI → AI检测结果 → JSON / API
↓
┌────────────────────┐
│ 后端服务 │
│ FastAPI / Node.js │
└─────────┬──────────┘
┌───┴───┐
▼ ▼
MES/ERP Unity 3D
│ 3D产品模型
▼
操作人员
Unity 主要负责:
- 3D 模型显示
- 产品旋转、缩放
- 缺陷点显示、缺陷区域高亮
- 3D 点击、人工复判
- 操作按钮、检测结果可视化
- 数字孪生
而 AI、MES 和设备控制则由其他系统负责。
三、为什么工业检测系统适合 Unity
以汽车座椅检测为例。传统软件可能只是显示:
AI检测结果
Backrest 01 NG
Backrest 02 OK
Cushion 01 OK
Cushion 02 NG
但是操作人员看到这个结果后,还需要知道:NG 到底发生在座椅什么位置?
如果采用 3D 模型,则可以直接在座椅 3D 模型上显示缺陷点:
座椅3D模型
├── Backrest 01 → 🔴 缺陷点
└── Cushion 02 → 🔴 缺陷点
操作人员还可以:
- 鼠标拖动旋转
- 滚轮缩放
- 点击缺陷、查看缺陷位置
- 切换正面/背面/侧面
- 隐藏/显示检测点
这就是 Unity 比较擅长的场景。
四、Unity 需要接入哪些软件
Unity 通常不是单独工作的,而是作为系统中的一个前端模块。
1. AI视觉系统
可以采用 YOLO、OpenCV、PyTorch、ONNX Runtime、TensorRT、OpenVINO,例如:
工业相机 → 图像 → YOLO → 缺陷识别 → JSON
最终输出:
{
"product": "E02",
"serial": "402019762AA",
"result": "NG",
"defects": [
{ "name": "Backrest 01", "type": "scratch", "confidence": 0.96 },
{ "name": "Cushion 02", "type": "stain", "confidence": 0.91 }
]
}
Unity 接收到数据后,负责把这些缺陷显示在 3D 模型上。
五、Unity 与后端如何通信
工业项目中不建议让 Unity 直接连接数据库,推荐:
Unity ← HTTP / WebSocket → API Server → MES / MySQL / Redis / AI / 设备系统
后端可以采用 FastAPI、ASP.NET Core、Node.js、NestJS。如果你的整个 MES 已经采用 ERPNext/Frappe,也可以通过 REST API 与 MES 通信。
六、HTTP 方式
最简单的是 HTTP REST API。例如 Unity 请求:
GET /api/inspection/E02/402019762AA
服务器返回:
{
"product": "E02",
"result": "NG",
"defects": [
{ "name": "Backrest 01", "position": [0.12, 1.32, 0.28], "severity": "high" },
{ "name": "Cushion 02", "position": [-0.22, 0.65, 0.42], "severity": "medium" }
]
}
Unity 解析 JSON 后:
API → JSON → C# → DefectManager → 3D Marker → 座椅模型
七、实时检测建议采用 WebSocket
如果 AI 检测是连续运行的,例如:产品进入检测工位 → 相机拍照 → AI 检测 → 结果出来 → Unity 立即显示,此时可以采用:
AI → WebSocket → Unity
例如:
{
"event": "inspection_finished",
"sn": "402019762AA",
"result": "NG"
}
Unity 收到消息后立即刷新界面,比不断轮询 API 更加适合实时检测。
八、3D 模型从哪里来
Unity 本身并不是主要的 CAD 建模软件,工业项目一般采用:
SolidWorks → 3D模型 → FBX / OBJ / glTF → Unity
也可以使用 Blender、3ds Max、Fusion、Creo、CATIA。工业项目中可以使用 SolidWorks 完成机械结构设计,再将模型进行轻量化后导入 Unity。
九、为什么模型需要轻量化
这是工业 3D 项目非常重要的一点。SolidWorks 模型可能有几百万到几千万三角面,如果直接导入 Unity,会导致 CPU/GPU/内存占用上升、加载时间变长,甚至操作卡顿。
所以应该进行:
CAD模型 → 模型简化 → 删除内部不可见结构 → 降低Polygon → 材质合并 → LOD → Unity
对于座椅这种产品,最终模型主要需要:靠背、坐垫、扶手、头枕、骨架外观、缝线、缺陷区域,不需要把每一个内部螺丝都完整显示出来。
十、3D 模型中如何对应 AI 检测区域
这是整个系统最关键的技术之一。例如 AI 检测得到 Backrest 01、Cushion 02、Shoulder 03,Unity 里面可以建立对应的 3D 节点:
Seat
├── Headrest
├── Backrest
│ ├── Backrest01
│ ├── Backrest02
│ └── Backrest03
├── Cushion
│ ├── Cushion01
│ └── Cushion02
└── Shoulder
├── Shoulder01
├── Shoulder02
└── Shoulder03
这样 AI 结果 Backrest01 = NG,Unity 就可以直接找到 Seat/Backrest/Backrest01,然后改变材质或者显示缺陷标记。
十一、3D 缺陷标记
最简单的方法是在缺陷位置放一个 3D Marker,Unity C# 可以通过:
Instantiate(defectMarker, defectPosition, Quaternion.identity);
创建缺陷标记。Marker 可以设计成:红色圆点、红色闪烁点、箭头、圆圈、3D 图标、缺陷编号、气泡提示。
例如:
┌──────────────┐
│ Backrest 01 │
│ Scratch │
│ Confidence 95%│
└──────┬───────┘
↓
🔴
十二、3D 按钮怎么实现
Unity 中的按钮和 Qt 有一个明显区别:Unity 可以直接使用 Canvas + Button,按钮不一定是真正的 3D 物体,一般采用 3D 场景 + Canvas UI 组合。
Canvas
├── Save
├── Submit
├── AI Detection
│ ├── Backrest 01 / 02
│ └── Cushion 01 / 02
└── Correction
├── Shoulder 03
└── Backrest 01
十三、你截图中的界面如何用 Unity 实现
界面可以拆成:
┌──────────────────────────────────────────┐
│ E02 402019762AA │
├───────────────────────────┬──────────────┤
│ │ AI DETECTION │
│ 3D SEAT │ Backrest 01 │
│ 🔴 缺陷点 │ Backrest 02 │
│ │ Backrest 03 │
│ │ Cushion 01 │
│ │ Cushion 02 │
│ │ CORRECTION │
├───────────────────────────┴──────────────┤
│ SAVE SUBMIT │
└──────────────────────────────────────────┘
Unity 里面可以对应:Canvas(Header / MainPanel+3DView+Camera+Seat Model / AIDetectionPanel / CorrectionPanel / BottomPanel)。
十四、自由旋转座椅
Unity 非常适合实现"Freely rotate the seat to inspect"这种交互。基本逻辑:鼠标左键拖动 → 获取 Mouse Delta → 改变 3D 模型 Rotation → 重新渲染。
transform.Rotate(Vector3.up, mouseDelta.x * sensitivity, Space.World);
同时可以加入:鼠标滚轮 Zoom、左键拖动 Rotate、右键拖动 Pan,最终形成完整的 3D 检视交互。
十五、点击缺陷列表后自动旋转到对应位置
这是这个系统非常有价值的功能。例如点击 Backrest 03,Unity 可以:
Backrest 03 → 获取3D坐标 → Camera移动 → Camera LookAt → 放大 → 缺陷高亮
最终实现:点击右侧"Backrest 03",3D 模型自动转到缺陷位置,比单纯显示检测结果更加直观。
十六、AI 检测与 3D 坐标映射
如果 AI 只输出 x = 325、y = 218,还不能直接得到 3D 位置,需要建立:2D 图像坐标 → 产品坐标 → 3D 模型坐标。常见方案有三种:
方法一:固定区域映射
例如 Backrest 01 → Backrest01 节点,适合产品结构固定的项目。
方法二:UV 映射
将检测图像坐标映射到 3D 模型 UV:AI 2D坐标 → UV → 3D Surface,适合表面缺陷。
方法三:相机标定 + 三维坐标
通过相机标定 + 产品坐标系 + 3D 模型坐标系计算:Camera Coordinate → Product Coordinate → Unity World Coordinate,精度要求高时建议采用这种方式。
十七、Unity 与 MES 的关系
需要特别注意:不要让 Unity 承担 MES 全部功能。
MES
├── 数据库
└── API
↓
┌──────────────┐
│ Unity 3D客户端│
└──────────────┘
MES 负责:工单、产品、SN、检测记录、人员、权限、生产数据、质量数据、追溯。Unity 负责:3D、可视化、交互、缺陷显示、数字孪生。这样系统职责非常清晰。
十八、如果结合 ERPNext
如果你的 MES 已经建立在 ERPNext 上,可以设计:
ERPNext / MES ← REST API / WebSocket → Unity Client
├── 3D模型
├── AI结果
└── 产品信息
↓
检测界面
例如扫描产品二维码:SN:402019762AA → MES 查询 → 产品型号/生产订单/历史检测/AI检测结果 → Unity 加载对应 3D 模型 → 显示缺陷。这样就形成了完整的 AI视觉质量检测 + MES + 3D数字孪生 系统。
十九、Unity 和 Qt 到底怎么选择
如果目标就是你截图中的这种产品检测软件,可以这样判断:
| 项目 | Unity | Qt Quick 3D |
|---|---|---|
| 3D效果 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 3D交互 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 游戏级动画 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| 工业UI | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| C#开发 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| C++开发 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| MES软件 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| AI集成 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| CAD模型展示 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 数字孪生 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 快速制作3D效果 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
二十、针对你的项目,我更推荐的架构
如果目标是开发你图片中的座椅 AI 检测 3D 仿真系统,推荐架构:
工业相机 → OpenCV/AI (YOLO/OpenVINO) → AI检测结果
↓
FastAPI/.NET Inspection API
↓
┌───────────────────┴───────────────────┐
↓ ↓
ERPNext/MES Unity 3D
工单/产品/SN/检测记录/追溯 3D模型/缺陷点/高亮/旋转/缩放/UI
推荐技术栈
- 3D:Unity 6 + C#
- 模型:SolidWorks → Blender/模型轻量化 → FBX/glTF → Unity
- AI:YOLO + OpenVINO / TensorRT
- 图像:OpenCV
- 后端:ASP.NET Core 或 FastAPI
- 数据:ERPNext + MariaDB / PostgreSQL
- 实时通信:WebSocket
- 设备通信:MQTT / OPC UA / Modbus TCP / EtherCAT
二十一、最终形成完整的工业 3D 检测平台
最终产品可以不是单纯的"3D 模拟器",而是一个完整的 AI + 3D + MES 智能质量检测平台,操作流程:
① 产品进入检测工位 → ② 工业相机自动采集 → ③ AI自动检测
→ ④ 输出检测项目 → ⑤ Unity加载产品3D模型 → ⑥ NG位置自动标红
→ ⑦ 操作员旋转/缩放模型 → ⑧ 点击缺陷项目 → ⑨ 3D模型自动定位
→ ⑩ 人工确认/修正 → ⑪ SAVE → ⑫ SUBMIT → ⑬ MES记录检测结果
→ ⑭ 产品SN完成质量追溯
这样做出来的系统,就已经从传统的"AI 检测软件"升级成了"3D 智能质量检测工作站"。
应用价值
- 直观可视:3D 模型直接展示缺陷位置,替代二维列表,操作人员秒级定位 NG 部位
- 交互高效:旋转/缩放/点击定位/自动视角切换,人工复判效率大幅提升
- 架构清晰:Unity 只做前端可视化,AI/MES/数据各司其职,系统易维护、易扩展
- 实时联动:WebSocket 推送检测结果,Unity 即时刷新,适配连续产线节拍
- 质量追溯:检测结果与 MES/ERPNext 打通,SN 全流程可追溯
SEO关键词
Unity 3D 工业应用、AI视觉检测、MES系统、数字孪生、3D缺陷显示、工业质量检测、YOLO 缺陷检测、Unity 数字孪生、座椅检测系统、3D智能质量检测工作站
