ZeroOne AI
← 返回文章列表

Unity 3D 在工业 AI 视觉检测与 MES 系统中的应用架构

👁 1
分类:AI视觉

面向汽车座椅等复杂产品的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 主要负责:

而 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 到底怎么选择

如果目标就是你截图中的这种产品检测软件,可以这样判断:

项目UnityQt 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 检测平台

最终产品可以不是单纯的"3D 模拟器",而是一个完整的 AI + 3D + MES 智能质量检测平台,操作流程:

① 产品进入检测工位 → ② 工业相机自动采集 → ③ AI自动检测
→ ④ 输出检测项目 → ⑤ Unity加载产品3D模型 → ⑥ NG位置自动标红
→ ⑦ 操作员旋转/缩放模型 → ⑧ 点击缺陷项目 → ⑨ 3D模型自动定位
→ ⑩ 人工确认/修正 → ⑪ SAVE → ⑫ SUBMIT → ⑬ MES记录检测结果
→ ⑭ 产品SN完成质量追溯

这样做出来的系统,就已经从传统的"AI 检测软件"升级成了"3D 智能质量检测工作站"。

应用价值

SEO关键词

Unity 3D 工业应用、AI视觉检测、MES系统、数字孪生、3D缺陷显示、工业质量检测、YOLO 缺陷检测、Unity 数字孪生、座椅检测系统、3D智能质量检测工作站

评论(0