MetaCore/docs/designs/metacore-current-architecture.md

186 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MetaCore 当前架构与技术路线
更新时间2026-05-20
状态:当前主线说明
读者:产品、架构、引擎、编辑器、渲染、工具链、交付
## 一句话定位
MetaCore 是一个以 EnTT ECS 为底层架构、Filament 为现代渲染核心、ImGui 为编辑器界面、RmlUi 为运行时 UI 的轻量级 Unity / Unreal Engine 对标型 3D 引擎与编辑器,采用编辑期 JSON、发布期二进制 Cook 的敏捷迭代路线,面向工业仿真、数字孪生、实时可视化和跨平台运行时交付。
## 当前技术选型
| 能力域 | 当前选择 | 定位 |
| --- | --- | --- |
| 底层架构 | EnTT | ECS 数据层,承载实体、组件和场景状态 |
| 编辑器对象语义 | GameObject + Component | 面向编辑器和用户工作流的 ECS 封装 |
| 编辑器 UI | Dear ImGui Docking | 快速构建工具面板、Inspector、Hierarchy、Project、Console |
| 3D 操控 | ImGuizmo | 编辑器视口中的移动、旋转、缩放工具 |
| 渲染核心 | Google Filament | PBR、材质、灯光、glTF、跨图形 API 渲染后端 |
| 模型导入 | glTF / GLB / gltfio | 当前模型导入主线,后续扩展其他格式 |
| 运行时 UI | RmlUi | 项目正式 UI定位类似 Unity UGUI |
| 编辑期资产 | JSON / mcmeta / 可读项目文件 | 快速迭代、可 diff、可调试、可人工修复 |
| 发布期资产 | Cooked binary / package | 面向运行时性能、封装和交付稳定性 |
| RuntimeData | TCP / 文件回放 / 数据绑定 | 外部仿真、遥测、业务数据驱动场景组件 |
## 渲染路线
MetaCore 已经从 Panda3D 迁移到 Filament 主线。Panda3D 相关代码只应被视为历史兼容层或待清理实现,不再作为新增能力的扩展方向。
Filament 作为主渲染核心,承担:
- PBR 材质与光照。
- glTF / GLB 加载与资源解释。
- 编辑器视口离屏渲染。
- 运行时 Player 场景渲染。
- Vulkan、OpenGL、DirectX 12、WebGPU 等后端能力的长期承接。
优先级建议:
1. Vulkan首选高性能现代图形 API。
2. OpenGL兼容和过渡。
3. DirectX 12Windows 高性能运行时。
4. WebGPUB/S 架构、浏览器嵌入和 Web 交付。
## UI 路线
MetaCore 明确区分两套 UI
### 编辑器 UI
编辑器 UI 使用 Dear ImGui。它服务于工具工作流
- Hierarchy
- Scene
- Inspector
- Project
- Console
- RuntimeData 面板
- 导入、Cook、诊断等工具窗口
ImGui 不承担最终项目运行时 UI 的长期职责。
### 运行时 UI
运行时 UI 使用 RmlUi。它服务于项目交付
- 标题栏、侧边栏、设备信息面板。
- 状态文本、告警提示、按钮、图片和图标。
- 与场景对象、RuntimeData 和业务状态绑定。
- 后续在编辑器中提供可视化编辑,再由 RmlUi 在 Player 中渲染。
这条路线类似 Unity 中“编辑器工具 UI”和“UGUI 项目 UI”的分工。
## 资产与序列化路线
当前阶段采用双阶段资产策略:
### 编辑期
编辑器阶段优先使用 JSON 和可读元数据:
- `MetaCore.project.json`
- `.mcscene.json` 或可读场景文档
- `.mcmeta`
- JSON 化材质、UI、导入描述和资源记录
目标是:
- 快速迭代。
- 便于 diff 和代码评审。
- 便于调试和人工修复。
- 降低早期功能演进的成本。
### 发布期
打包阶段再生成二进制运行时资产:
- cooked scene
- cooked mesh / material / texture
- runtime config
- CookManifest
- 可交付 Player 包
目标是:
- 提高加载性能。
- 减少运行时解析成本。
- 封装交付内容。
- 支持 C/S 和未来 B/S 发布形态。
## 平台与交付目标
### 编辑器平台
编辑器优先面向:
- Windows
- Linux
- 统信 UOS
- 麒麟 OS
第一阶段可以 Windows 先行,但平台抽象必须为国产化桌面环境保留边界。
### 运行时交付
运行时面向两种架构:
- C/S第一阶段主要承诺适合桌面端工业仿真、数字孪生、大屏和本地部署。
- B/S后续产品化方向适合 WebGPU、浏览器嵌入、第三方业务系统集成。
## 行业对标
MetaCore 对标 Unity 和 Unreal Engine但不是第一阶段复制它们的全部功能广度。
对标 Unity
- GameObject / Component 工作流。
- Scene / Hierarchy / Inspector / Project。
- Prefab。
- UGUI 类运行时 UI。
- 资产导入与可视化编辑体验。
对标 Unreal Engine
- 高质量渲染目标。
- 材质和资源工程化。
- 大型项目交付、Cook、Package、运行时边界。
MetaCore 的差异化方向:
- 更轻量。
- 更容易国产化适配。
- 更适合工业仿真、数字孪生和业务系统嵌入。
- 更强调编辑期可读、运行期可交付的资产闭环。
## 开发方法
MetaCore 当前采用敏捷开发、快速迭代的方式:
- 先打通主链路,再逐步工程化。
- 先让编辑器可用,再逐步完善运行时性能。
- 先建立 JSON 可读资产闭环,再收敛 Cook 二进制发布链路。
- 先服务真实交付场景,再扩展通用引擎能力。
第一阶段的核心不是一次性做完整引擎,而是快速形成:
```text
创建项目
-> 导入模型
-> 编辑场景
-> 配置材质 / UI / 数据绑定
-> 保存 JSON 编辑期资产
-> Cook 运行时资产
-> Player 运行
-> 交付 C/S 应用
```
## 当前约束
- 新渲染能力默认走 Filament不再沿 Panda3D 扩展。
- 编辑器工具 UI 默认走 ImGui。
- 项目运行时 UI 默认走 RmlUi。
- 模型导入优先完善 glTF / GLB / gltfio 闭环。
- 资产格式优先保证编辑期 JSON 可读性,再进入发布期二进制优化。
- 测试应区分“编辑期 JSON 资产链路”和“发布期 Cook 二进制链路”,避免用二进制产物是否存在来阻塞早期编辑器迭代。